Подготовка по специальности
Собеседование Java-разработчика:
вопросы и ответы.
Java-интервью строится вокруг четырёх тем: коллекции и язык, устройство JVM, многопоточность и экосистема Spring/Hibernate. Вопросы предсказуемы — глубина ответов и связь с практикой отличают сильного кандидата от прочитавшего конспект.
Не пытайтесь выучить все ответы: интервьюеры проверяют понимание, а не память. Разберите темы ниже, прорешайте типичные вопросы вслух и свяжите каждый ответ с примером из собственного опыта.
01 · Процесс
Как обычно проходит интервью
Обычно: скрининг, секция по Core Java (коллекции, JVM, многопоточность), секция по Spring и базам данных, live coding или тестовое задание, для middle и выше — системный дизайн. В банках и финтехе — а это большая часть Java-вакансий в России — добавляются вопросы про транзакции и надёжность.
02 · Темы
Что нужно знать перед интервью
Core Java
- коллекции: устройство HashMap, ArrayList против LinkedList
- equals/hashCode и их контракт
- Stream API, Optional, лямбды
- исключения: checked против unchecked
- records, sealed classes, новшества свежих версий
JVM и многопоточность
- память JVM: heap, stack, metaspace
- сборщики мусора: G1, ZGC — принципы и выбор
- synchronized, volatile, java.util.concurrent
- пулы потоков, ExecutorService, виртуальные потоки
- happens-before и модель памяти Java
Spring и данные
- IoC-контейнер, жизненный цикл бина, скоупы
- @Transactional: как работает и когда молча не работает
- Hibernate: lazy/eager, N+1, кеши первого и второго уровня
- Spring Boot: автоконфигурация, стартеры
03 · Вопросы
Реальные вопросы с разбором ответов
Пометка у вопроса — как часто он встречается на реальных интервью: почти всегда часто иногда
01. Как устроена HashMap внутри?
почти всегдаМассив бакетов, хеш ключа определяет бакет, коллизии — связный список, при превышении порога — красно-чёрное дерево. Упомяните load factor, ресайз и почему важен неизменяемый ключ с корректными equals/hashCode. Это вопрос номер один на Java-интервью.
02. Контракт equals и hashCode: что будет при нарушении?
почти всегдаРавные объекты обязаны иметь равный хеш. При нарушении HashMap «теряет» объект: положили по одному хешу, ищете по другому. Приведите пример: мутировали поле ключа после вставки. Скажите про генерацию через records или IDE.
03. Чем checked-исключения отличаются от unchecked и когда какие бросать?
частоChecked проверяются компилятором и вынуждают обработку, unchecked — нет. Практика индустрии сместилась к unchecked для большинства случаев; checked — когда вызывающий реально может восстановиться. Главное — не глотать исключения молча.
04. Что делает volatile и чего он не делает?
почти всегдаГарантирует видимость записи другим потокам и запрет переупорядочивания, но не атомарность составных операций: counter++ под volatile всё равно гонка. Для счётчиков — AtomicInteger, для сложных инвариантов — блокировки. Свяжите с happens-before.
05. Как работает @Transactional и в каких случаях он молча не работает?
почти всегдаSpring оборачивает бин в прокси, транзакция открывается при входе в публичный метод извне. Не работает: вызов this.method() внутри того же класса, приватные методы, проглоченное исключение (по умолчанию откат только на unchecked). Это любимая ловушка интервьюеров.
06. Что такое N+1 в Hibernate и как чинить?
частоЛенивая загрузка коллекции в цикле порождает запрос на каждую сущность. Лечение: JOIN FETCH в JPQL, EntityGraph, батч-фетчинг. Скажите, как обнаружили бы: логирование SQL, метрики количества запросов на операцию.
07. Сравните G1 и ZGC. Когда важен выбор сборщика?
иногдаG1 — баланс пропускной способности и пауз, дефолт. ZGC — субмиллисекундные паузы на больших кучах ценой пропускной способности. Выбор важен при жёстких требованиях к латентности. Плюс: как смотреть GC-логи и что такое stop-the-world.
08. Виртуальные потоки: что меняют и когда не помогут?
частоЛёгкие потоки поверх небольшого числа платформенных: тысячи блокирующих I/O-задач без пула. Не помогут на CPU-нагрузке и при synchronized-блокировках, пиннящих поток-носитель. Покажите, что понимаете отличие от реактивного подхода.
09. Жизненный цикл бина в Spring и разница скоупов singleton/prototype.
частоСоздание, внедрение зависимостей, BeanPostProcessor, init-методы, уничтожение. Singleton — один на контейнер (дефолт), prototype — новый на каждый запрос из контекста. Классическая ловушка: prototype, внедрённый в singleton, создаётся один раз.
10. Поведенческий: расскажите про сложную проблему производительности.
почти всегдаСхема: симптом → как мерили (профайлер, метрики, GC-логи) → причина → решение → эффект в цифрах. Для Java хорошо звучат кейсы про утечку памяти, N+1 или неудачный пул потоков. Подчеркните: сначала измерение, потом оптимизация.
04 · Практика
Live coding и тестовые задания
Частые форматы: задача на коллекции и Stream API, написать REST-эндпоинт на Spring Boot с валидацией и работой с БД, найти проблему в многопоточном коде, отрефакторить фрагмент с запашками.
В тестовых заданиях смотрят на слои приложения, обработку ошибок, транзакционные границы и тесты. JUnit с Mockito и пара интеграционных тестов через Testcontainers производят сильное впечатление.
Общая подготовка — резюме, техника, звук и демонстрация экрана — разобрана в чек-листе подготовки к онлайн-собеседованию. Как осознанно использовать AI-подсказки во время звонка — в гайде «Как использовать AI на собеседовании».
05 · FAQ
Частые вопросы
Какую версию Java нужно знать?
Ориентируйтесь на актуальную LTS-версию и умение назвать ключевые новшества последних LTS: records, sealed classes, pattern matching, виртуальные потоки. В проде компании часто сидят на более старых LTS — понимание различий между версиями само по себе плюс на интервью.
Насколько глубоко спрашивают Spring?
Джуну достаточно IoC, DI, аннотаций и общего устройства Spring Boot. От middle ждут понимания проксирования, жизненного цикла бинов, ловушек @Transactional и умения объяснить автоконфигурацию. Знание исходников — редкое требование, понимание механики — обязательное.
Нужны ли алгоритмы Java-разработчику?
База обязательна: сложность операций коллекций, сортировки, работа с hash-структурами — это спрашивают через устройство HashMap и выбор коллекции под задачу. Отдельные алгоритмические секции — в крупных технологических компаниях и реже в банках.
Тренировка перед интервью
Репетируйте ответы вслух с Mira
Mira слышит вопрос и подсказывает опору для ответа прямо во время звонка. 30 минут бесплатно каждый месяц, банковская карта не нужна.
Mira