ראיון לתפקיד junior data engineer ראיון ראשון היה טכני בלייב כאשר נבחנתי על ידי מישהו מהחברה בחול באנגלית(סשן קצר של כתיבת קוד)
לאחר מכן אחרי שבועיים 2 ראיונות שהראשון כלל שאלות כמו ספר לי על פרויקט שעשית,על פעם שעזרת לחבר,איך אתה לומד משהו חדש וכו
ואז ראיון טכני בלייב בזום עם ראש הצוות
מלבד שאלות כלליות על טכנוגלוגיות, נשאלה שאלה טכנית אחת:
לרשותך מעבד אחד ומספר תהליכים. כמו כן שלוש פונקציות:
Sleep: כל תהליך שנתקל בפונקציה נכנס למצב המתנה.
Awake: פונקציה שמקבלת ID של תהליך ומוציאה אותו ממצב המתנה.
Timer: פונקציה שמקבלת ערך זמן מסויים. ברגע שקיבלה את הזמן מתחיל לרוץ ברקע שעון אשר מתחיל בערך הזמן ויורד למטה. כשמגיע לאפס מתקבלת פסיקה, וכמובן גם קיים את וקטור הפסיקה, המקום בקוד אשר מופעל ברגע שנגמר הטיימר.
המטרה:
לייצר פונקציה חדשה, Delay, אשר מסוגלת לקבל ערך זמן מסויים, וכל תהליך אשר ייתקל בפונקציה ייכנס למצב המתנה לכמות הזמן אשר הוקצבה, ויתעורר מיד לאחר מכן.
תשובות
הוסף תשובה
|
לצפיה בתשובות
יוני 2025
לא הצלחתי לפתור את השאלה בזמן, אבל אני חושב שהבנתי את הכיוון, זה ההצעה שלי לפיתרון:
להתחיל רשימה מקושרת, אשר מייצגת את כל התהליכים שנמצאים במצב שינה. הסדר של הרשימה הוא כסדר התהליכים שמיועדים להתעורר. בנוסף למצביעים על האיבר הבא, כל איבר מחזיק ערך זמן, המייצג את הזמן אשר לאחר התעוררות האיבר האחרון, צריך להעיר את התהליך הבא ברשימה. כמובן עוד ערך עבור כל איבר הוא הID שלו.
בכל פסיקת טיימר שמתקבלת, בקטע הקוד של הפסיקה, נעיר את התהליך הראשון ברשימה, נוריד אותו מהרשימה, ונפעיל שוב את הטיימר לפי ערך הזמן של האיבר שהרגע הוצאנו.
כך לדוגמה, אם בזמן 10 תהליך אחד קיבל דיליי של 100 שניות, ו10 שניות אחרי זה תהליך אחר קיבל דיליי של 200 שניות, תהיה לנו רשימה מקושרת של תהליך 1 עם ערך זמן 110, ואחריו תהליך 2 ללא ערך זמן, כאשר זמן 20 (בו נכנס איבר 2 לרשימה) ערך השעון יהיה 90.
הסבר- לאחר 90 שניות, נגיע לקטע הפסיקה בו נעיר את תהליך אחד ונוציא אותו מהרשימה, ונשים את הטיימר שוב לעוד 110 שניות. נקבל שתהליך 1 התעורר בזמן 110 ותהליך 2 יתעורר בזמן 220, כפי שרצינו.
נתון מערך של ערכים, כאשר כל ערך מייצג את התרומה של שלב מסוים בתהליך כלשהו.
כדי לעבור כל שלב, יש לעבור שוב על כל השלבים הקודמים. לכן, כל שלב תורם לסך הכל בהתאם למיקומו ברצף – ככל שהוא מופיע מוקדם יותר, ההשפעה שלו מצטברת יותר פעמים.
המטרה: לבחור את סדר השלבים שימקסם את התרומה הכוללת
הכל התבצע במיילים. 2 מטלות לביצוע אונליין.
1- 2 שאלות ליטקוד בשפה לבחירה, אחת בינונית אחת קשה.
2- סימולציית עבודה. לפחות שעה וחצי לענות למיילים והודעות מאנשים (וירטואלים) עם בחירה, לא פשוט.