Какие технические темы вы ожидаете на собеседовании Java-разработчика?

«Какие технические темы вы ожидаете на собеседовании Java-разработчика?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

На собеседовании для Java-разработчика среднего/старшего уровня обычно ожидаются вопросы по следующим ключевым темам:

  1. Java Core:

    • Коллекции (ArrayList vs LinkedList, HashMap vs ConcurrentHashMap).
    • Многопоточность (пулы потоков, synchronized, volatile, Lock).
    • Принципы ООП и SOLID.
    • Работа JVM (память, сборка мусора, classloader).
  2. Фреймворки и технологии:

    • Spring (Core, Boot, MVC, Data, Security).
    • Hibernate/JPA (отображение, кэширование, N+1 проблема).
  3. Паттерны проектирования (Singleton, Factory, Observer, стратегии применения).

  4. Алгоритмы и структуры данных (базовая сложность, реализация на доске/в IDE).

  5. Системы контроля версий (Git), базы данных и SQL.

Пример вопроса по коллекциям:

// HashMap не потокобезопасна, но быстрая для однопоточного доступа.
Map<String, Integer> hashMap = new HashMap<>();

// ConcurrentHashMap потокобезопасна за счёт сегментирования блокировок.
Map<String, Integer> concurrentMap = new ConcurrentHashMap<>();