Этап 9 из 11 · ≈ 6 ч

Дизайн и паттерны

Основа с Junior

SOLID, DRY, KISS, порождающие, структурные и поведенческие паттерны.

Что важно знать

  • SOLID: единственная ответственность, открытость к расширению, подстановка Лисков, разделение интерфейсов, инверсия зависимостей.
  • Паттерны — словарь решений: строитель, фабрика, стратегия, декоратор, адаптер, наблюдатель, шаблонный метод.
  • Паттерн без проблемы — лишняя сложность.

Критерии освоения

Junior ≈ 6 ч

  • Объясняет принципы SOLID на примерах
  • Узнаёт в коде основные паттерны — фабрика, строитель, стратегия, наблюдатель, декоратор

Практика. Найти 5 паттернов в исходниках JDK или Spring и объяснить, какую задачу они решают.

Middle ≈ 8 ч

  • Применяет паттерн для решения конкретной проблемы, а не ради паттерна
  • Находит нарушения SOLID в коде и рефакторит их

Практика. Отрефакторить класс на 500 строк с несколькими ответственностями по SOLID с тестами до и после.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Что на самом деле утверждает Single Responsibility Principle?Junior

SRP: у модуля одна причина для изменения — он отвечает перед одним актором (группой заинтересованных людей).

Полный разбор
В коде расчёта комиссии есть метод с цепочкой if по типу платежа, и при добавлении каждого нового способа оплаты приходится править этот метод и ещё три похожих. Какой принцип SOLID нарушен в первую очередь?Middle

Open/Closed Principle: новое поведение требует правки существующего кода, а не добавления нового. Растущая цепочка if или switch по типу, повторённая в нескольких местах, — канонический признак.

Полный разбор
Доменный сервис работает с базой напрямую через JPA-репозиторий Spring Data. Как применить Dependency Inversion Principle, и что именно здесь «инвертируется»?Senior

Домен объявляет интерфейс-порт на своём языке (OrderRepository в доменном пакете), инфраструктура его реализует. Инвертируется не только стрелка зависимости, но и владение абстракцией: интерфейс принадлежит тому, кто его использует.

Полный разбор
Что означает принцип DRY?Junior

DRY — Don't Repeat Yourself: каждое знание (правило, расчёт) должно быть записано в одном месте.

Полный разбор
Что такое Liskov Substitution Principle и что обязан соблюдать подтип?Middle

Подтип должен быть подставим вместо базового типа без сюрпризов для вызывающего: не усиливать предусловия, не ослаблять постусловия, сохранять инварианты, не бросать новых исключений, которых клиент не ждёт. Это про поведение, а не про компиляцию.

Полный разбор
Зачем нужен паттерн Visitor, какова его цена и чем его можно заменить в современной Java?Senior

Visitor выносит операции за пределы иерархии: удобно, когда типы стабильны, а операций много. Цена — асимметрия: новая операция дешёвая, новый тип требует править всех визиторов. В Java 21 его заменяет sealed-иерархия + switch с pattern matching — компилятор…

Полный разбор
Какую задачу решают порождающие паттерны?Junior

Порождающие паттерны отделяют клиента от конкретных классов создаваемых объектов: создание прячут за фабрикой или билдером.

Полный разбор
На каком приёме построено большинство структурных паттернов?Junior

Структурные паттерны построены на композиции и делегировании: объект хранит ссылку на другой и пропускает вызовы через себя.

Полный разбор

Разборы темы

← Вся карта «Java»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования