Mediumclassloader

Что такое ClassLoader и как он работает?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

ClassLoader загружает .class-файлы в JVM, превращая их в java.lang.Class. Принцип parent-first: запрашивая класс, CL сначала делегирует родителю, и только если тот не нашёл — ищет сам.

Bootstrap ClassLoader   (native: java.lang.*, rt.jar / java.base)
        ↑
Platform ClassLoader    (jdk.*, с Java 9; ранее — Extension)
        ↑
Application ClassLoader (classpath приложения)
        ↑
Кастомные ClassLoader'ы (Tomcat, плагины, hot-reload)

Parent-first даёт безопасность: java.lang.String всегда из core, а не подделка.

Class<?> c = Class.forName("com.example.Foo"); // явная загрузка с инициализацией
Object obj = c.getDeclaredConstructor().newInstance();

Фазы: loadinglinking (verify, prepare, resolve) → initialization (static-инициализаторы). Кастомные CL нужны для плагинов, hot-reload и изоляции (отдельный CL на webapp в Tomcat).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.