Ответ
Фокус на фундаментальные знания и их практическое применение.
Основные блоки:
- Java Core: JVM, сборка мусора, исключения, ООП, интерфейсы, дженерики,
equals/hashCode. - Многопоточность (Concurrency): Потоки,
synchronized,volatile,java.util.concurrent(ConcurrentHashMap,ExecutorService,CompletableFuture), deadlock/livelock. - Коллекции: Внутреннее устройство
HashMap,ArrayList, различияList/Set/Map, сложность операций O(1)/O(n). - Память: Heap/Stack, строковый пул, утечки памяти.
- Алгоритмы: Понимание Big-O нотации, базовые алгоритмы сортировки и поиска.
- Паттерны проектирования: Singleton, Factory, Builder, Observer. Уметь объяснить применение.
- Фреймворки (если релевантно): Spring (DI, IoC, MVC), основы Hibernate/JPA.
Пример типовой проблемы:
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
for (String s : list) {
if (s.equals("B")) {
list.remove(s); // Выбросит ConcurrentModificationException
}
}
Решение: Использовать Iterator и его метод remove(), либо CopyOnWriteArrayList, либо removeIf.
Практика: Решение задач на LeetCode (средняя сложность), разбор своих проектов.