Этап 1 из 11 · ≈ 8 ч

ООП, интерфейсы и неизменяемость

Основа с Junior

Инкапсуляция, наследование, полиморфизм, интерфейсы против абстрактных классов, неизменяемые классы.

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

  • Инкапсуляция, наследование, полиморфизм, абстракция — с примерами.
  • Интерфейс — контракт, может иметь default-методы; абстрактный класс — общее состояние и частичная реализация.
  • Неизменяемый класс: final-поля, без сеттеров, защитные копии.
  • Композиция гибче наследования.

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

Junior ≈ 8 ч

  • Объясняет принципы ООП на примерах кода
  • Выбирает между интерфейсом и абстрактным классом

Практика. Спроектировать иерархию фигур или платёжных методов с интерфейсами и полиморфизмом.

Middle ≈ 4 ч

  • Проектирует неизменяемый класс и объясняет его преимущества для многопоточности
  • Предпочитает композицию наследованию и объясняет почему

Практика. Переделать изменяемый класс денежной суммы в неизменяемый с операциями и тестами.

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

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

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

Смотреть все
Какие четыре принципа ООП?Junior

Четыре принципа: инкапсуляция, наследование, полиморфизм, абстракция — к каждому короткий пример.

Полный разбор
Чем интерфейс отличается от абстрактного класса и что изменили default-методы?Middle

Интерфейс — контракт: класс может реализовать много интерфейсов, состояния (полей экземпляра) нет. Абстрактный класс — общая база с состоянием, конструктором и частичной реализацией; наследуется один. default-методы (Java 8) дали интерфейсам код для эволюции…

Полный разбор
Что даёт неизменяемость (immutability) объекта?Junior

Неизменяемый объект потокобезопасен без синхронизации, безопасен как ключ Map / элемент Set и его можно свободно кэшировать и делить.

Полный разбор
Что требуется, чтобы класс был ПО-НАСТОЯЩЕМУ неизменяемым?Middle

Рецепт: все поля private final, нет сеттеров и других мутаторов, запрет наследования (final-класс или приватный конструктор с фабриками), защитные копии изменяемых данных на входе и на выходе, this не утекает из конструктора.

Полный разбор
Сколько интерфейсов может реализовать один класс в Java?Junior

Интерфейсов — сколько угодно, класс-родитель — только один.

Полный разбор
Конструктор сохранил переданный List по ссылке (this.items = items). Почему объект всё равно изменяем?Middle

Поле хранит чужую ссылку: вызывающий меняет список снаружи, и «неизменяемый» объект меняется. final запрещает переприсвоить поле, но не менять содержимое. Нужна защитная копия на входе (List.copyOf) и неизменяемое представление на выходе.

Полный разбор
Что такое перегрузка метода (overloading)?Junior

Перегрузка (overloading) — несколько методов с одним именем и разными параметрами в одном классе; выбор на этапе компиляции по объявленным типам аргументов. Переопределение (overriding) — подкласс заменяет метод родителя с той же сигнатурой; выбор во время…

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

Разборы темы

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

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

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

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

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