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

Равенство и исключения

Основа с Junior

equals и hashCode, контракт и ловушки; checked и unchecked исключения, try-with-resources.

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

  • Контракт: равные объекты — равные хеш-коды; изменяемый ключ в HashMap — потерянная запись.
  • Checked исключения требуют обработки, unchecked — ошибки программы.
  • Не проглатывать исключения и не ловить Exception без причины.
  • try-with-resources закрывает ресурсы даже при ошибке.

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

Junior ≈ 6 ч

  • Переопределяет equals и hashCode согласованно и объясняет, что сломается в HashMap без этого
  • Объясняет иерархию исключений и разницу checked и unchecked
  • Закрывает ресурсы через try-with-resources

Практика. Написать класс-ключ без hashCode, показать поломку в HashMap и исправить.

Middle ≈ 2 ч

  • Проектирует обработку ошибок в сервисе — свои исключения, перевод в коды ответа, без проглатывания

Практика. Описать и реализовать единую обработку ошибок REST-сервиса с иерархией своих исключений.

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

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

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

Смотреть все
Какой порядок catch-блоков корректен для FileNotFoundException и IOException?Junior

Сначала FileNotFoundException, затем IOException: catch проверяются сверху вниз, и общий тип перед частным делает частный недостижимым — ошибка компиляции.

Полный разбор
Чем checked-исключения отличаются от unchecked?Middle

Checked (наследники Exception, кроме RuntimeException) компилятор требует объявить в throws или обработать. Unchecked (RuntimeException и Error) — нет. Выбор: checked — когда вызывающий может осмысленно отреагировать, unchecked — для багов и нарушений…

Полный разбор
Что происходит, если исключение не перехвачено ни в одном методе цепочки вызовов?Junior

Исключение поднимается вверх по стеку вызовов до первого подходящего catch; если его нет — поток завершается со стектрейсом.

Полный разбор
Какое правило связывает equals() и hashCode()?Middle

Равные по equals объекты обязаны иметь равный hashCode; обратное не требуется — коллизии нормальны. Иначе HashMap и HashSet ищут в другой корзине и не находят равный объект: до вызова equals дело не доходит.

Полный разбор
Что делает конструкция try-with-resources?Junior

try-with-resources гарантированно закрывает ресурсы при любом выходе из блока — без ручного finally.

Полный разбор
Какие требования входят в контракт equals?Middle

Рефлексивность (a.equals(a)), симметричность, транзитивность, согласованность (повторные вызовы дают одно и то же) и a.equals(null) == false. Самое частое нарушение — симметричность при наследовании: подкласс с дополнительным полем.

Полный разбор
Что произойдёт при выполнении: Integer x = null; int y = x;?Junior

NullPointerException: int y = x компилируется в x.intValue(), а вызов метода на null — NPE. Обёртка может быть null, примитив — нет.

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

Разборы темы

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

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

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

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

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