בדיוק קיבלתי משרת מפתח בפייסבוק. כך הקמתי את הראיונות שלי.

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

כך התכוננתי לראיונות אלו ומה למדתי בדרך.

המסע הרב-שנתי שלי לעבר עמק הסיליקון

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

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

עזבתי את תפקידי כמהנדס iOS מוביל בחברה מדהימה במלבורן וחזרתי לעיר מולדתי פרת 'כדי ללמוד. שם הייתי מתכונן לתהליך הראיונות שלפני בעמק הסיליקון. ידעתי שיהיה קשה ומפרך להפליא.

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

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

ראיון הוא מיומנות

במהלך ההכנה שלי תמיד ידעתי שראיון יהיה מאתגר. אבל למען האמת לא היה לי מושג כמה קשה יהיה עד שאהיה עד הברך בראיון הראשון שלי.

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

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

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

סוגי הראיונות השונים שנתקלתי בהם

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

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

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

אעבור בקצרה על כל אחד מהנושאים שנתקלתי בהם.

ראיונות אלגוריתם

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

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

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

ראיונות לעיצוב אדריכלות

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

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

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

ראיונות התנהגותיים

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

השאלות הן בדרך כלל בנוסח:

איך מתמודדים עם כישלון?

מהי החולשה הגדולה ביותר שלך?

· איך לפתור קונפליקטים?

מה היית עושה אחרת?

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

Weakness "החולשה שלי היא שאני יותר מדי ממוקד"

"הכל באשמתו של ג'רי, הוא היה חולה ברוב הפרויקט"

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

תרבות התאמה

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

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

זוג תכנות

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

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

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

איתור ותיקון באגים

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

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

בדיקת ידע בתחום

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

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

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

הבנת מערכות הפעלה

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

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

איך כדאי להתכונן

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

מינימום ידע

אם מישהו היה שואל אותי במה הרגשתי שיהיו אזורים להתמקד בהם, הייתי מציע את הדברים הבאים:

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

מתי להתחיל

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

אל תדאג

יש לך את זה.

אֶמְצָעִי

ראיונות מדומים

  • interviewing.io (בטא), חינם
  • Pramp, חינם
  • CareerCup, בתשלום

אלגוריתמים

  • פיצוח ראיון הקוד, ספר
  • בתים אחר בתים, אתר ויוטיוב
  • CS50, יוטיוב
  • עוגת ראיונות, אתר
  • HackerRank, אתר
  • LeetCode, אתר

מערכות הפעלה

  • מושגי מערכת הפעלה, ספר

עיצוב אדריכלות

  • מבוא לאדריכלות ומערכות, YouTube

התנהגותי

  • מבוא לראיונות התנהגותיים, YouTube

אם אתה אוהב את מה שקראת היום, אתה יכול לבדוק את המאמרים האחרים שלי בנושא פיתוח iOS ו- Swift, או אם אתה רוצה ליצור קשר, שלח לי ציוץ או עקוב אחרי בטוויטר @andyyhope , זה באמת עושה לי את היום.

אנדי הופ (@ AndyyHope) | טוויטר

מהנדס iOS. בלוגר / דובר סוויפט ו- iOS twitter.com