מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנה — קיץ 2021 מועד ב' (97105)
תאריך הבחינה: לא ידוע
טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).
למגמת הנדסת תוכנה — מבנה נתונים ותכנות מונחה עצמים. נבחנים ב-Java או ב-C#, ובוחרים שפה בכניסה למבחן.
✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם
פתרון מפורט לכל שאלה — לא רק התשובה: הסבר שלב-אחר-שלב וניתוח הטעויות הנפוצות.
שאלות לדוגמה מהמבחן — פתרו עכשיו
בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 11 שאלות המבחן — את כולן תוכלו לפתור אונליין.
בונים תור לפי חוקיות המדרגה (סעיף א'), ואז בודקים אם תור נתון מקיים אותה (סעיף ב') — שתיהן פועלות רק דרך ה-ADT הנתון של Queue.
כתבו פעולה שמקבלת מספר שלם חיובי N ומחזירה תור "מדרגה N".
public static Queue<Integer> buildStairQueue(int N)
כתבו פעולה המקבלת תור q של מספרים שלמים ומספר שלם חיובי N, ומחזירה true אם התור הוא תור "מדרגה N", ואם לא, הפעולה מחזירה false.
public static boolean isStairQueue(Queue<Integer> q, int N)
שני כיווני בדיקה על אותו רעיון: קדימה (מצטבר משמאל) באיטרציה רגילה, והפוך (מצטבר מימין) שדורש רקורסיה כי אי אפשר לדעת מראש את הסכום שעוד לא נראה.
דוגמה ל"שרשרת סכומים": כל איבר (פרט לראשון) הוא סכום כל האיברים שלפניו (1=1, 2=1+1, 4=1+1+2, 8=1+1+2+4 וכו').
chain → 1 → 1 → 2 → 4 → 8 → 16 → 32 → null
דוגמה ל"שרשרת סכומים הפוכה": כל איבר (פרט לאחרון) הוא סכום כל האיברים שאחריו (2=2, 2=2, 4=2+2, 8=4+2+2 וכו', בכיוון הפוך).
chain → 64 → 32 → 16 → 8 → 4 → 2 → 2 → null
כתבו פעולה אשר מקבלת הפניה לחוליה הראשונה של שרשרת חוליות ומחזירה true אם השרשרת היא "שרשרת סכומים", ואם לא, הפעולה מחזירה false.
public static boolean isSumChain(Node<Integer> chain)
כתבו פעולה אשר מקבלת הפניה לחוליה הראשונה של שרשרת חוליות ומחזירה true אם השרשרת היא "שרשרת סכומים הפוכה", ואם לא, הפעולה מחזירה false.
אין כאן קוד לכתוב — רק לגזור מבנה ירושה יחיד שמקיים את כל אילוצי-הטיפוס בקוד הנתון, ואז לעדכן אותו כשאחד האילוצים מתהפך.
public static void main(String[] args)
{
B b1 = new A();
B b2 = new C();
A a1 = (C) b2;
D d1 = new C();
B b3 = new B();
D d2 = new A();
}
שרטטו תרשים UML המתאר קשר אפשרי ונכון בין כל המחלקות המוזכרות בקוד (ראו code_context) — בהנחה שכל 6 השורות תקינות (מתקמפלות ורצות ללא שגיאה).
הניחו כי השורה האחרונה בקוד (D d2 = new A();) מבצעת המרה לא תקינה (המחשב מודיע על טעות), וכל שאר החמש השורות עדיין תקינות. שרטטו תרשים UML חדש המתאר את הקשרים הנכונים במקרה זה, בין כל המחלקות המוזכרות בקוד.
הנושאים הרשמיים בבחינה 97105
לפי תוכנית הלימודים הרשמית של מה"ט (מבנה נתונים ותכנות מונחה עצמים) — אלו הנושאים שהבחינה נשענת עליהם:
- חזרה ותרגול בתמ"ע, דגש על שימוש במחלקה נתונה על בסיס ממשק הפעולות · 6 ש'
- פעולות על מערך - טיפוס נתונים סדרתי · 10 ש'
- מחלקה גנרית · 4 ש'
- רקורסיה · 12 ש'
- יעילות · 11 ש'
- מחסנית – Stack · 11 ש'
- תור – Queue · 11 ש'
- המחלקה הגנרית Node – מחלקה גנרית ייצוג חוליה בסיסית · 8 ש'
- חוליה בינארית - רשימות מקושרות דו כיווניות, עץ בינארי · 17 ש'
- OOP · 8 ש'
- שימוש ב-UML לשם מידול ופישוט OOP · 11 ש'
- הורשה · 8 ש'
- פולימורפיזם · 8 ש'
- פולימורפיזם מופשט · 13 ש'
- מבני נתונים וחבילות · 8 ש'
- Design Patterns · 28 ש'
- פרויקט סיכום הנחיות · 4 ש'
המקור: תוכנית הלימודים הרשמית של מה"ט (משרד העבודה).
פתרו את המבחן המלא — עם משוב על כל תשובה
כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.
התחילו לתרגל — חינם ←