Java — Вопросы для собеседований
Проектирование бэкенда
Паттерны устойчивости, стратегия кеширования, ограничение частоты запросов, идемпотентность, circuit breaker, graceful shutdown и выбор между REST, gRPC и очередями.
8 вопросов
Сборка проекта
Maven против Gradle, жизненный цикл Maven, области зависимостей и структура многомодульного проекта.
4 вопросов
Коллекции
Фреймворк коллекций — типы List/Set/Map, ArrayList и LinkedList, компараторы и копирование.
14 вопросов
Коллекции глубже
Итераторы, неизменяемые коллекции, деки и очереди, ConcurrentModificationException, PriorityQueue, NavigableSet, sequenced-коллекции и LinkedHashMap.
8 вопросов
Многопоточность
Потоки, синхронизация, взаимоблокировки, volatile и примитивы координации wait/notify.
13 вопросов
java.util.concurrent
Явные блокировки и реентерабельность, объекты Condition, CAS и атомики, синхронизаторы и конкурентные коллекции, включая ConcurrentHashMap.
9 вопросов
Основы языка
Возможности Java, метод main, примитивы и обёртки, static и instance, final/finally/finalize.
9 вопросов
Паттерны проектирования
Распространённые паттерны проектирования в Java — singleton, factory, builder и внедрение зависимостей.
11 вопросов
Равенство и хеширование
Контракт equals/hashCode, == и equals(), типичные ошибки равенства и хеширования.
3 вопросов
Исключения
Проверяемые и непроверяемые исключения, throw и throws, порядок catch и multi-catch, цепочки причин, try-with-resources и подавленные исключения.
15 вопросов
Executors и пулы потоков
Фреймворк Executor, Runnable против Callable, подбор размера пула, политики отказа, CompletableFuture и ForkJoinPool.
8 вопросов
Сборка мусора
Поколенческая сборка, System.gc(), низколатентные сборщики, типы ссылок, утечки памяти при наличии GC, настройка и диагностика сборки мусора.
10 вопросов
Обобщения
Сырые типы, обобщённые методы, стирание типов, ограниченные параметры типа, wildcards, PECS и загрязнение кучи.
9 вопросов
JVM и память
JVM/JRE/JDK, платформонезависимость, выполнение байт-кода, области памяти и сборка мусора.
9 вопросов
Функциональная Java
Лямбды, функциональные интерфейсы, ссылки на методы, основы обобщений и Optional.
7 вопросов
Современные возможности языка
Records, sealed-типы, паттерн-матчинг в instanceof и switch, record-паттерны, текстовые блоки и вывод типов.
7 вопросов
ООП
Абстрактные классы и интерфейсы, перегрузка и переопределение, вложенные классы и проблема ромба.
12 вопросов
Производительность JVM
JIT-компиляция, чтение байткода, виртуальная и статическая диспетчеризация, escape-анализ, AOT-кеширование классов и профилирование работающей JVM.
9 вопросов
Доступ к данным
Доступ к базам данных из Java — JDBC, statements и параметризованные запросы.
6 вопросов
Примитивы и обёртки
Примитивные типы и их обёртки, autoboxing, кеш Integer, массивы и почему Java не является чисто объектным языком.
5 вопросов
Сериализация и рефлексия
Сериализация и десериализация, ключевое слово transient и Reflection API.
4 вопросов
Spring
Фреймворк Spring — IoC-контейнер, внедрение зависимостей, скоупы и жизненный цикл бинов.
6 вопросов
Spring Boot
Автоконфигурация и условные бины, Actuator, Spring MVC против WebFlux, цепочка фильтров Spring Security и централизованная обработка исключений в REST.
9 вопросов
Stream API
Конвейеры Stream — промежуточные и терминальные операции, ленивость, map против flatMap, коллекторы, reduce против collect, параллельные стримы и gatherers.
12 вопросов
Строки
Пул строк, неизменяемость строк, StringBuilder и StringBuffer, неизменяемые классы.
5 вопросов
Тестирование
JUnit 5, Arrange-Act-Assert, цикл TDD, тест-дублёры Mockito, нестабильные тесты, мутационное тестирование, контрактные и интеграционные тесты.
8 вопросов
Виртуальные потоки (Loom)
Виртуальные потоки против платформенных, потоки-носители и pinning, Scoped Values как финальная замена ThreadLocal и Structured Concurrency, пока это ещё preview-API.
7 вопросов