Для разминки. Прошлый раз публикация подобного рода материалов вызвала нешуточные дебаты. Доливая масла в огонь, приведу примеры вопросов по шаблонам проектирования Java. Может отделы кадров станут немного более адекватными.


Приступим…

  1. Вопрос. Если два разных загрузчика классов независимо загружают синглтон-класс (singleton), будет ли он загружен дважды?
    Ответ. Два объекта загруженные разными загрузчиками класса никогда не будут идентичными, даже если они содержат одинаковые значения. Таким образом каждый из загрузчиков получит свой экземпляр синглтона.
  2. Вопрос. Что представляет из себя шаблон проектирования «Декоратор» (Decorator)?
    Ответ. Шаблон проектирования «Декоратор» предполагает назначение ответственности объектов во время исполнения. Хорошим примером декоратора будет BufferedInputStream из java.io. Он является оберткой для класса InputStream и предоставляет дополнительную функциональность буферизации.
  3. Вопрос. Что представляет из себя шаблон проектирования «Стратегия» (Strategy)?
    Ответ. Шаблон проектирования «Стратегия» позволяет заменить один алгоритм или процесс обработки информации в программе другим без изменений в объектах их использующих. Контейнеры AWT делегируют компоновку окон менеджерам компоновки. Менеджеры компоновки используют шаблон проектирования «Стратегия» для создания подходящего размещения.
  4. Вопрос. Что представляет из себя шаблон проектирования «Итератор» (Iterator)?
    Ответ. Шаблон проектирования «Итератор» используется для последовательного обхода коллекции объектов и предоставляет способ доступа к отдельным элементам этой коллекции.
  5. Вопрос. Что представляет из себя шаблон проектирования «Фабрика» (Factory)?
    Ответ. Шаблон проектирования «Фабрика» абстрагирует процесс создания объектов от кода использующего эти объекты.
  6. Вопрос. Что представляет из себя шаблон проектирования «Фронт-контроллер» (Front Controller)?
    Ответ. Подход «Фронт-контроллер» предполагает использование единого сервлета для централизованной обработки запросов и делегирование таких функций как валидация или бизнес-логика соответствующим хелперам.
  7. Вопрос. Что представляет из себя шаблон проектирования «Композитная страница» (Composite view)?
    Ответ. Композитная страница состоит, как правило, их нескольких подразделов. Например страница JSP может включат JSP-заголовок, JSP-подвал и т. д.
  8. Вопрос. Что представляет из себя шаблон проектирования «Хелпер отображения» (View Helper)?
    Ответ. При использовании данного шаблона проектирования процесс обработки отображения делегируется соответствующим классам-хелперам. Как правило реализуется с использованием Javabeans.
  9. Вопрос. В чем разница между подходами «Сервис-обработчик» (Service to Worker) и «Диспетчер отображения» (Dispatcher View)?
    Ответ. Оба шаблона используют «Фронт-контроллер» совместно с компонентами хелперов и диспетчеров.
    При этом в «Сервис-обработчик» фронт-контроллер делегирует выборку контента хелперам отображения и берет на себя функции аутентификации, авторизации и т. д.
    В «Диспетчере отображения» контроллер не передает функции выборки контента сторонним хелперам. Большая часть обработки производится прямо в обработчиках отображения.


2015 – 2016, www.topjavatutorial.com. Все права защищены. При публикации этого материала ссылка на источник обязательна.

Комментарии (6)


  1. AlexZaharow
    29.10.2017 11:40

    Это не масло!


  1. xadd
    29.10.2017 12:09

    Мда. Я от первого вопроса уже впал в ступор. Что значит "загрузить синглтон"?


    1. vlanko
      29.10.2017 15:32

      я могу только представить Спринг, в каком захотели создать два контекста, и в каждом свой синглтон


    1. Lure_of_Chaos
      29.10.2017 17:12

      там речь о загрузке класса загрузчиком классов


      1. izzholtik
        30.10.2017 00:28

        И, как мне кажется, ответ неправильный: если класслоадеры находятся в одной ветке иерархии, и они написаны правильно, класс не будет загружен дважды. Хотя это немного противоречит постановке задачи. Возможно, интервьюер хотел услышать что-то о == и equals() для загруженных разными загрузчиками классов =\


  1. Geminix
    30.10.2017 08:02

    Несколько экземпляров синглтона?