תקציר מנהלים ג' – הכנה טכנית לראיונות

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

הכנה טכנית לראיונות

שאלות בראיון טכני עשויות לכלול אחד או יותר מהאלמנטים הבאים:

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

תכנות עם דף ועט

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

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

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

שאלות עם בעיה מוכרת

להלן כמה מקורות לשאלות עם בעיה מוכרת מהתואר:

  • מבני נתונים: בחרי פעולה אחת מבין "הכנסה/חיפוש/מחיקה" ומבנה נתונים אחד מבין "עץ בינארי/טבלת האש/ערימה", וממשי את הפעולה הזו על המבנה הזה 🙂
  • מיונים: בעיקר QuickSort ו-MergeSort. היי מוכנה גם להסביר למה הם רצים ב-O(n logn)
  • אלגוריתמים על גרפים: בעיקר BFS, DFS, Dijkstra.
  • תכנות דינמי: אפשר לתרגל בעזרת חומר מהתואר, או לחלופין פה.
  • חיפוש בינארי: בעיקר לוודא שאת יודעת לתכנת חיפוש בינארי 🙂

שאלות של מציאת אלגוריתם

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

להלן כמה מקורות לשאלות מהסוג הזה:

תקשורת עם המראיינת

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

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

מומלץ להתכונן גם בעזרת ראיונות דמה, עם מתכנתות מנוסות, או עם חברות מהתואר.

בדיקת ידע בשפה

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

קריאת קוד נתון, ומציאת באגים

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

תכנות מונחה עצמים

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

"A is a B”

צריך להיות נכון "בעולם האמיתי" (למעשה, אם ורק אם). למשל אם יש לנו קלאס של ציפור וקלאס של יונה, הקלאס של יונה ירש מהקלאס של ציפור, שכן

“A pigeon is a bird”.

(כמובן, תכנות מונחה עצמים זה עניין הרבה יותר מורכב. אבל לכל הפחות, חשוב לוודא שאתם לא נופלים על זה.)

הפגנת ידע במערכות הפעלה ורשתות

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

תקשורת:

מערכות הפעלה:

  • מה ההבדל בין thread ל-process? (גם שאלה פופולרית). איך ניתן להעביר מידע ולסנכרן בין threads? ובין processes? מה זה deadlock, ואיך נמנעים ממנו?
  • מה זה זכרון וירטואלי? תארי בכלליות את הטיפול הטיפוסי ב-page fault.

 

זהו בינתיים. נתראה בפוסט הבא 🙂

הפוסט פורסם לראשונה באתר של הבלוג ב-The Marker.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *