Шпаргалка Java Middle

Компактная шпаргалка JavaJub уровня Middle/Middle+ для повторения за 2 часа до собеса: триггер-вопросы с готовыми короткими ответами по Java Core, коллекциям, JVM, многопоточности, Spring, БД, System Design, DevOps и AI/LLM, с цветовой кодировкой по риску (база / частое / ловушка).

Что внутри — разделы

  1. 01 Java Core
  2. 02 Collections
  3. 03 JVM и память
  4. 04 Многопоточность
  5. 05 Spring
  6. 06 Базы данных
  7. 07 System Design и микросервисы
  8. 08 Тесты & DevOps
  9. 09 Git
  10. 10 CI/CD
  11. 11 AI / LLM
  12. 12 Кэширование
  13. 13 DevOps & Развёртывание
  14. 14 Безопасность & API Design
  15. 15 Практические инструменты
  16. 16 Топ-30 ловушек собеса
  17. ⏱ Если осталось 5 минут

Примеры карточек

Формат шпаргалки: триггер-вопрос → готовый короткий ответ. Ниже — открытые примеры; все карточки по всем разделам — в полной версии.

Java Core

Integer a = 100, b = 100: a == b? А если 200?

Для 100 — true: Java кэширует объекты Integer от −128 до 127, это одна ссылка. Для 200 — false, создаются новые объекты. Так же кэшируются Boolean, Byte, Short, Character и Long; у Float и Double кэша нет.

Collections

Что у HashMap внутри?

Массив корзин (по умолчанию 16). При совпадении хешей в корзине сначала связный список, а при 8+ элементах и размере массива не меньше 64 список превращается в красно-чёрное дерево. При заполнении на 75% массив растёт вдвое.

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

volatile long counter; counter++ — это атомарно?

Нет, это гонка. counter++ — три шага: прочитать, увеличить, записать обратно. Между ними может вклиниться другой поток, и часть увеличений потеряется. Нужен AtomicLong или synchronized. volatile отвечает за видимость, но не за атомарность.

JVM и память

Что такое остановка мира (stop-the-world) при сборке мусора?

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

Spring

Почему внедрять зависимости через конструктор лучше, чем в поле?

Поля можно сделать неизменяемыми; если зависимости не хватает, ошибка вылезет сразу на старте, а не в работе; класс легко тестировать без Spring; сразу видны все связи. Обычно берут @RequiredArgsConstructor и поля private final.

Базы данных

Какой уровень изоляции транзакций по умолчанию в PostgreSQL?

Read Committed. Уровня Read Uncommitted в Postgres нет — он работает как Read Committed. В Spring уровень по умолчанию берётся из настроек базы.

System Design и микросервисы

Три состояния предохранителя (Circuit Breaker)?

Закрыт (считаем ошибки) → при превышении порога открыт (сразу отдаём запасной ответ, сервис не дёргаем) → через паузу полуоткрыт (пробные запросы) → если удачно, снова закрыт. Сейчас используют Resilience4j вместо устаревшего Hystrix.

AI / LLM

Нулевая температура — значит всегда одинаковый ответ?

Нет: случайность почти убирается, но точь-в-точь одинаковый ответ не гарантирован — влияют вычисления на видеокартах, обновления модели, разное зерно случайности. Для строгой повторяемости фиксируют зерно и версию модели.

Полная шпаргалка — все триггер-вопросы по всем 17 разделам с ответами и цветокодом (база / частое / ловушка) — в JavaJub Pro.

› новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться