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

מדוע מערכות מידע חשובות בראיונות

(הופנה מהדף ראיינים מעריכים מועמדים על יכולת פתרון בעיות, איכות קוד וחשיבה מערכתית (מבנים נתונים) יושבים בצומת של כל השלושה.בחירת מבנה הנתונים הנכון יכולה להפוך ל-FLT:0O(n2)reaFLT:1 ו- 1 brute Force into a FLT:2O(n di n)n)n) LT 3 או FLT:4O(n) LT לעומת מוטציות, לעומת פשטות, לעומת פשטות גבוהה יותר, לעומת פשטות, לעומת פשטות, לעומת פשטות גבוהה יותר, .

[החברות המודרניות מעצבות את הלולאות הראיונות שלהן כדי לחקות אתגרים הנדסיים אמיתיים, כאשר אתה בונה תכונה שזקוקה לבדיקות מהירות או תת-מערכת שצריכה לעבד זרם של אירועים, מבני הנתונים שאתה בוחר להשפיע ישירות על יכולת וביצועים.ראיינים רוצים לראות שאתה לא רק ממתנן הגדרות אלא מבין FLT:0 בעת FLT:1 ו-FLT2: מדוע LT3 הוא מבנה מתאים, אפילו על פני מערכת יחסים, הוא גם על פני השטח.

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

מבנה נתונים משותף אתה צריך לדעת

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

אריות

מערך הוא חסם רב-משמעי של זיכרון המאחסן אלמנטים מאותו סוג.כל אלמנט הוא גישה לאינדקס שלו בזמן קבוע FLT:0O(1)FLT:1 [הכנסות ומושגים בעמדות שרירותיות דורשות אלמנטים משמרים, הניבה:2O(n)3 Arrays הם העבודה של ראיונות וריאציות coding בעמדות שרירותיות דורשות תכונות דומות, אך הן תכונות של Python, אך הן דומות (C.

(FLT:0Key Interview Patterns: ⁇ FLT:1 , 2-pointer טכניקה, חלון מזחלות, סכומים מראש, שינויים במקום.בעיות מעשיות כוללות משיכת מערך, מציאת הסכום התת-קרקעי המקסימלי (אלגוריתם של קאדין), ומיזוג של ערכים מכוונים.

רשימות קשורות

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

(FLT:0)Variants:FLT:1 מקושר, כפול מקושר, מעגלי.בעיות נפוצות כוללים ניתוק רשימה, זיהוי מחזורים (ה Tortoise של Floyd ו Hare), ומיזוג שתי רשימות ממותנות.

⁇ s Stacks

ערימה הבאה צו אחרון-ב-ראשון-Out (LIFO) נוסף (pushed) ומחקו (פופולרי) מהטופים. Stacks הם היסוד לביטויים, ליישם מנגנונים לא-דו, ושיחות ניהול (ערמת דיבור).

(ב) ,0) דפוסי השקפה: (FLT:1) איזון בין הורות, הערכת ביטויים של תיקון, יישום ערימה של דקות, ופתרון בעיות ערמות מונוטוניות (הרכיב הגדול ביותר, המלבן הגדול ביותר ברשימת ההסטוגרמה של Python, Java's FLT:0, ו- C++'sF1LT כל לספק פונקציונליות.

המונחים:

תור עוקב אחר סדר ראשון-ב-ב-Out (FIFO) נוסף ל-Back and מוסר מן החזית. Queues משמשים בחיפוש ראשון לחם (BFS), תזמון משימה, ו-buffering.

(FLT:0Key וריאציות:FLT:1 deque (המכונה "דדק"), תור עדיפות (heap), תור עגול, בעיות כמו מסלול מסדרה רמה של עץ, יישום חלון מלוטש מקסימום, ועיצוב דוכן נגד פגע בשפע להסתמך מאוד על תור סמנטיטיס.

שולחן האש

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

(ב) במקרים של שימוש ב- 0 (ב-Ul): 2-sum, גילוי לשכפלות, בניית רשימת דבקות עבור גרפים, התיעוב לתכנות דינמיות.תיזהרו מהגרוע ביותר:2O(n)reaLT 3 התנגשויות בקלטות רציונאליות; שפות כמו Python, Java, ו- C++ משתמשים חזק יש להקלה על זה.

עצים

עץ הוא מבנה נתונים היררכי המורכב מנקודות יחסים עם הורים-ילד.הנפוצים ביותר בראיונות הוא העץ בינארי, במיוחד עצי חיפוש בינאריים (BSTs) שבו ילדים שמאליים קטנים יותר וילדיהם ימין גדולים יותר.העצים הדומים כמו AVL ועצי Red-Black-ערובה FLT:0O(log n)F1LT פעולות אך לעתים רחוקות הם מבקשים להיות משוררים מעץ / פריים (prire) הם הוראות מיוחדות (primining Tree for a Specials)

(FLT:0Key Patterns:BuildFLT:1 ; איור, הזמנה, הזמנה, הזמנה, סיור מול ההצתה, האב הקדמון הנמוך ביותר, אימות של BST, סידורי / התחדשות, ובניית עצים מטראנסים. Trie (עץ תיקון) הוא עוד וריאנט עץ פופולרי עבור מחרוזת ותכונות שלמות אוטומטי.

Garphs

גרפים מורכבים מאמתים (נודים) ומחודרים (קישורים) הם יכולים להיות מכוונים או לא עקפים, משקל או לא מעובדים. Graphs משמשים לדגמן רשתות, מערכות יחסים חברתיות, מפות ומרחבי מדינה.בעיות Graph מופיעים לעתים קרובות בסיבובים מאוחרים של ראיונות כי הם דורשים הן מבנה נתונים והן מיומנויות אלגוריתמיות (DF, BFS, DS, Dijk, Dstraological סוג).

(FLT:0) ייצוגים: איורים: 1FLT:1 adjacency matrix, adjacency list (רוב נפוץ) מושגים מרכזיים: זיהוי מחזור, רכיבים מחוברים, שבילים קצרים, מינימום המשתרע על פני עץ.תרגול יישום הן רציפות וטרנסטיבי, ולהיות נוח להמיר בעיה גרף לתוך הייצוג המתאים.

כיצד לבחור את מבנה הנתונים הנכון

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

  1. (ב) האם אתה מסתכל על פריטים על ידי מפתח?שולחן האש, אתה צריך לשמור על הסדר תחת הנחות תכופות ומחיקה?
  2. (ב) [ה]] ב[[המאה ה-20]], [[המאה ה-20]], [[המאה ה-20]], [[1924]], [[1924]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]
  3. (FLT:0) תחשוב על מערכות יחסים.ראה (FLT:1), אם הנתונים שלך באופן טבעי יוצרים היררכיה (למשל, מערכת קבצים, עץ סינטקס מופשט), השתמש בעץ.
  4. (FLT:0) לחפש בחלדות.FLT:1 לדוגמה, בעיות הדורשות "קטן גדול" או "מינימום" לעתים קרובות מצביעות על בעיות הכרוכות בסדקים או מבנים מזוינים נקודה לערימה.

§ (הופנה מהדף ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

אסטרטגיות עבור Mastering Data Structures

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

נבנה מ-Stetch

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

תרגול בפלטפורמות בנויות

(ב) , (ב) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

להתמקד במתח הזמן והמרחב

כל פתרון שאתה כותב צריך לנתח עבור גדול או ראיונות לשאול: "מה זה זמן מורכבות? יכול לשפר את זה?", להיות שוטה בניתוח מורכבות מראה בגרות הנדסית, מזכר המורכבות של כל ניתוח מבנה נתונים (קרי: אינדקס: 0O(1)FLT: 1, חיפוש FLT:2O(n) LT3; יש טבלה ממוצעת: 4Fmor; LT5; LT) LT5; LT) בממוצע עבור ⁇

בעיות אוויריות - הגשמה עם Active Recall

לאחר פתרון בעיה, לסכם את הטכניקה במילים שלך. לכתוב את התובנה הליבה - מדוע מבנה הנתונים היה הבחירה הנכונה.לאורך זמן, תוכל לבנות מדד נפשי של דפוסים: "Trie for prefixing", "Heap for k-th אלמנט", "DFS for Related רכיבים" דפוס זה מה שמאפשר לך להתמודד עם בעיות לא מוכרות.

בעיות ראיון נפוצות וגישות

הנה בעיות ייצוגיות עבור כל מבנה נתונים, יחד עם גישה קצרה. השתמש אלה כ- Checklist כדי להעריך את המוכנות שלך.

  • (ב) ויקרא: "וַיָּבְּהָעָה אֱלֹהִים" (שם כ"ד)
  • (ב) ,0) רשימת קישורים: הפוך רשימה מקושרת 1 (קישורים: 1) השתמש בשלושה נקודות (prev, Curr, Next) בעקביות או תיקון.
  • (ב) ⁇ :0) ,(הורה: אימות הורות (Horihesesesph) 1 (ד) - פושט פתיחה, פופ כאשר סוגרים משחקים.
  • (ב) ,0)Que: Level Order Traversalvealph 1 (בקיצור: 0) - השתמש בתור לאחסון צמתים בכל עומק.
  • (ב) ,0) ,(השולחן: מכיל Duplicateph1) - בנו סט ובדוק חברות בעת המעבר.
  • (ב) ⁇ :0) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) [26]: מספר האיים FLT1 (ב) DFS או BFS כדי לסמן תאים קרקעיים.
  • (ב) ויקרא י"א: ויקרא י"ד: "וַיֹּא נָא עַמֶר עַל הָאָרֶץ" (במדבר כ"ד)
  • (ב) ויקרא י"א: "ה' אלקים" (שם ט')

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

טיפים להצלחה ראיונות

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

תתקשרו לתהליך המחשבה שלכם

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

המונחים: hand

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

תגית: Common Pitfalls

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

הבנת זמן ומרחב מורכבות עמוק

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

המונחים: real Conditions

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

מחשבות אחרונות

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

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