לדלג לתוכן

שאלות מערכת נפוצות בראיונות ג'וניור

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

"מה קורה כשמקלידים כתובת בדפדפן ולוחצים אנטר"

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

"מה ההבדל בין client ל-server"

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

"מתי הייתם בוחרים SQL ומתי NoSQL"

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

"עצבו לי בקצרה מערכת פשוטה" - בגרסה הבסיסית שלה

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

"למה REST API הוא כזה נפוץ"

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

למה זה שונה מראיון system design מתקדם

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

איך להתכונן

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

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

לסיכום

שאלות מערכת בראיונות ג'וניור לא בודקות ידע מומחה, הן בודקות תמונה בסיסית וברורה של איך רכיבים בתוכנה מתקשרים ביניהם. תתמקדו בהבנת היסודות - client ו-server, מסדי נתונים, ותקשורת דרך API - ותרגישו הרבה יותר בטוחים כשהשאלה הזאת תגיע.

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