Что спрашивают на Java-собеседовании, как отвечать про JVM, коллекции и многопоточность и как отрепетировать разговор.
Java-собеседование проверяет не знание синтаксиса — его знает любой, кто писал код. Проверяют понимание платформы: как работает память, почему приложение падает под нагрузкой и что происходит под капотом фреймворка, которым вы пользуетесь каждый день.
| Этап | Что проверяют |
|---|---|
| Скрининг | опыт, стек, ожидания по деньгам |
| Теория Java | JVM, память, коллекции, многопоточность |
| Live coding | как пишете и рассуждаете вслух |
| Архитектура | Spring, БД, транзакции, очереди |
Классы загружаются через ClassLoader и проходят верификацию; байткод исполняется интерпретатором с JIT-компиляцией «горячих» участков. Практический вывод, который ждут: JIT прогревает код, поэтому первые секунды работы медленнее — отсюда «прогрев» перед нагрузочным тестом.
Heap делится на поколения: молодое (Eden + два Survivor) и старое. Объекты, пережившие несколько сборок, переезжают в старое поколение. G1 собирает регионы и старается держать паузы предсказуемыми. Часто спрашивают, как найти утечку — ответ через heap dump и анализ ссылок.
ArrayList против LinkedList (доступ по индексу против вставки), HashMap и что происходит при коллизии, почему ключ должен быть неизменяемым, ConcurrentHashMap против Hashtable. Здесь ценят не определение, а выбор под задачу.
synchronized против Lock, volatile и его гарантии, happens-before, пулы потоков (ThreadPoolExecutor), CompletableFuture. Почти всегда дают задачу: «два потока увеличивают счётчик — что будет» и ждут разбора гонки.
Жизненный цикл бина, скоупы, прокси и AOP, почему `@Transactional` не работает при вызове метода из того же класса (self-invocation через прокси). Этот вопрос отсеивает многих.
N+1 запросов, ленивая и жадная загрузка, кэши первого и второго уровня, транзакции и уровни изоляции. Часто просят найти проблему в куске кода с сущностями.
JUnit и Mockito, интеграционные тесты против модульных, Maven/Gradle, CI. Проверяют, доводите ли вы код до продакшена.
Работает структура: тезис → обоснование → пример → ограничение. Последний шаг — то, что отличает практика.
«Для этого кейса я бы взял ConcurrentHashMap. Причина — чтение идёт из нескольких потоков, а Hashtable блокирует весь объект. На прошлом проекте это убрало узкое место в кэше метрик. Ограничение: составные операции всё равно нужно оборачивать явно, атомарность по одному ключу не спасает».
— пример ответа из практики разбора интервью
Неделя по 30–40 минут при наличии практики: разобрать семь тем выше, проговорить ответы вслух и один раз пройти полный диалог. Если какая-то тема (например, многопоточность) для вас тёмная — сначала закройте её.
Да, но пропорции зависят от компании. Продуктовые команды чаще дают практические задачи (разобрать баг, оптимизировать запрос), крупные tech-компании — классические задачи на массивы, строки, хеш-таблицы.
Скажите прямо и покажите ход мысли: с чем это похоже, как бы проверили. Интервьюер почти всегда отличает «не знаю, но думаю» от выдумки, а второе — прямой минус.
Нет, но нужно понимать, как работают прокси, транзакции и жизненный цикл бина. Именно эти вопросы задают чаще всего, и на них нельзя ответить заучиванием аннотаций.
Диапазоном, а не одним числом, с опорой на рынок. Подробный разбор — в статье переговоры о зарплате.
Опишите ситуацию одной фразой — «собеседование Java-разработчик, Spring Boot, пять лет опыта» — и пройдите диалог в тренажёре. Тренер задаст вопросы по вашей роли и разберёт ответы после разговора.
Пройдите по семи темам и отметьте, где ответ не складывается. Затем прогоните полный диалог: откройте HintMeTalk AI, режим «Тренер», опишите вакансию одной фразой. После разбора видно, какие ответы провисают — обычно это два-три из десяти.
Разборы по другим ролям: frontend, Python, системный аналитик. Общая подготовка — в статье подготовка к собеседованию.
Потренируйте этот навык в HintMeTalk AI
Открыть в приложении