איך לזהות שועלי JavaScript

פוסט זה כולל טיפ קצר בנושא פיתוח Front End. אם אתם רוצים ללמוד יותר לעומק על פיתוח Front End מהבסיס ועד הנושאים המתקדמים תשמחו לשמוע שבניתי קורס וידאו מקיף בנושא זה הכולל מעל 50 שיעורי וידאו והמון תרגול מעשי.
למידע נוסף והצטרפות לקורס בקרו בדף קורס Front End באתר.
 

הפופולריות והפשטות של שפת JavaScript יצרו מצב מטריד למגייסים: המון משאבי למידה חינמיים ברשת מאפשרים ללמוד JavaScript בן לילה, וכולם צריכים לגייס מתכנתי JavaScript. התוצאה היא הרבה יותר מדי קורות חיים עם המילה JavaScript, שלא מעידה על מיומנות אמיתית בשפה.

האשמה כמובן לא בלומדים. כשלומדים לבד קל להפריז ביכולות או בהבנה שלך. אז בשביל המגייסים והמתגייסים לתפקידי פיתוח Web, אני רוצה להציע אוסף שאלות שכל שועל JavaScript צריך לדעת לענות עליהן. אם אתם לא בטוחים לגבי חלק מהתשובות, או אם המועמד שמולכם מגמגם כשאתם מעלים אחת מהן אולי הגיע הזמן לחזור לספרי הלימוד.

1. השפה עצמה

  1. מה ההבדל בין אופרטור == ל ===? תן דוגמא לערכים שיתנו תוצאה שונה.
  2. מה עושות הפקודות call, bind ו apply? מתי תשתמש בכל אחת?
  3. מה עושה הפקודה let? איזה בעיות היא פותרת? כיצד תפתור את אותן הבעיות ב ES5?
  4. באיזה מצבים יווצרו זליגות זכרון ב JavaScript? איך ES6 עוזרת להימנע ממצבים אלו?
  5. מהו Prototype ומתי נשתמש באחד?
  6. כתוב פונקצית בנאי שתעבוד גם אם נקראה באמצעות new וגם אם לא.
  7. איך תיישם Prototypical Inheritance באמצעות Object.create? ללא Object.create?
  8. מה הבעיה עם הפונקציה isNaN? תן דוגמא לערך שאינו NaN עבורו הפונקציה תחזיר true.
  9. מהו strict mode ומתי נשתמש בו?

2. ארכיטקטורה

  1. איך תחלק תוכנית למודולים ב ES5? ב ES6?
  2. באיזה ספריות אתה משתמש לכתיבת בדיקות יחידה? למה בחרת דוקא בהן?
  3. תאר מבנה של פרויקט הכולל מספר מודולים ובדיקות יחידה לכל מודול.
  4. כיצד ניתן לממש משתנים פרטיים ב JavaScript? האם זה כדאי?
  5. מהו פקד? הצג דוגמא לקוד של פקד בספריה לבחירתך (jQuery Plugin, Angular Directive, React).
  6. מהו Single Page Application? מה ההבדיל בין פיתוח SPA לפיתוח אתר רגיל?

3. ה DOM

  1. מהו DocumentFragment ומתי תשתמש בו?
  2. מה ההבדל בין textContent ל innerHTML?
  3. מה ההבדל בין input.value ל input.getAttribute("value") ?
  4. מהו אירוע Reflow? תן דוגמא לפעולות שיוצרות אותו.
  5. מה עושה document.write ולמה לא תרצה להשתמש בה?

4. כלי עבודה

  1. באיזה כלי build אתה משתמש? למה בחרת בהם?
  2. איך תבדוק מה המשמעות של פקודה שאתה לא מכיר בשפה?
  3. איזה ספריות צד-שלישי תבחר לקחת אתך לאי בודד?

5. סיכום

יותר מדי חברות מחפשות מתכנתי ווב עם נסיון בפריימוורק כזה או אחר. אני מבין מאיפה זה בא: כשמגייסים מתכנת שלא יודע JavaScript מספיק טוב ונותנים לו כלי עבודה מאוד עוצמתי כמו אנגולר יכולות להיווצר קטסטרופות.

הבעיה עם דרישות כאלה זה שפריימוורקים מתחלפים ומתפתחים. הרבה יותר מעניין לבדוק אם המתכנת שמולכם יודע על מה הוא מדבר מאשר אם עבד בספריה כזו או אחרת. מתכנתים טובים ילמדו מהר כל ספריה ויעשו בה שימוש אפקטיבי, כי ידעו לשאול את השאלות הנכונות.

בצד המתכנתים קל לנו להפריז בידע שלנו, במיוחד לאור השפע של משאבי לימוד ״קלים״ ברשת. אני מקוה שדף השאלות הזה יעזור לכם להעריך טוב יותר את מיקומכם ולהשתפר כדי להפוך לשועלי JavaScript אמיתיים.