Что важно знать
- Загрузчики классов делегируют родителю; свой загрузчик — плагины, серверы приложений.
- JIT компилирует горячий код после прогрева: инлайнинг, удаление проверок, escape analysis.
- Наивный замер времени в цикле почти всегда врёт — JMH.
Class loaders, интерпретация и JIT-компиляция, бенчмаркинг на JMH.
Практика. Написать JMH-бенчмарк для двух реализаций и объяснить ловушки (мёртвый код, прогрев).
Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.
Вложенность: JVM исполняет байткод, JRE = JVM + стандартные библиотеки для запуска, JDK = JRE + инструменты разработки.
Полный разборClassLoader находит байт-код и превращает его в класс. Иерархия: Bootstrap (ядро JDK) → Platform (модули платформы) → Application (classpath). Модель parent-first: запрос сначала идёт к родителю, и только если тот не нашёл — загрузчик ищет сам.
Полный разборНет прогрева — меряется интерпретатор, а не скомпилированный код. Результат не используется — JIT выбрасывает вычисление, меряется пустой цикл. Константный вход — выражение сворачивается при компиляции. Плюс шум GC, кэшей, частоты процессора.
Полный разборJIT компилирует часто выполняемые участки байткода в машинный код прямо во время работы программы.
Полный разборJMH (Java Microbenchmark Harness) от разработчиков OpenJDK: учитывает прогрев, форки JVM, устранение мёртвого кода, свёртку констант, статистику по итерациям.
Полный разборJIT выясняет, покидает ли объект метод или поток. Если нет — скалярная замена: объект разбирается на поля в регистрах, аллокация исчезает. Плюс снятие блокировок на объекте, не видимом другим потокам.
Полный разборЖизненный цикл класса (loading/linking/initialization), иерархия загрузчиков с делегированием, триггеры инициализации и изоляция.
Tiered compilation C1/C2, ключевые оптимизации JIT (inlining, escape analysis), деоптимизация и прогрев, корректные микробенчмарки на JMH.
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.