משהו מקולקל בשאלות מראיונות עבודה

22/01/2020

חיפשתי בשביל חבר בגוגל JavaScirpt Interview Questions השבוע וכמעט קיבלתי חום. כל העמוד הראשון מלא בשאלות שאני מוכן להאמין שנשאלות בראיונות עבודה, שעוזרות להבין מה המרואיין יודע היום, ולא עוזרות בכלל להבין או להעריך יכולת.

דוגמא ראשונה היא קישור בשם 37 Essential JavaScript Interview Questions and Answers. השאלה הראשונה שם היא מה הבעיה עם הבדיקה:

typeof bar === "object"

הם רוצים לבדוק שאתם יודעים שגם הסוג של null הוא object. זה היה הגיוני אם מישהו היה כותב בקוד שאילתה כזאת, אבל האמת שקשה לי מאוד לחשוב על סיטואציה בה הייתי כותב שורה כזאת. יותר מזה, ככל שמתכנתים היום עוברים להשתמש בשפות שהן Type Safe למשל TypeScript, שאלה כזו הופכת עוד פחות רלוונטית.

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

מספר 3 ברשימה מכיל רשימה של 50 שאלות מראיונות (אתר בשם אדוריקה). הם פחות בקטע של להראות קטעי קוד ובמקום שואלים שאלות כמו "מה ההבדל בין call ל apply". עכשיו צריך להגיד זאת שאלה מצוינת ולדעתי כל מתכנת JavaScript צריך להכיר את התשובה, ועדיין אם אני צריך להחליט עם איזה מתכנתים לעבוד קשה להאמין שהייתי משתמש בשאלה כזו בתור איזשהו פרמטר. אותו דבר לגבי "איך לרוקן מערך ב JavaScript" או מה עושה Object.create.

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

במקום לשאול מה עושה Object.create אולי עדיף לשאול - הפקודה Object.create יוצרת אוביקט חדש שה Prototype שלו מוגדר להיות אוביקט אחר. באיזה מצבים נראה לך שהיינו משתמשים בה? יש לך רעיון איך לממש אותה מאפס?

או במקום לשאול מה ההבדל בין call ל apply הייתי שואל "הפקודה apply מקבלת פונקציה, משתנה this ומערך של פרמטרים ומפעילה את הפונקציה עם המשתנה this ומערך הפרמטרים שהעברנו. באיזה מצבים נראה לך שמשתמשים בפקודה כזו? איך היית בונה מנגנון כזה לבד?"

ומה שיפה בשאלות כאלה שאין בעיה לתת למרואיין גישה חופשית למחשב ואינטרנט. ממילא התשובה מספיק מורכבת כך שאי אפשר לרמות.