Шпаргалка Java Middle
Компактная шпаргалка JavaJub уровня Middle/Middle+ для повторения за 2 часа до собеса: триггер-вопросы с готовыми короткими ответами по Java Core, коллекциям, JVM, многопоточности, Spring, БД, System Design, DevOps и AI/LLM, с цветовой кодировкой по риску (база / частое / ловушка).
Что внутри — разделы
- 01 Java Core
- 02 Collections
- 03 JVM и память
- 04 Многопоточность
- 05 Spring
- 06 Базы данных
- 07 System Design и микросервисы
- 08 Тесты & DevOps
- 09 Git
- 10 CI/CD
- 11 AI / LLM
- 12 Кэширование
- 13 DevOps & Развёртывание
- 14 Безопасность & API Design
- 15 Практические инструменты
- 16 Топ-30 ловушек собеса
- ⏱ Если осталось 5 минут
Примеры карточек
Формат шпаргалки: триггер-вопрос → готовый короткий ответ. Ниже — открытые примеры; все карточки по всем разделам — в полной версии.
Integer a = 100, b = 100: a == b? А если 200?
Для 100 — true: Java кэширует объекты Integer от −128 до 127, это одна ссылка. Для 200 — false, создаются новые объекты. Так же кэшируются Boolean, Byte, Short, Character и Long; у Float и Double кэша нет.
Что у HashMap внутри?
Массив корзин (по умолчанию 16). При совпадении хешей в корзине сначала связный список, а при 8+ элементах и размере массива не меньше 64 список превращается в красно-чёрное дерево. При заполнении на 75% массив растёт вдвое.
volatile long counter; counter++ — это атомарно?
Нет, это гонка. counter++ — три шага: прочитать, увеличить, записать обратно. Между ними может вклиниться другой поток, и часть увеличений потеряется. Нужен AtomicLong или synchronized. volatile отвечает за видимость, но не за атомарность.
Что такое остановка мира (stop-the-world) при сборке мусора?
Пауза, во время которой все потоки приложения заморожены. Она есть у любого сборщика, отличается только длина: у Parallel — сотни миллисекунд, у G1 — десятки, у ZGC — единицы. Полностью беспаузной сборки не бывает.
Почему внедрять зависимости через конструктор лучше, чем в поле?
Поля можно сделать неизменяемыми; если зависимости не хватает, ошибка вылезет сразу на старте, а не в работе; класс легко тестировать без Spring; сразу видны все связи. Обычно берут @RequiredArgsConstructor и поля private final.
Какой уровень изоляции транзакций по умолчанию в PostgreSQL?
Read Committed. Уровня Read Uncommitted в Postgres нет — он работает как Read Committed. В Spring уровень по умолчанию берётся из настроек базы.
Три состояния предохранителя (Circuit Breaker)?
Закрыт (считаем ошибки) → при превышении порога открыт (сразу отдаём запасной ответ, сервис не дёргаем) → через паузу полуоткрыт (пробные запросы) → если удачно, снова закрыт. Сейчас используют Resilience4j вместо устаревшего Hystrix.
Нулевая температура — значит всегда одинаковый ответ?
Нет: случайность почти убирается, но точь-в-точь одинаковый ответ не гарантирован — влияют вычисления на видеокартах, обновления модели, разное зерно случайности. Для строгой повторяемости фиксируют зерно и версию модели.
Полная шпаргалка — все триггер-вопросы по всем 17 разделам с ответами и цветокодом (база / частое / ловушка) — в JavaJub Pro.