Перейти к основному содержимому

Вопросы на собеседовании — Core Java

Разработчику

Эта страница — карта подготовки к собеседованию по языку Java (без Spring и DevOps). Полные разборы — в указанных главах; здесь — тема, что обычно ждут услышать и ссылка "копнуть глубже".

Материал удобно использовать как "тренажёр устных ответов" — открываете строку таблицы, проговариваете определение, короткий пример и ограничение.


Как пользоваться

  1. Пройдите рекомендуемый порядок по энциклопедиям — хотя бы один раз с примерами кода.
  2. Откройте внешний список (JavaRush / ITVDN) и отмечайте пункты: "могу объяснить вслух" / "нужно перечитать".
  3. Закройте пробелы по чек-листу самопроверки.
  4. На собеседовании отвечайте структурой: определение → пример → ограничение или типичная ошибка.

Источники для сверки формулировок:

Уровень материалов в энциклопедии

Примеры ориентированы на Java 17+ (LTS): java.time, records, pattern matching, virtual threads. На собеседовании могут спрашивать и legacy (Date, Vector) — в разделе они упомянуты в контексте "что устарело".


Шпаргалка — десять вопросов, которые встречаются чаще всего

ВопросСуть ответа (30 секунд)Где углубиться
JVM, JDK, JRE?JDK — компилятор и инструменты; JRE — среда только для запуска (устарело как отдельная поставка); JVM — виртуальная машина, исполняет bytecodeОсновы, JVM
== и equals?== сравнивает ссылки (для объектов) или значения (примитивы); equals — логическое равенство, переопределяют вместе с hashCodeООП, Строки
ArrayList или LinkedList?ArrayList — быстрый доступ по индексу O(1), медленная вставка в середину; LinkedList — вставка O(1) при известном узле, медленный random accessКоллекции
checked и unchecked?Checked — обязаны обработать или throws (IOException); unchecked — наследники RuntimeException, компилятор не заставляетИсключения
final?Константа ссылки (объект можно менять внутри, если поля не final), запрет наследования класса / переопределения методаООП, Ключевые слова в Java
Поток: start() или run()?start() — JVM создаёт новый поток и вызывает run(); прямой run() — обычный вызов метода в текущем потокеJVM и потоки
synchronized и volatile?synchronized — взаимное исключение + видимость; volatile — видимость без блокировки, без атомарности i++JVM, память и потоки, Асинхронность в Java
immutable?Объект, состояние которого после создания не меняется; String, правильно спроектированный record / final-поляТипы, Современные конструкции Java
interface и abstract class?Интерфейс — контракт, множественное наследование типов; abstract — частичная реализация, поля состояния, один родитель-классООП
Stream API?Декларативные операции над коллекциями: промежуточные (filter, map) ленивые, терминальные (collect) запускают цепочкуStream API в Java

JavaRush Top-50 — навигация с подсказками

ТемаЧто сказать интервьюеруГде читать
1Особенности JavaООП, переносимость bytecode, GC, многопоточность, богатая стандартная библиотекаОсновы, JVM, ООП
2–4Наследование, инкапсуляция, полиморфизмIS-A, скрытие полей, вызов метода по типу объекта (динамическая диспетчеризация)ООП
5–6Конструктор, ObjectИнициализация состояния; у всех классов корень — java.lang.ObjectКонструкции, ООП
7–8Локальные и поля экземпляраЛокальные — внутри метода; поля — у объекта; static — у классаКонструкции
9–12Модификаторы, override, сигнатура, overloadpublic/protected/...; override — та же сигнатура в наследнике; overload — разные параметрыООП, Ключевые слова в Java
13–18interface, default methods, abstractКонтракт + default с Java 8; abstract class — общий код и поляООП, Современные конструкции Java
17String / StringBuilder / StringBufferString immutable; StringBuilder — однопоточная сборка; StringBuffer — synchronized legacyСтроки
19–20O(1) в массиве и ArrayListИндекс → смещение в памяти; у ArrayList амортизированная O(1) для getМассивы, Коллекции в Java
21AutoboxingintInteger автоматически; кэш -128…127 для IntegerТипы, Справочник по Java
22finalКласс, метод, переменная — разные эффектыООП, Ключевые слова в Java
23–24Mutable / immutableImmutable: final поля, нет сеттеров, защитная копия коллекцийТипы данных и переменные в Java, Современные конструкции Java
25–30Collections, List, Map, SetИерархия Collection; HashMap — hash + equals; HashSet — обёртка над MapКоллекции
31–36Exception, try/catch, checked/uncheckedИерархия Throwable; try-with-resources для AutoCloseableОбработка исключений в Java, Иерархия классов исключений в Java
37–42Thread, process, lifecycle, start/runПроцесс — ОС; поток — внутри JVM; состояния NEW, RUNNABLE, …JVM, память и потоки, Асинхронность в Java
43–45Daemon, shutdown hookDaemon не держит JVM; hook — код при завершенииJVM, память и потоки
46–50sync, volatile, deadlock, raceБлокировка монитора; volatile — видимость; deadlock — циклическое ожидание lockJVM, память и потоки, Асинхронность в Java

ITVDN 250+ — блоки Junior

Блок ITVDNПримеры вопросовНа что оперетьсяГлавы
ОбщиеПаттерны проектированияSingleton, Factory Method, Abstract Factory, Prototype, Strategy, Iterator, Command, Observer, Facade, Proxy, Mediator, Memento, Chain of Responsibility, Builder, Bridge, Composite, Decorator, Adapter — назначение, не заучивать 23 названияООП / SOLID, паттерны, большой гид на Java, практика на Java (122-140)
Java CoreJVM, JDK, bytecode, OOMOOM: heap и metaspace; читать текст исключения и стектрейсОсновы языка Java, JVM, память и потоки, Обработка исключений в Java
Java CoreJavaBean, immutable, pass-by-valueВ Java передаётся копия ссылки; объект меняется через ссылкуJavaBeans - компонентная модель, Типы данных и переменные в Java, Основные конструкции языка Java
ООПSOLID, overload/override, super, thisКратко по буквам S-O-L-I-D; super — родитель, this — текущий объектОбъектно-ориентированное программирование в Java, Основные конструкции языка Java
ООПabstract, interface, static, nestedstatic — принадлежит классу; nested — класс внутри классаОбъектно-ориентированное программирование в Java, Ключевые слова в Java
Stringпул, equals, StringBuilderЛитералы в string pool; == для строк почти всегда ошибкаСтроки в Java, Типы данных и переменные в Java
Enumordinal, switchordinal хрупок при изменении порядка константКонструкции §Enum
CollectionsArrayList / LinkedList / HashMapСложность операций; hashCode+equals для ключей MapКоллекции в Java, Массивы в Java
Objectequals/hashCode, clone, instanceofКонтракт: равные объекты → одинаковый hash; record генерирует equalsОбъектно-ориентированное программирование в Java
Exceptionschecked/unchecked, try-with-resourcestry (Stream s = ...) закрывает ресурс автоматическиОбработка исключений в Java, Иерархия классов исключений в Java
МногопоточностьThread/Runnable, wait/notifywait/notify только внутри synchronized на том же монитореJVM, память и потоки, Асинхронность в Java
Stream APIStream, lazyПромежуточные операции не выполняются без terminalStream API в Java
Hibernate / JPAentity, cascade@Entity — таблица; cascade — каскад операций на связяхHibernate и JPA — практический старт, Работа с базами данных из Java

ITVDN — Middle / Senior

ТемаЧто обычно проверяютГде в энциклопедии
Агрегация и композиция"часть" живёт отдельно и вместе с целымООП, паттерны
Java 8+лямбды, Stream, OptionalStream API в Java, История языка Java
Classloader, memory areasзагрузка классов, heap, stack, metaspaceJVM, память и потоки, Типы данных и переменные в Java
Ковариантность, castingприведение типов, ClassCastExceptionООП, Особенности и расширения языка Java
Unchecked в фреймворкахSpring оборачивает checked в runtime-исключенияОбработка исключений в Java, Spring Framework
ConcurrentHashMap, JMMвидимость между потоками, пулыJVM, память и потоки, Асинхронность в Java
GC, профилирование, модули 9+G1/ZGC на словах; jcmd/heap dump — JVM в проде — jcmd, дамп памяти и JFRJVM, память и потоки, Справочник по конфигурациям в Java, Современные конструкции Java
Spring, микросервисы, Kafkaвне "чистого Core"Spring Framework, Экосистема Java-приложений

Вопросы уровня Senior (CAP, Kubernetes, распределённые транзакции) выходят за рамки Core Java — см. Spring, экосистема, Инфраструктура.


Чего нет в "чистом Core"

ТемаГлава
Spring Boot, REST, SecuritySpring Framework, практика Первая программа на Spring FrameworkJWT и OAuth2 Resource Server в Spring Boot
Hibernate, JPA, JDBCРабота с базами данных из Java, Hibernate и JPA — практический старт
Maven / Gradle, CIСтруктура и сборки Java-проектов, Gradle — практический старт
Микросервисы, брокерыЭкосистема Java-приложений

На позицию Java backend часто спрашивают Core и Spring — готовьте оба блока.


Советы по подготовке

Говорите вслух. Определение без примера звучит заученно. Одна строка кода или сценарий ("два ключа с одинаковым hash в HashMap…") повышает доверие.

Признавайте границы. "В проде PostgreSQL, детали G1 смотрю в JVM, память и потоки" — нормальный ответ для Junior.

Legacy. Если спрашивают Date — в новом коде java.time (История языка Java, Современные конструкции Java).

Spring отдельно. Цепочка Первая программа на Spring FrameworkSpring Security — практический стартJWT и OAuth2 Resource Server в Spring BootОшибки REST — @Valid и @ControllerAdvice — типичный REST-стек на собеседовании.


Рекомендуемый порядок повторения

  1. ОсновыТипыКонструкцииООП
  2. ИсключенияКоллекцииСтроки
  3. JVM и потокиАсинхронность
  4. Stream APIСовременный синтаксис
  5. Чек-лист — закрыть пробелы
  6. Опционально: Spring Boot, диагностика JVM

Шаблон ответа, который нравится интервьюеру

Для большинства вопросов по Core Java отлично работает структура из трёх шагов:

  1. Короткое определение термина.
  2. Мини-пример из практики или 2-3 строки кода.
  3. Ограничение, типичная ошибка или компромисс.

Пример для "чем HashMap отличается от TreeMap":

  • HashMap даёт быстрый доступ по хешу без сортировки ключей;
  • TreeMap хранит ключи в отсортированном виде;
  • если нужен упорядоченный вывод, берут TreeMap, если важнее скорость и порядок не нужен, чаще выбирают HashMap.

Что часто недоговаривают кандидаты

ВопросЧастая недосказанностьЧто стоит добавить
equals и hashCodeГоворят только про equalsУточнить контракт: равные объекты обязаны иметь одинаковый hash
volatileОписывают как "ускоряет"Пояснить, что это про видимость, не про атомарность
ArrayList vs LinkedListТолько Big-O из учебникаДобавить, что cache locality у ArrayList часто даёт выигрыш в реальном CPU
Checked / uncheckedТолько определенияДобавить, где на практике используют runtime-исключения

Мини-блок "кодом, а не словами"

Если просят объяснить тему, короткий фрагмент кода обычно сильно усиливает ответ:

Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("A", 2); // ключ тот же, значение заменилось
System.out.println(map.get("A")); // 2

По этому примеру легко и уверенно объяснить:

  • ключи в Map уникальны;
  • повторный put перезаписывает значение;
  • поведение связано с equals и hashCode.

Как связать Core Java с backend-интервью

На практике backend-собеседование часто строится как цепочка:

  1. Core Java.
  2. Коллекции и многопоточность.
  3. Spring и REST.
  4. База данных и интеграции.

Поэтому полезно сразу держать мосты к следующим разделам: