JavaRush /Blog Jawa /Random-JV /36 уровень. Ответы на вопросы к собеседованию по теме уро...
lichMax
tingkat
Санкт-Петербург

36 уровень. Ответы на вопросы к собеседованию по теме уровня

Diterbitake ing grup
Опять-таки всё перерыл, ответов не нашёл. What ж. Выложу свои, хотя я писал их чисто для себя, и по возможности — кратко. Но всё лучше, чем ничего. Итак, были такие вопросы: 36 уровень. Ответы на вопросы к собеседованию по теме уровня - 1Вопросы к собеседованию:
  1. What такое MVC?
  2. What такое DAO и DTO?
  3. What такое POJO?
  4. What такое Entity?
  5. Какие коллекции-списки вы знаете?
  6. Какие коллекции-множества вы знаете?
  7. What такое map, чем он отличается от «словаря»?
  8. What такое Queue и Dequeue?
  9. Какие классы, реализующие интерфейс Queeue вы знаете?
  10. What такое дерево?
А теперь мои ответы:
  1. MVC — это такой паттерн проектирования приложение, при котором приложение разделяется на три отдельные части: модель (model), представление (view) и контроллер (controller). Модель предоставляет данные и реагируется на команды контроллера, изменяя своё состояние. Представление отвечает за отображение данных модели пользователю, реагируя на изменения модели. А контроллер интерпретирует действия пользователя, оповещая модель о необходимости изменений. Таким образом каждый из компонентов этой схемы слабо связан с другими компонентами, за счёт чего достигается гибкость программы. Чаще всего вся бизнес-логика размещается в модели, хотя иногда она содержится и в контроллере. В первом случае модель называют тонкой, в последнем — толстой.

  2. DAO (Data Access Object) — это an object, основная задача которого сохранять данные в базу данные, а также извлекать их из неё. DTO (Data Transfer Object) - это an object, предназначенный для транспортировки данных. Поэтому его основная задача — хранить эти данные. НиHowой логики он не содержится. Кроме того, он должен быть сериализуемым, так How транспортировка an objectов обычно происходит с помощью сериализации-десериализации.

  3. POJO переводится How "an object Java в старом стиле". Их противопоставляют EJB-an objectми. Последние следуют специальной конвенции и обычно жёстко привязаны к Howому-то конкретному enterprise-фреймворку (например, у них должен быть публичный конструктор без параметров, должен быть геттеры и сеттеры для полей, они должны быть сериализуемыми и т.д.). POJO — это, соответственно, обычный класс, не наследующий ни от Howих специальных классов и не реализующий ниHowих специальных библиотек. Обычно 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. Очередь (Queue) — это структура данных, работающая по принципу "Первый вошёл — первый вышел". То есть элементы в очередь добавляются с одного конца, а извлекаются — с другого. Deque — это двусторонняя очередь. В этой очереди элементы можно добавлять How в начало, так и в конец, а также брать элементы тоже можно и из начала, и из конца очереди. Соответственно есть методы, которые позволяю положить элемент (это методы add(e) и offer(e)), и есть методы, позволяющие извлечь элемент из очереди (это такие методы, How remove() и poll()). Кроме того, есть методы, которые позволяют просто получить элемент из очереди без его удаления оттуда (это методы element() и peek()). В интерфейсе Deque дополнительно есть методы для добавления элементов в начало и конец очереди, извлечения элементов из начала or конца, а также получения элементов из начала or конца очереди (без их удаления из очереди).

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

  10. Дерево — это связный граф без петель и кратных рёбер. Обычно, если в дереве N вершин, то количество рёбер How минимум— N-1. Также одну вершину в дереве выбирают в качестве корня. Остальные вершины объявляют ветвями. Ветви, у которых нет своих ветвей, называются листьями дерева.
    В программировании деревья используются довольно широко, и придумано уже много видов этого дерева. Одно из самых широкоприменяемых деревьев - это бинарное дерево. В этом дереве у каждого element имеется не больше двух потомков (то есть может быть от 0 до 2). Одной из разновидностью двоичного дерева является BST — бинарное дерево поиска. В этом дереве на элементы накладывается правило: левый потомок element должны быть по значению меньше его, а правый — по значению больше его or equals ему.
    Также ещё существуют красно-чёрные деревья. Это разновидность двоичных деревьев поиска. В красно-чёрных деревьх вводится ещё одно свойство element — цвет. Цвет может быть чёрный or красный. Также каждое красно-чёрное дерево должно удовлетворять следующим требованиям:

    1. корень дерева — чёрный;
    2. узел либо красный, либо чёрный;
    3. все листья дерева — чёрные;
    4. оба потомка красно узла - чёрные;
    5. всякий путь от данного узла до любого листового узла, являющегося его потомка, содержит одинаковое количество чёрных узлов.
Эти правила позволяют добиться сбалансированности дерева. Дерево сбалансированно, когда длина пути от корня до любого листового узла отличается не более, чем на 1. (То есть по-простому, в дереве нет перекосов и длинных ветвей.)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION