חיפשו לראות הבנה כללית וידע במבני נתונים וסיבוכיות
שאלות מתוך הראיון
לממש alloc() ו- free()
תשובות
הוסף תשובה
|
לצפיה בתשובות
מאי 2021
מגדירים מבנה של מטהדאטא שמאפיין בלוק של זיכרון (להלן: הדר). בלוק יכול להיות מוקצה או משוחרר, ומכיל מצביע לבלוק הבא (שבתורו, יכול להיות מוקצה או משוחרר).
במימוש לדוגמא אפשר להקצות בשיטת first fit, ובמעבר לינארי על רשימת הבלוקים למצוא את הבלוק הראשון הפנוי שגדול מספיק.
malloc: במעבר על הרשימה המקושרת של ההדרים, מחפשים בלוק פנוי מספיק גדול ומסמנים אותו כ"תפוס" בהדר. ליוזר נחזיר מצביע לזיכרון עצמו שנמצא ברצף אחרי ההדר. אם מצאנו בלוק גדול יותר מהבלוק המבוקש אז נקרא לפונקציה split שיודעת לפצל בלוק גדול קיים לשני בלוקים קטנים (אחד עבור היוזר שביקש הקצאה, והשני עבור שאר הזיכרון הפנוי שנשאר כשארית).
free: נסמן את הבלוק כפנוי ונקרא לפונקציה merge שיודעת לאחד בלוקים פנויים עוקבים.
שיטה יותר טובה למימוש היא Best fit, ובשיטה זו נחפש את הבלוק הגדול מספיק הכי קטן. כמו כן, בכל מימוש שלא כולל relocation של בלוקים, עשויה להיות בעיה של External Fragmangtation כלומר, יוזר עשוי לבקש בלוק ויהיה מספיק זיכרון פנוי אבל לא ברצף ולכן ההקצאה תיכשל.
בקשה למבנה נתונים יעיל של מערך של מחרוזות בו ניתן ב o של 1 לעדכן את המחרוזות במערך , ובנוסף שיהיה אופציה כנל בזמן קבוע לעדכן את כל השמות במערך לערך מסויים
תשובות
הוסף תשובה
|
לצפיה בתשובות
מאי 2021
אולי באמצעות טבלת גיבוב (במקרה הממוצע- אם יש התפלגות אחידה)
You have 9 apples. All of them are Identical in the way they look and feel. One is a little heavier than the rest, you don’t know which one, because they all look the same. You have a balance scale which you can use only twice. How can you find the heaviest apple?
תשובות
הוסף תשובה
|
לצפיה בתשובות
מאי 2021
אחלק לקבוצות של 3.
אשקול 2 קבוצות - אם זהות, אבחר בשלישית, אם שונות - אבחר בזאת הכבדה יותר.
נשארתי עם 3 תפוחים.
אחד אשים בצד. את השניים האחרים אשקול.
אם אחד כבד מהשני - אבחר בו. אם זהים - אבחר בזה ששמתי בצד
עוסקת בפיתוח, תכנות, שיווק ומתן זיכיונות למערכות הפעלה למחשבים, פתרונות תוכנה למגזר הפרטי והעסקי ומגוון פלטפורמות משולבות חומרה ותוכנה. בתחום המוצרים ללקוחות משווקת החברה מערכות הפעלה לשרתים, מחשבים אישיים ומחשבי כף יד.