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

הראיון בדרך כלל יכלול 3 חלקים:

  1. הצגה עצמית – בחלק הזה אתם צריכים להיות מוכנים לספר על עצמכם מאוד בקצרה (2-3 דקות) תוך כדי הדגשת החוזקות שלכם. יכול להיות שיבקשו מכם להרחיב על חלק מהדברים. אל תנסו לאלתר בראיון, אלא תגיעו מוכנים (ואם אף פעם לא יצא לכם לעשות את זה "על אמת", אז כדאי לכם להתנסות לתת את ה-speech מול חבר/מראה כמה פעמים (הרי בראיון אמיתי רמת הלחץ תהיה יותר גבוהה מהרגיל, אז אם תתחילו להתבלבל כשתתאמנו מול חבר, סיכוי גבוה שתתבלבלו גם בראיון).
  2. לספר על משהו שעשיתם:
    אם אתם מחפשים את העבודה הראשונה שלכם, יבקשו מכם לספר על איזשהו פרויקט שעשיתם. אז תדעו לספר עליו טוב. תתחילו מהצגת הפרויקט בכמה משפטים, ואז כנראה יבקשו מכם לספר קצת על ה-design שעשיתם, באיזה טכנולוגיות השתמשתם, למה בחרתם אותן, וכדומה. תדעו לענות טוב (תהיו מוכנים שיבקשו מכם לשרטט דיאגרמה שכוללת את הקומפוננטות המרכזיות, ומי מתקשר עם מי).
    אם עשיתם את הפרויקט עם עוד אנשים, אז יצפו מכם כן לדעת טוב את התמונה הגדולה, וכמובן לדעת מצוין את הפרטים בחלקים שאתם עשיתם, אבל לא יצפו מכם להכיר פרטים בחלקים שמישהו אחר עשה. לדוגמה, אם הפרויקט שלכם היה לפתח אפליקציה למובייל, אתה פיתחת את האפליקציה עצמה, ומישהו אחר פיתח את ה-backend, אז הציפייה היא שתדע מצוין את החלקים שלך, איך התקשורת בין האפליקציה ל-backend עובדת (באיזו ספריה השתמשת, מה ה-API ביניכם וכו'), ובגדול איך נכתב ה-backend (לא ברמת class-ים, אבל כן לדעת באיזה שפה הוא נכתב, באיזה database משתמשים שם, איפה הוא רץ וכדומה).
  3. שאלות טכניות, שיכולות להיות מהסוגים הבאים:
    • שאלה בה תצטרכו לפתור בעיה (בדרך כלל פשוטה/בינונית) ולכתוב קוד שעובד.
    • שאלת חשיבה (בינונית/קשה), שמספיק שתכתבו פסאודו-קוד, או אפילו תסבירו בנפנופי ידיים.
    • שאלת design, בה יתארו לכם איזושהי מערכת, ויבקשו מכם לחשוב בקול איך הייתם בונים אותה (אילו קומפוננטות צריכות להיות, מה יהיו ה-interface-ים ביניהן וכדומה).

שאלה בה תוך כדי השאלות האלה יכולים לשאול אתכם גם שאלות תיאורטיות (למשל, למה בחרת להשתמש כאן ברשימה ולא במערך ומה ההבדלים ביניהם, איך עובד garbage collection וכו').תצטרכו לפתור בעיה (בדרך כלל פשוטה/בינונית) ולכתוב קוד שעובד.

נושאים תיאורטיים שכדאי ללמוד ממש טוב לקראת ראיונות:

  1. מבני נתונים: איזה סוגים יש, על איזה צורך כל מבנה נתונים עונה, איזה פעולות אפשר לעשות על כל אחד ובאיזה סיבוכיות, ואיך כל פעולה מתבצעת מאחורי הקלעים (למשל, איך בנוי HashSet ככה שהכנסת איבר תהיה בסיבוכיות O(1).
  2. אלגוריתמים על גרפים (בעיקר BFS ו-DFS), כי יכולים לשאול אתכם שאלה שלכאורה בכלל לא קשורה לגרפים, אבל הפתרון שלה מאוד דומה לאחד משני אלה (דוגמה)
  3. תכנות דינאמי (דוגמה: בכמה דרכים שונות אפשר לתת 100 ש"ח בעזרת מטבעות של שקל, שנקל, 5 שקלים ו-10 שקלים?)
  4. תהיו ממש טובים בשפת תכנות כלשהי, ותדעו לענות איך הדברים עובדים מאחורי הקלעים.
    1. למשל למשרות ++c:
      • השימושים השונים של const
      • מה זה פונקציה וירטואלית, איך הקומפיילר מממש את זה, מתי destructor צריך להיות וירטואלי ולמה
      • מה זה overloading
      • מה זה פולימורפיזם 
      • איך עובדת ירושה מרובה
    2. למשרות front-end, javascript:
      • עבודה עם מערכים, כולל iterating
      • מה זה scope (וההבדל בין var ל-let)
      • The global object
      • Strict mode
      • Objects
      • Type system
      • Math & date
      • DOM
  5. design patterns בסיסיים (singleton, factory, actor)
  6. איזושהי תשתית unit-testing (במיוחד למשרות JAVA, ו-#C, וכדומה)
  7. איזושהי תשתית ל-Dependency injection
  8. למשרות back-end, תשתיות, ++c/c:
    • multi-threaded programming (כולל mutex ו-semaphore)
    • ההבדל בין stack ל-heap (מתי משתמשים בכל אחד, ואיך הזיכרון משתחרר)
    • מערכות הפעלה (כולל ההבדל בין process ל-thread)

המלצות שיעזרו לעבור טוב שאלות מסוג כתיבת קוד וחשיבה:

  1. לא מעט מראיינים מבקשים שתכתבו קוד על לוח / דף / notepad, כדי לראות כמה הכתיבה זורמת (וזה לא משנה אם זה לא 100% מתקמפל) – המטרה היא לראות את הדרך בה אתם חושבים וכותבים קוד – אז תתרגלו באתרים כמו leetcode.
    כשאתם פותרים שאלות, המטרה היא להגיע למצב בו הקוד שאתם כותבים עובד בפעם הראשונה. אם בהגשה אתם מקבלים הודעה שיש input שעבורו הקוד שלכם לא עבד, תבינו איך פספסתם את מקרה הקצה הזה, ובשאלות הבאות נסו לחשוב יותר טוב. זה באמת ממש חשוב. המטרה היא לא סתם לעשות כמה שיותר תרגילים, אלא להגיע למצב שאתם פותרים נכון על הפעם הראשונה (שגיאות קומפילציה זה בסדר – הכוונה שלי היא שהקוד צריך לעבוד בפעם הראשונה שהוא מתקמפל).
  2. יש ספר ששמעתי עליו המלצות מאוד חמות מלא מעט אנשים: Cracking the Coding Interview.
  3. אתרי תרגול לשאלות (רק את הראשון אני מכיר אישית, על האחרים רק שמעתי מאחרים):

מה המראיין יחפש חוץ מיכולות טכניות?

  1. תכבדו את מי שיראיין אתכם: תגיעו לראיון בזמן, תדליקו מצלמה (אם הראיון לא פרונטלי), שימו את הטלפון על שקט, דברו בצורה נעימה.
    זה אולי נשמע טריויאלי, אבל נתקלתי (ושמעתי מחברים) על מקרים הזוים, כמו: המועמד ממש איחר לראיון, המועמד צעק על המראיין, המועמד עשה את הראיון בבית קפה רועש, המועמדולא היה מוכן להדליק את המצלמה וכו'. חבל.
  2. תקשורת: תסבירו את עצמכם כמו שצריך, תהיו ברורים, תהיו עניניים, אל תחפרו (אם ביקשו מכם לספר על עצמכם בקצרה, אז לא צריך לספר 5 דקות על הטיול שלכם לתאילנד), אל תקטעו את המראיין, תקשיבו טוב לרמזים שאתם מקבלים תוך כדי השאלות הטכניות (נתקלתי בכמה מועמדים שנתתי להם רמזים, והם אמרו לי שאני טועה).

כמה טיפים לסיום:

  1. תראו הרצאת TED על איך לא להילחץ בראיון, ותזכרו לעשות את התרגיל שהיא ממליצה לפני כל ראיון: Your body language may shape who you are
  2. אם עכשיו אתם בתקופת מבחנים, תשקיעו בציונים – ממוצע גבוה מעלה את הסיכוי שיקראו לכם לראיון.
  3. תענו על שאלות ב-StackOverflow בנושאים שאתם יודעים טוב – זו דרך מעולה להעשיר את הידע שלכם, וגם לצבור נקודות (על כל שאלה שאתם עונים, אתם מקבלים נקודות) – שווה להזכיר את זה בקו"ח, זה ייתן לכם יתרון.

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

בעל ניסיון של שנים גם בתפקידים טכניים בכירים (בתחום ה-backend, גם ב-low level וגם ב-high level) וגם בתפקידי ניהול בכירים, עם ניסיון עשיר בגיוס לתפקידי פיתוח

הישארו מעודכנים

הצטרפו לעמוד הטלגרם שלנו!

*זוהי קבוצה שקטה שבה רק האדמינים שולחים הודעות

עזרנו לכם? שתפו את הכתבה עם חברים!

שיתוף ב email
שיתוף ב telegram
שיתוף ב whatsapp
שיתוף ב linkedin
שיתוף ב twitter
שיתוף ב facebook

יש לך מאמר שיעזור?