JavaRush /בלוג Java /Random-HE /רמה 36. תשובות לשאלות ראיונות בנושא ברמה
lichMax
רָמָה
Санкт-Петербург

רמה 36. תשובות לשאלות ראיונות בנושא ברמה

פורסם בקבוצה
שוב, חיפשתי הכל ולא מצאתי תשובות. נו. אני אפרסם את שלי, למרות שכתבתי אותם אך ורק לעצמי, ואם אפשר, בקצרה. אבל הכל עדיף מכלום. אז היו השאלות הבאות: רמה 36.  תשובות לשאלות לראיון ברמה - נושא 1שאלות לראיון:
  1. מה זה MVC ?
  2. מה הם DAO ו- DTO ?
  3. מה זה POJO ?
  4. מהי ישות ?
  5. אילו אוספי רשימה אתה מכיר?
  6. איזה אוסף-סטים אתה מכיר?
  7. מהי מפה , במה היא שונה מ"מילון " ?
  8. מה הם תור ותור ?
  9. אילו מחלקות שמיישמות את ממשק Queeue אתה מכיר?
  10. מה זה עץ ?
ועכשיו התשובות שלי:
  1. MVC הוא תבנית עיצוב אפליקציה שבה האפליקציה מחולקת לשלושה חלקים נפרדים: דגם, תצוגה ובקר. המודל מספק נתונים ומגיב לפקודות הבקר על ידי שינוי מצבו. התצוגה אחראית להצגת נתוני הדגם למשתמש, בתגובה לשינויים במודל. והבקר מפרש את פעולות המשתמש, ומודיע למודל על הצורך בשינויים. לפיכך, כל אחד מהרכיבים של מעגל זה מחובר באופן רופף לרכיבים אחרים, ובכך משיג גמישות תוכנית. לרוב, כל ההיגיון העסקי כלול במודל, אם כי לפעמים הוא כלול גם בבקר. במקרה הראשון, הדגם נקרא דק, באחרון - עבה.

  2. DAO (Data Access Object) הוא אובייקט שהמשימה העיקרית שלו היא לשמור נתונים במסד נתונים, כמו גם לשלוף אותם ממנו. DTO (Data Transfer Object) הוא אובייקט שנועד להעביר נתונים. לכן, המשימה העיקרית שלו היא לאחסן נתונים אלה. זה לא מכיל שום היגיון. בנוסף, זה חייב להיות ניתן לסידרה, שכן הובלת חפצים מתרחשת בדרך כלל באמצעות סריאליזציה-deserialization.

  3. POJO מייצג "Old Style Java Object". הם מנוגדים לאובייקטים של EJB. האחרונים פועלים לפי מוסכמה מיוחדת ובדרך כלל קשורים בקפדנות למסגרת ארגונית ספציפית (לדוגמה, עליהם להיות בנאי ציבורי ללא פרמטרים, עליהם להיות בעלי גטר ו-seters לשדות, עליהם להיות ניתנים לסידרה וכו'). POJO היא, בהתאם, מחלקה רגילה שאינה יורשת משיעורים מיוחדים ואינה מיישמת ספריות מיוחדות. בדרך כלל POJO לא עושה שום דבר מיוחד ומכיל רק מצב.

  4. Entity Bean — это бин, цель которого хранить некоторые данные. В логику такого бина встроен механизм сохранения себя и своих полей в базу данных. Такой an object может быть уничтожен, а потом воссоздан из базы заново. Но кроме хранения данных у него нет ниHowой логики. А бин в свою очередь — это особый класс, которые должен выполнять следующие правила:

    • Класс должен иметь конструктор без параметров, с модификатором доступа public. Такой конструктор позволяет инструментам создать an object без дополнительных сложностей с параметрами.
    • Свойства класса должны быть доступны через get, set и другие методы (так называемые методы доступа), которые должны подчиняться стандартному соглашению об именах. Это легко позволяет инструментам автоматически определять и обновлять содержание bean’ов. Многие инструменты даже имеют специализированные редакторы для различных типов свойств.
    • Класс должен быть сериализуем. Это даёт возможность надёжно сохранять, хранить и восстанавливать состояние bean независимым от платформы и виртуальной машины способом.
    • Класс должен иметь переопределенные методы equals(), hashCode() и toString().
  5. Все коллекции-списки реализуют интерфейс List<E> и наследуются от абстрактного класса AbstractList<E>. Среди них можно выделить ArrayList<E> и LinkedList<E7gt;. ArrayList7lt;E> — это список, основаный на массиве, а LinkedList<E> — это классический двусвязный список.

  6. Коллекции-множества в Java реализуют интерфейс Set<E> и наследуются от AbstractSet<E>. Множества — это такие наборы данных, в которых все элементы уникальны. Среди них в Java есть HashSet, LinkedHashSet и TreeSet. Первая коллекция хранит свои an objectы на основе хеш-codeов. Вторая — это модифицированная первая, в ней элементы ещё к тому же располагаются в связном списке, поэтому они все расположены в порядке добавления. Третья коллекция обеспечивает сортировку своих элементов.

  7. Map — это вид коллекций, хранящих свои элементы в виде пар "ключ-значения". Причём все ключи должны быть уникальными. Среди реализаций есть HashMap и TreeMap. Первая реализация хранит элементы с использованием хэш-codeов. Вторая - хранит элементы в отсортированном по ключу порядке.

  8. תור הוא מבנה נתונים הפועל על בסיס ראשון-נכנס, יוצא ראשון. כלומר, אלמנטים מתווספים לתור מקצה אחד ומוסרים מהקצה השני. Deque הוא תור דו כיווני. בתור זה ניתן להוסיף אלמנטים גם להתחלה וגם לסוף, וגם לקחת אלמנטים גם מתחילת התור וגם מהסוף. בהתאם לכך, ישנן שיטות המאפשרות להוסיף אלמנט (אלה שיטות add(e) ו-offer(e)), וישנן שיטות המאפשרות להסיר את האלמנט מהתור (אלה שיטות כגון remove( ) וסקר()). בנוסף, ישנן שיטות המאפשרות לך פשוט לקבל אלמנט מהתור מבלי להסיר אותו משם (אלה שיטות ה-element() וה-peek()). לממשק Deque יש בנוסף שיטות להוספת אלמנטים להתחלה ולסוף של תור, אחזור אלמנטים מההתחלה או הסוף, וקבלת אלמנטים מתחילת או סוף תור (מבלי להסיר אותם מהתור).

  9. יישומים פשוטים כוללים את ArrayDeque , LinkedList ו- PriorityQueue . יש גם מחלקות רבות ב-Concurrent Collections שמיישמות את שני הממשקים הללו (שניהם בבת אחת או רק אחד מהם).

  10. עץ הוא גרף מחובר ללא לולאות או קצוות מרובים. בדרך כלל, אם יש N קודקודים בעץ, אז מספר הקצוות הוא לפחות N-1. כמו כן, קודקוד אחד בעץ נבחר כשורש. הקודקודים הנותרים הם ענפים מוכרזים. ענפים שאין להם ענפים משלהם נקראים עלים של עץ.
    עצים נמצאים בשימוש די נרחב בתכנות, וסוגים רבים של עץ זה כבר הומצאו. אחד העצים הנפוצים ביותר הוא העץ הבינארי. בעץ זה, לכל אלמנט יש לכל היותר שני ילדים (כלומר, יכולים להיות מ-0 עד 2). סוג אחד של עץ בינארי הוא BST - עץ חיפוש בינארי. בעץ זה מוטל כלל על היסודות: הילד השמאלי של היסוד חייב להיות קטן מערכו, והילד הימני חייב להיות גדול ממנו או שווה לו.
    יש גם עצים אדומים-שחורים. זהו סוג של עץ חיפוש בינארי. בעצים אדומים-שחורים מוצגת תכונה נוספת של האלמנט - צבע. הצבע יכול להיות שחור או אדום. כמו כן, כל עץ אדום-שחור חייב לעמוד בדרישות הבאות:

    1. שורש העץ שחור;
    2. הצומת אדום או שחור;
    3. כל עלי העץ שחורים;
    4. שני צאצאיו של הצומת האדום שחורים;
    5. כל נתיב מצומת נתון לכל צומת עלים שהוא צאצא שלו מכיל את אותו מספר של צמתים שחורים.
כללים אלה מאפשרים לך להשיג עץ מאוזן. עץ מאוזן כאשר אורך הנתיב מהשורש לכל צומת עלה שונה בלא יותר מ-1. (כלומר, במילים פשוטות, אין עיוותים או ענפים ארוכים בעץ).
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION