← SkillCueВсе роли

Вопросы на собеседовании Java-разработчика: 16 вопросов с разбором

Java-интервью консервативны: ядро языка, коллекции, исключения, немного многопоточности и Spring. Сюрпризов мало — валятся на глубине уточняющих вопросов. К каждому пункту — что хочет услышать интервьюер.

Ядро языка

1. == vs equals(); контракт equals/hashCode.

== — ссылки, equals — содержимое; переопределил equals — переопредели hashCode. Уточнят: что сломается в HashMap без hashCode. Вопрос №1.

2. Почему String неизменяемый? Что такое string pool?

Безопасность, кэш хеша, потокобезопасность; литералы — из пула. Следствие для практики: StringBuilder в циклах.

3. Интерфейс vs абстрактный класс — когда что?

Интерфейс — контракт (+default-методы), абстрактный класс — общее состояние и часть реализации; наследование одно, интерфейсов много. Хотят критерий выбора, не определения.

4. final / finally / finalize?

Модификатор неизменяемости / блок «всегда выполнится» / устаревший хук GC (не использовать). Вопрос-скороговорка на внимательность.

5. Checked vs unchecked исключения; ваша практика обработки?

Checked заставляет обрабатывать, unchecked — ошибки логики. Плюс: почему Spring оборачивает всё в unchecked; своё осмысленное мнение ценится.

Коллекции

6. Как устроен HashMap? Что при коллизиях?

Бакеты по hashCode, коллизии — список → дерево (Java 8+), O(1) в среднем. Второй по частоте вопрос; готовьте рассказ на 90 секунд.

7. ArrayList vs LinkedList?

Массив vs узлы; доступ O(1) vs вставки по итератору. Сильный финал: «на практике почти всегда ArrayList — и вот почему (кэш-локальность)».

8. HashSet vs TreeSet vs LinkedHashSet?

Хеш без порядка / отсортированный (compareTo, O(log n)) / порядок вставки. Уточнят: что нужно элементу TreeSet (Comparable/Comparator).

Stream API и современная Java

9. Stream API: map vs flatMap, терминальные vs промежуточные операции?

Промежуточные ленивы, терминальная запускает конвейер; flatMap разворачивает вложенные структуры. Классика: из List<List<String>> — плоский список.

10. Optional: зачем и как НЕ надо использовать?

Явный «может отсутствовать» вместо null; анти-паттерны: Optional в полях/параметрах, optional.get() без проверки. Хотят зрелость, не восторг.

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

11. synchronized vs volatile?

Взаимное исключение + видимость vs только видимость. Проверка: почему volatile count++ всё равно гонка (составная операция) и чем лечить (AtomicInteger).

12. Как запустить задачу в пуле потоков? ExecutorService, Future.

Пул вместо new Thread: управление ресурсами, submit → Future/CompletableFuture. Достаточно уверенного практического минимума для мидла.

Spring и данные

13. Что такое IoC/DI? Как Spring создаёт бины?

Контейнер управляет зависимостями: конструкторная инъекция предпочтительна; scope singleton по умолчанию. Уточнят: почему field injection ругают.

14. Как работает @Transactional? Когда «не работает»?

Прокси вокруг бина: транзакция на границе публичного метода. Ловушки: self-invocation, private-методы, проглоченные исключения. Ловушки — то, что отличает практика.

15. Проблема N+1 в JPA — что это и как чинить?

Ленивая загрузка порождает запрос на каждую строку; лечение: fetch join, EntityGraph, батчинг. Пример из своего проекта — золото.

Про вас

16. Расскажите о самой сложной задаче на проекте.

Контекст → проблема → варианты → решение → результат. Подготовьте историю с техническими деталями заранее — уточняющие вопросы будут.

Это общий список. А что спросят именно на вашем собеседовании?

Пришлите текст вакансии — бесплатно вернём вероятные вопросы по ней, риски и слабые темы. А в приложении SkillCue — тренировка ответов и подсказки прямо во время созвона.

Разобрать мою вакансию бесплатно