Linked Lists - Reversal, Cycle Detection
ראיון ב-Microsoft, 2021. שאלה: "Reverse a linked list." מועמד ישב 15 דקות, בלבל next ו-prev, ניסה לבנות פתרון חדש שלוש פעמים. המראיין נתן שני Hints. בסוף, הזמן אזל. הבעיה לא הייתה שהוא לא הבין reversed list - הבעיה הייתה שמעולם לא ייחד 30 דקות לתרגל את הקוד עצמו עד שהאצבעות ידעו לכתוב אותו אוטומטית.
Linked Lists הן אחת הקטגוריות הנפוצות ביותר בראיונות Coding - מופיעות ב-Top 30 שאלות בכמה גרסאות. הסיבה: הן בודקות Pointer Manipulation, Invariant Thinking, ו-Edge Case Awareness ביחד, ב-Code שנראה פשוט אבל קל לשבור.
Linked Lists הן Data Structure שתלמדו אותה פעם - אבל הקוד הספציפי דורש תרגול שריר. ה-3-Pointer Pattern של Reverse, ה-Dummy Node Pattern, ו-Fast & Slow - כל אחד מהם דורש שתכתבו אותו ידנית לפחות 5-6 פעמים עד שיש לכם "muscle memory". בראיון, אין זמן לחשוב על מה בא ראשון - הכתיבה צריכה להיות אוטומטית.
Linked Lists הן Data Structure שמציגות תכונה ייחודית: הבעיה קלה להבין אבל הקוד קל לשבור. Reverse List מסביר עצמו ב-3 שניות. כתיבת הקוד הנכון בלחץ, על לוח, בלי IDE - זה מה שהראיון בודק. לכן, אם יש Data Structure אחד ששווה לתרגל "עד כלות" - זה Reverse List. עשרים דקות ביום, שבוע שלם, וה-Pointer Manipulation הופך לאוטומטי.
Linked Lists הן Data Structure שמופיעה בכל ראיון, ויש להן תכונה ייחודית: הבעיות עצמן לרוב פשוטות - אבל לכתוב את הקוד בלי לבלבל Pointers דורש תרגול ספציפי.