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

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

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

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

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

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

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

:::tip Уровень материалов в энциклопедии Примеры ориентированы на 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), запрет наследования класса / переопределения методаООП, 141
Поток: start() или run()?start() — JVM создаёт новый поток и вызывает run(); прямой run() — обычный вызов метода в текущем потокеJVM и потоки
synchronized и volatile?synchronized — взаимное исключение + видимость; volatile — видимость без блокировки, без атомарности i++23, 298
immutable?Объект, состояние которого после создания не меняется; String, правильно спроектированный record / final-поляТипы, 300
interface и abstract class?Интерфейс — контракт, множественное наследование типов; abstract — частичная реализация, поля состояния, один родитель-классООП
Stream API?Декларативные операции над коллекциями: промежуточные (filter, map) ленивые, терминальные (collect) запускают цепочку295

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 — разные параметрыООП, 141
13–18interface, default methods, abstractКонтракт + default с Java 8; abstract class — общий код и поляООП, 300
17String / StringBuilder / StringBufferString immutable; StringBuilder — однопоточная сборка; StringBuffer — synchronized legacyСтроки
19–20O(1) в массиве и ArrayListИндекс → смещение в памяти; у ArrayList амортизированная O(1) для getМассивы, 24
21AutoboxingintInteger автоматически; кэш -128…127 для IntegerТипы, 3
22finalКласс, метод, переменная — разные эффектыООП, 141
23–24Mutable / immutableImmutable: final поля, нет сеттеров, защитная копия коллекций15, 300
25–30Collections, List, Map, SetИерархия Collection; HashMap — hash + equals; HashSet — обёртка над MapКоллекции
31–36Exception, try/catch, checked/uncheckedИерархия Throwable; try-with-resources для AutoCloseable21, 211
37–42Thread, process, lifecycle, start/runПроцесс — ОС; поток — внутри JVM; состояния NEW, RUNNABLE, …23, 298
43–45Daemon, shutdown hookDaemon не держит JVM; hook — код при завершении23
46–50sync, volatile, deadlock, raceБлокировка монитора; volatile — видимость; deadlock — циклическое ожидание lock23, 298

ITVDN 250+ — блоки Junior

Блок ITVDNПримеры вопросовНа что оперетьсяГлавы
ОбщиеПаттерны проектированияSingleton, Factory, Strategy — назначение, не заучивать 23 названияООП / SOLID, паттерны
Java CoreJVM, JDK, bytecode, OOMOOM: heap и metaspace; читать текст исключения и стектрейс1, 23, 21
Java CoreJavaBean, immutable, pass-by-valueВ Java передаётся копия ссылки; объект меняется через ссылку26, 15, 16
ООПSOLID, overload/override, super, thisКратко по буквам S-O-L-I-D; super — родитель, this — текущий объект18, 16
ООПabstract, interface, static, nestedstatic — принадлежит классу; nested — класс внутри класса18, 141
Stringпул, equals, StringBuilderЛитералы в string pool; == для строк почти всегда ошибка296, 15
Enumordinal, switchordinal хрупок при изменении порядка константКонструкции §Enum
CollectionsArrayList / LinkedList / HashMapСложность операций; hashCode+equals для ключей Map24, 231
Objectequals/hashCode, clone, instanceofКонтракт: равные объекты → одинаковый hash; record генерирует equals18
Exceptionschecked/unchecked, try-with-resourcestry (Stream s = ...) закрывает ресурс автоматически21, 211
МногопоточностьThread/Runnable, wait/notifywait/notify только внутри synchronized на том же мониторе23, 298
Stream APIStream, lazyПромежуточные операции не выполняются без terminal295
Hibernate / JPAentity, cascade@Entity — таблица; cascade — каскад операций на связях293, 22

ITVDN — Middle / Senior (кратко)

ТемаЧто обычно проверяютГде в энциклопедии
Агрегация и композиция«часть» живёт отдельно и вместе с целымООП, паттерны
Java 8+лямбды, Stream, Optional295, 11
Classloader, memory areasзагрузка классов, heap, stack, metaspace23, 15
Ковариантность, castingприведение типов, ClassCastExceptionООП, 19
Unchecked в фреймворкахSpring оборачивает checked в runtime-исключения21, 27
ConcurrentHashMap, JMMвидимость между потоками, пулы23, 298
GC, профилирование, модули 9+G1/ZGC на словах; jcmd/heap dump — 30223, 121, 300
Spring, микросервисы, Kafkaвне «чистого Core»27, 110

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


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

ТемаГлава
Spring Boot, REST, Security27, практика 271274
Hibernate, JPA, JDBC22, 293
Maven / Gradle, CI12, 292
Микросервисы, брокеры110

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


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

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

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

Legacy. Если спрашивают Date — в новом коде java.time (11, 300).

Spring отдельно. Цепочка 271272274303 — типичный REST-стек на собеседовании.


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

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

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).