JavaRush /Java блог /Random UA /36 рівень. Відповіді на запитання до співбесіди на тему р...
lichMax
40 рівень
Санкт-Петербург

36 рівень. Відповіді на запитання до співбесіди на тему рівня

Стаття з групи Random UA
Знову все перервав, відповідей не знайшов. Що ж. Викладу свої, хоча я писав їх чисто для себе, і по можливості коротко. Але все краще ніж нічого. Отже, були такі питання: 36 рівень.  Відповіді на запитання до співбесіди на тему рівня - 1Запитання до співбесіди:
  1. Що таке MVC ?
  2. Що таке DAO та DTO ?
  3. Що таке POJO ?
  4. Що таке Entity ?
  5. Які колекції-списки ви знаєте?
  6. Які колекції-множини ви знаєте?
  7. Що таке map , чим він відрізняється від « словника »?
  8. Що таке Queue та Dequeue ?
  9. Які класи, які реалізують інтерфейс Queeue, ви знаєте?
  10. Що таке дерево ?
А тепер мої відповіді:
  1. MVC - це такий патерн проектування додаток, при якому програма поділяється на три окремі частини: модель (model), представлення (view) та контролер (controller). Модель надає дані та реагує на команди контролера, змінюючи свій стан. Подання відповідає за відображення даних моделі користувача, реагуючи на зміни моделі. А контролер інтерпретує дії користувача, сповіщаючи модель необхідність змін. Таким чином, кожен з компонентів цієї схеми слабо пов'язаний з іншими компонентами, за рахунок чого досягається гнучкість програми. Найчастіше вся бізнес-логіка розміщується в моделі, хоча іноді вона міститься і в контролері. У першому випадку модель називають тонкою, в останньому товстою.

  2. DAO (Data Access Object) - це об'єкт, основне завдання якого зберігати дані в базу даних, а також витягувати їх з неї. DTO (Data Transfer Object) – це об'єкт, призначений для транспортування даних. Тому його основне завдання – зберігати ці дані. Жодної логіки він не міститься. Крім того, він повинен бути серіалізується, так як транспортування об'єктів зазвичай відбувається за допомогою серіалізації-десеріалізації.

  3. POJO перекладається як "об'єкт Java у старому стилі". Їх протиставляють EJB-об'єктами. Останні слідують спеціальної конвенції і зазвичай жорстко прив'язані до якогось конкретного enterprise-фреймворку (наприклад, у них має бути публічний конструктор без параметрів, повинен бути гетери та сеттери для полів, вони мають бути серіалізованими тощо). POJO - це, відповідно, звичайний клас, який не успадковує ні від яких спеціальних класів і не реалізує жодних спеціальних бібліотек. Зазвичай POJO нічого особливого не робить і містить лише стан.

  4. Entity Bean – це бін, мета якого зберігати деякі дані. У логіку такого біна вбудований механізм збереження себе та своїх полів у базу даних. Такий об'єкт може бути знищений, а потім відтворений із бази заново. Але, крім зберігання даних, у нього немає жодної логіки. А бін у свою чергу - це особливий клас, який повинен виконувати такі правила:

    • Клас повинен мати конструктор без параметрів з модифікатором доступу public. Такий конструктор дозволяє інструментам створити об'єкт без додаткових складнощів із параметрами.
    • Властивості класу мають бути доступні через 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. Перша колекція зберігає свої об'єкти на основі хеш-кодів. Друга - це модифікована перша, в ній елементи ще до того ж розташовуються у зв'язковому списку, тому всі вони розташовані в порядку додавання. Третя колекція забезпечує сортування своїх елементів.

  7. Map - це вид колекцій, що зберігають свої елементи у вигляді пар "ключ-значення". Причому всі ключі мають бути унікальними. Серед реалізацій є HashMap та TreeMap. Перша реалізація зберігає елементи з використанням хеш-кодів. Друга - зберігає елементи у відсортованому за ключом порядку.

  8. Черга (Queue) - це структура даних, що працює за принципом "Перший увійшов - перший вийшов". Тобто елементи до чергу додаються з одного кінця, а витягуються — з іншого. Deque- Це двостороння черга. У цій черзі елементи можна додавати як на початок, так і в кінець, а також брати елементи також можна і з початку, і з кінця черги. Відповідно є методи, які дозволяю покласти елемент (це методи add(e) та offer(e)), і є методи, що дозволяють вилучити елемент із черги (це такі методи, як remove() та poll()). Крім того, є методи, які дозволяють просто отримати елемент із черги без його видалення звідти (це методи element() та peek()). В інтерфейсі Deque додатково є методи для додавання елементів до початку і кінця черги, вилучення елементів з початку або кінця, а також отримання елементів з початку або кінця черги (без їх видалення з черги).

  9. Серед простих реалізацій можна відзначити ArrayDeque , LinkedList та PriorityQueue . Також існують багато класів у Concurrent Collections, які реалізують ці два інтерфейси (обидва відразу чи тільки один з них).

  10. Дерево – це зв'язковий граф без петель та кратних ребер. Зазвичай, якщо в дереві N вершин, то кількість ребер як мінімум N-1. Також одну вершину в дереві вибирають як корінь. Інші вершини оголошують гілками. Гілки, які не мають своїх гілок, називаються листям дерева.
    У програмуванні дерева використовуються досить широко, і придумано багато видів цього дерева. Одне з найбільш широко застосовуваних дерев - це бінарне дерево. У цьому дереві кожен елемент має не більше двох нащадків (тобто може бути від 0 до 2). Одним із різновидів двійкового дерева є BST — бінарне дерево пошуку. У цьому дереві на елементи накладається правило: лівий нащадок елемента повинні бути за значенням меншим за нього, а правий — за значенням більшим за нього або дорівнює йому.
    Також ще є червоно-чорні дерева. Це різновид двійкових дерев пошуку. У червоно-чорних деревах вводиться ще одна властивість елемента – колір. Колір може бути чорний чи червоний. Також кожне червоно-чорне дерево повинне задовольняти такі вимоги:

    1. корінь дерева – чорний;
    2. вузол або червоний, або чорний;
    3. все листя дерева - чорні;
    4. обидва нащадки червоно вузла – чорні;
    5. всякий шлях від цього вузла до будь-якого листового вузла, що є його нащадка, містить однакову кількість чорних вузлів.
Ці правила дозволяють досягти збалансованості дерева. Дерево збалансоване, коли довжина шляху від кореня до будь-якого листового вузла відрізняється не більше, ніж на 1. (Тобто по-простому, у дереві немає перекосів та довгих гілок).
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ