Подготовка к собеседованиям

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

1. Java Core

Контроль: могу объяснить контракт equals/hashCode, PECS, checked/unchecked exceptions, immutability и dynamic dispatch.

2. JVM

Контроль: отличаю runtime memory areas от JMM, понимаю class loading, roots GC, safe publication и причины data race.

3. Коллекции и Stream API

Контроль: выбираю структуру по операции, называю сложность, объясняю fail-fast iterator, backed view subList, lazy pipeline и side effects.

Реальная практика: Кейс subList изменил исходный список.

4. Многопоточность

Контроль: могу построить happens-before, отличить atomicity от visibility, выбрать lock/atomic/concurrent collection и разобрать deadlock.

5. SQL

Контроль: пишу запрос, объясняю logical order, читаю plan, понимаю цену индекса и аномалии изоляции.

Реальная практика: Кейс фильтр поверх UNION.

6. JPA и Hibernate

Контроль: понимаю identity map, dirty checking, owning side, lazy loading, N+1 и границы транзакции.

Реальная практика: Кейс N plus 1 при обходе иерархии, Кейс исключение было проглочено внутри транзакции.

7. Spring

Контроль: объясняю container, proxy, self-invocation, bean scopes, auto-configuration и обработку HTTP-запроса.

8. Web и интеграции

Контроль: отличаю transport от application protocol, знаю семантику HTTP, delivery Kafka, retry/idempotency и transaction boundaries BPMN.

9. Алгоритмы и проектирование

Как прогоняю тему

  1. Даю ответ за 60–90 секунд.
  2. Рисую механизм или пишу минимальный код.
  3. Называю хотя бы одно ограничение.
  4. Отвечаю на встречный вопрос «почему?».
  5. Связываю тему с одним случаем из Инженерные кейсы.

Если могу только узнать правильный ответ глазами, но не восстановить его сам, тема ещё не повторена.