Ответ
Да, обязательно. Собеседование — это ценная обратная связь. Я систематизирую вопросы, которые вызвали затруднения, и создаю персональный план обучения для ликвидации этих пробелов.
Мой алгоритм действий:
- Анализ: Сразу после собеседования фиксирую темы, где были неточности (например, тонкости работы
CompletableFuture, детали сборки мусора в JVM). - Изучение: Углубляюсь в тему через документацию (Oracle Java Docs), авторитетные книги («Java Concurrency in Practice», «Effective Java») и технические статьи.
- Практика: Закрепляю теорию написанием кода, решением задач на LeetCode/HackerRank или созданием учебного проекта.
- Конспектирование: Веду технические заметки (например, в формате Markdown) для закрепления и быстрого повторения.
Пример для пробела в многопоточности:
// Тема: Правильная синхронизация доступа к shared mutable data
public class Counter {
private final AtomicLong count = new AtomicLong(0); // Вместо volatile/long
public void increment() {
count.incrementAndGet(); // Атомарная операция, решает проблему race condition
}
public long get() {
return count.get();
}
}
// Изучаю: разницу между volatile, synchronized, атомарными классами из java.util.concurrent.atomic.
Постоянное обучение и адаптация — ключевые навыки современного разработчика.