3 ראיונות מקצועיים.
ראשון - קוד
שני - feature design
שלישי - system design
שאלות מתוך הראיון
קוד - מימוש notify למשתמשים שהוזכרו בפוסטים.
ראיון feature - שינוי מיקום משימות ב- board.
system design - מימוש workflows אוטומטיים
תשובות
הוסף תשובה
|
לצפיה בתשובות
ספטמבר 2023
קוד - ישנו אובייקט users, עם מזהה של משתמש כמפתח וכמה פרמטרים נוספים ב-value שאחד מהם הוא רשימת הקבוצות שהוא משוייך אליהם.
מקבלים רשימת קבוצות ומשתמשים וצריך לכתוב קוד יעיל שמודיע להם (הדפסה למסך) שהוזכרו בהודעה.
שימו לב להשתמש ב-set כדיי לא להודיע פעמיים. חישוב סיבוכיות כאשר משתמשים U וקבוצות G - לשים לב שיש לולאה שעוברת על כל המוזכרים, מחפשת בכל המשתמשים אם הם קיימים בקבוצה ומכניסה ל-set. כל אחת מהפעולות משפיעה על הסיבוכיות.
לאחר מכן לממש בצורה יעילה יותר - לייצר אובייקט של קבוצות כמפתח מאותו אובייקט של משתמשים בתחילת הריצה. לחשב סיבוכיות יצירת אובייקט חדש + התראה למשתמשים באמצעותו.
feature -
לממש כך שכל הזזה נותנת ערך דצימלי בין המספרים של המשימות הקיימות. ישאלו איך לממש מקרה קצה כאשר יגמר המקום (נגיד אם כל פעם נחלק ל-2 בסוף נקבל מספר דומה) - אפשר להריץ job שיסדר את הלוח. או ב-real time לסדר רק את המספרים הבעייתים.
ישאלו מה לשלוח מצד ה-client ואיפה לממש את הלוגיקה של החישוב - בצד השרת עם distributed lock, כדיי שלא נכניס את אותו מספר פעמיים ממשתמשים שונים שעושים שינויים.
system design -
לייצר service חדש ובגדול להשתמש בתורים בין כל הרכיבים, להסביר tradeoff מדוע להשתמש בתור בניגוד ל-rest או משהו אחר. ואיך לעדכן בסוף את ה- database שלהם - למשל ב-batch כל זמן מסויים או treshold של data גם ב-service נפרד.
מרץ 2024
מה החישוב סיבוכיות האופטימלי שהם מצפים לקבל בראיון הראשון (שאלת הnotify)?
מאי 2024
מה הכוונה בשאלה של הfeature? מצפים לתשובה באוויר או שצריך לממש אותה עם קוד?
נובמבר 2024
לא צריך לממש עם קוד, אולי חלק קטן (לדוגמא backend validation) , אבל בגדול דומה לsystem design , להציג apis, לוגיקה של החישוב, איך תטפל בreal time (לדוגמא websockets) , התמודדות עם מקרי קצה וכו
נחמדים מאוד, כל הזמן מוודאים שאתה מבין מה הם רוצים ואתה מרגיש בנוח
שאלות מתוך הראיון
יש לך רשימה של משתמשים ורשימה של קבוצות שכל אחת מכילה משתמשים שונים.
אתה מקבל הודעה בה מתוייגים (כמו תיוג בווצאפ) משתמשים ו/או קבוצות - וצריך לכתוב קוד שבעצם עובר על כל המשתמשים והקבוצות המתוייגות ומיידע את המשתמשים שתייגו אותם. כמובן בלי כפילות: אם משתמש תויג כחלק מקבוצה אין צורך להודיע לו אם הוא תוייג גם כמשתמש בפני עצמו.