Ответ
Я участвовал в собеседованиях с обеих сторон баррикады: как кандидат и как интервьюер. В среднем за последние годы это 5-10 собеседований в год в каждой роли.
Типичная структура собеседования на позицию Java-разработчика включает:
- Теоретический блок: вопросы по Java Core (коллекции, многопоточность, JVM).
- Практический блок: решение алгоритмических задач и написание кода, часто с акцентом на многопоточность.
- Системное проектирование: для senior-уровня — обсуждение архитектуры распределенных систем.
В качестве интервьюера я оцениваю не только технические знания, но и умение мыслить вслух, задавать уточняющие вопросы и предлагать trade-offs. Пример простого, но показательного вопроса на понимание основ:
// Что выведет этот код и почему?
public class Main {
public static void main(String[] args) {
String s1 = "Java";
String s2 = "Java";
String s3 = new String("Java");
System.out.println(s1 == s2); // true (пул строк)
System.out.println(s1 == s3); // false (разные объекты)
}
}