קיבלת רשימה מקושרת בגודל N כלומר גדול ומשתנה וצריך להחזיר את האיבר לאמצע הרשימה בזמן הטוב כל שיפור בזמן נחשב ובשימוש במינימום זיכרון
תשובות
הוסף תשובה
|
לצפיה בתשובות
נובמבר 2022
ריצה עם שני מצביעים,התקדמות כל עוד המצביע הראשון מגיע לNull הראשון מתקדם בכל איטרציה בקפיצה של שניים והשני בקפיצה של אחד.
ברגע שיוצאים מהלולאה מחזירים את השני.
HR יוצרים קשר ומסבירים על המשרה בכללי. לאחר מכן דיבר איתי ראש צוות להבין אם יש התאמה בסיסית ואם יש כיוון לריאיון. הוסבר לי בצורה ברורה שיהיו 3 מפגשים כאשר במפגש הראשון והשני יהיו 2 ריאיונות של שעה עם מראיין אחר ובמפגש האחרון ריאיון אחד.
המראיינים שאלו כמה שאלות על הקו"ח אך די מהר עברו לחלק הטכני של השאלות.
שאלות מתוך הראיון
שאלה1: יש רגיסטר של 32 ביט ורוצים לעדכן 3 ביטים במיקום מסויים ברגיסטר (למשל ביט 16 עד 18) ונתון גם הערך של ה 3 ביטים שרוצים לשנות. כתוב תוכנית שמבצעת את זה כאשר נתון הכתובת של הרגיסטר בזכרון והתוכן שרוצים לשנות.
שאלה2: יש מחרוזת של נוסחה מתמטית עם 3 סוגים של סוגריים - { ) ] ורוצים לכתוב תוכנית שבודקת חוקיות של המחרוזת מבחינת תקינות סוגריים.
שאלה3: לכתוב תוכנית שבודקת אם מספר או מחרוזת היא פולינדרום עבור מבנה נתונים של מערך. לאחר מכן רוצים לבדוק אותו הדבר אבל מבנה הנתונים הוא רשימת מקושרת.
תשובות
הוסף תשובה
|
לצפיה בתשובות
ספטמבר 2022
שאלה1: מקבלים את התוכן של הרגיסטר עם מצביע. לאחר עושים AND של התוכן עם ה 3 ביטים במשתנה כאשר הוא מוזזים לביט שרוצים עם >>. אם המשתנה הוא בדיוק 3 ביט אז אפשר לעשות ישר AND אבל אם זה 8 ביטים למשל אז צריך לבנות MASK כדי לא לפגוע בשאר הביטים של הרגיסטר.
שאלה2: להשתמש במחסנית FILO. יש מלא פתרונות טובים באינטרנט.
שאלה3: אענה רק השאלה עם הרשימה מקושרת - צריך להפוך את הצד הימני של הרשימה ואז אפשר להשוות את איברי הקיצון בשני הצדדים כל פעם עם 2 מצביעים. שאלו מה החסרון והוא שמשנים את מבנה הנתונים אז אם יש THREAD אחר שרוצה להשתמש ברשימה הוא לא יכול. צריך לדאוג להחזיר את הרשימה בסוף.
נתון רכיב A שביכולתו למיין שני מספרים.
א) השתמש ברכיב A על מנת למיין 4 מספרים (רכיב זה יקרא רכיב B)
ב) השתמש ברכיבי A ו -B על מנת למיין 6 מספרים
ג) מצא איך לייעל את סעיף ב' ולחסוך ברכיבים