תקציר מנהלים ג' - הכנה טכנית לראיונות - נמרוד אבירם - הבלוג של נמרוד אבירם - TheMarker
תיק מניות

רשימת קריאה

רשימת הקריאה מאפשרת לך לשמור כתבות ולקרוא אותן במועד מאוחר יותר באתר,במובייל או באפליקציה.

לחיצה על כפתור "שמור", בתחילת הכתבה תוסיף את הכתבה לרשימת הקריאה שלך.
לחיצה על "הסר" תסיר את הכתבה מרשימת הקריאה.

לרשימת הקריאה המלאה לחצו כאן

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

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

תגובות

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

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

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

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

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

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

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

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

טכנולוגיה, כדור הארץ, מספרים
Dreamstime

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

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

מבני נתונים: בחרי פעולה אחת מבין "הכנסה/חיפוש/מחיקה" ומבנה נתונים אחד מבין "עץ בינארי/טבלת האש/ערימה", וממשי את הפעולה הזו על המבנה הזה :-)

מיונים: בעיקר QuickSort ו-MergeSort. היי מוכנה גם להסביר למה הם רצים ב-O(nlogn).

אלגוריתמים על גרפים: בעיקר BFS, DFS, Dijkstra.

תכנות דינמי: אפשר לתרגל בעזרת חומר מהתואר, או לחלופין פה:
http://www3.cs.stonybrook.edu/~algorith/video-lectures/

חיפוש בינארי: בעיקר לוודא שאת יודעת לתכנת חיפוש בינארי :-)

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

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

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

https://www.codeeval.com/

https://leetcode.com/

https://www.interviewbit.com/

https://www.interviewcake.com/

https://adventofcode.com/

https://www.hiredintech.com/

https://careercup.com/page

https://arena.topcoder.com (easy and medium questions)

http://www.geeksforgeeks.org/

https://www.youtube.com/user/mycodeschool

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

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

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

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

מבחן מנת משכל שנערך למשתתפים במחקר
Danielle Posthuma

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

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

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

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

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

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

"A is a B” צריך להיות נכון "בעולם האמיתי" (למעשה, אם ורק אם). למשל אם יש לנו קלאס של ציפור וקלאס של יונה, הקלאס של יונה ירש מהקלאס של ציפור, שכן “A pigeon is a bird”. (כמובן, תכנות מונחה עצמים זה עניין הרבה יותר מורכב. אבל לכל הפחות, חשוב לוודא שאתן לא נופלות על זה)

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

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

תקשורת:

מהו מודל השכבות? איזה שכבות מרכיבות אותו, ומה תפקידה של כל שכבה?

תארי איך עובד אחד הפרוטוקולים מבין TCP, HTTP, DNS (לינקים לוויקיפדיה). מה ההבדל בין TCP ל-UDP? (שאלה ממש פופולרית).

מה זה Subnet? מה ההבדל בין MAC address לכתובת IP? מה ההבדל בין סוויץ' וראוטר?

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

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

מה זה זכרון וירטואלי? תארי בכלליות את הטיפול הטיפוסי ב-page fault.

זהו בינתיים. נתראה בפוסט הבא :-)



תגובות

דלג על התגובות

בשליחת תגובה זו הנני מצהיר שאני מסכים/מסכימה עם תנאי השימוש של אתר TheMarker

סדר את התגובות

כתבות שאולי פיספסתם