JVM / JRE / JDK 😕 база
Чем JDK, JRE и JVM отличаются простыми словами?
JVM — «движок», исполняющий байт-код. JRE — JVM плюс библиотеки для запуска программ. JDK — JRE плюс инструменты разработчика (компилятор и др.).
JVM / JRE / JDK 😕 база
Зачем Java нужна JVM, а не запускается напрямую?
Код компилируется в универсальный байт-код, а JVM переводит его под конкретную ОС — отсюда принцип «написал один раз — запускай везде».
JVM / JRE / JDK 🤓 уверенно
Что такое JVM и за что она отвечает?
Виртуальная машина, которая загружает, проверяет и исполняет байт-код, управляет памятью и сборкой мусора.
JVM / JRE / JDK 🤓 уверенно
Назови основные компоненты JVM.
Загрузчик классов, области памяти (runtime data areas), исполнитель байт-кода (интерпретатор + JIT) и сборщик мусора.
JVM / JRE / JDK 🧐 глубоко
Как JVM исполняет программу от .class до результата?
JVM / JRE / JDK 🧐 глубоко
Какие особенности у HotSpot JVM?
JVM / JRE / JDK 😎 про
Как JVM управляет стеком и кучей во время выполнения?
JVM / JRE / JDK 😎 про
Опиши полный процесс загрузки класса в JVM.
Загрузчики классов 😕 база
Что такое загрузчик классов простыми словами?
Компонент, который находит .class-файл и подгружает класс в память JVM, когда он впервые понадобился.
Загрузчики классов 😕 база
Почему классы грузятся не сразу, а по мере надобности?
Ленивая загрузка экономит память и ускоряет старт — грузится только то, что реально используется.
Загрузчики классов 🤓 уверенно
Какие три основных загрузчика классов есть в JVM?
Bootstrap (ядро JDK), Platform/Extension (расширения) и Application/System (классы вашего приложения с classpath).
Загрузчики классов 🤓 уверенно
Какой загрузчик грузит твои собственные классы?
Application (System) ClassLoader — он отвечает за классы с classpath приложения.
Загрузчики классов 🧐 глубоко
Как работает делегирование загрузки между загрузчиками?
Загрузчики классов 🧐 глубоко
Зачем и как писать собственный ClassLoader?
Загрузчики классов 😎 про
Что будет, если два загрузчика загрузят классы с одинаковым именем?
Загрузчики классов 😎 про
Как модель делегирования влияет на пространство имён классов?
Память (Heap / Stack) 😕 база
На какие основные области JVM делит память?
Грубо: стек (локальные переменные и вызовы методов, свой у каждого потока) и куча/heap (объекты, общая для всех потоков).
Память (Heap / Stack) 😕 база
Чем стек отличается от кучи простыми словами?
Стек — быстрый и временный, живёт на время вызова метода. Куча — где лежат объекты, пока на них есть ссылки.
Память (Heap / Stack) 🤓 уверенно
Что такое heap и что в нём хранится?
Область памяти для объектов; делится на молодое и старое поколения, очищается сборщиком мусора.
Память (Heap / Stack) 🤓 уверенно
Зачем нужен Metaspace?
Хранит метаданные классов (структуру, методы); вынесен из кучи и растёт в нативной памяти.
Память (Heap / Stack) 🧐 глубоко
Чем различаются Young и Old поколения в куче?
Память (Heap / Stack) 🧐 глубоко
Что такое Direct Memory и как он влияет на производительность?
Память (Heap / Stack) 😎 про
Как JVM хранит интернированные строки и чем это чревато?
Память (Heap / Stack) 😎 про
Какие ещё области runtime data areas есть помимо кучи и стека?
JIT-компиляция 😕 база
Что такое JIT-компиляция простыми словами?
JVM на ходу компилирует часто исполняемый байт-код в машинный код, чтобы он работал быстрее.
JIT-компиляция 😕 база
Почему Java «разогревается» со временем?
Сначала код интерпретируется, а горячие участки JIT компилирует и оптимизирует — поэтому после прогрева быстрее.
JIT-компиляция 🤓 уверенно
Как JIT повышает производительность?
Переводит горячий байт-код в нативный и применяет оптимизации (инлайнинг, удаление лишнего) на основе профиля выполнения.
JIT-компиляция 🤓 уверенно
Чем JIT отличается от AOT-компиляции?
JIT компилирует в рантайме по факту использования; AOT — заранее, до запуска (например GraalVM native image).
JIT-компиляция 🧐 глубоко
Какие оптимизации применяет JIT-компилятор?
JIT-компиляция 🧐 глубоко
Как JVM решает, какой метод компилировать JIT-ом?
JIT-компиляция 😎 про
Что такое деоптимизация и когда она происходит?
JIT-компиляция 😎 про
Чем отличаются реализации JIT в HotSpot и GraalVM?
Сборка мусора (GC) 😕 база
Что такое сборка мусора простыми словами?
Автоматическое освобождение памяти от объектов, на которые больше нет ссылок — не нужно удалять вручную, как в C.
Сборка мусора (GC) 😕 база
Как JVM понимает, что объект — «мусор»?
Если до объекта нельзя добраться по ссылкам от «корней» (GC roots), он недостижим и подлежит удалению.
Сборка мусора (GC) 🤓 уверенно
Назови основные типы сборщиков мусора.
Serial, Parallel, CMS (устаревает), G1 (по умолчанию) и низколатентные ZGC / Shenandoah.
Сборка мусора (GC) 🤓 уверенно
Как в общих чертах работает автоматическая сборка мусора?
GC находит недостижимые объекты и освобождает память, часто разделяя кучу на поколения для эффективности.
Сборка мусора (GC) 🧐 глубоко
Чем Mark-Sweep отличается от Copying-сборки?
Сборка мусора (GC) 🧐 глубоко
Плюсы и минусы G1 по сравнению с CMS?
Сборка мусора (GC) 😎 про
Какие приёмы используют сборщики для сокращения пауз?
Сборка мусора (GC) 😎 про
Чем ZGC / Shenandoah отличаются от классических сборщиков?
JMM (модель памяти) 😕 база
Зачем нужна модель памяти Java (JMM)?
Она задаёт правила, как изменения переменных одним потоком становятся видны другим — без неё многопоточность была бы непредсказуемой.
JMM (модель памяти) 😕 база
Почему один поток может «не видеть» изменения другого?
Из-за кэшей процессора и переупорядочивания: без явных гарантий значение может остаться в кэше ядра и не дойти до других потоков.
JMM (модель памяти) 🤓 уверенно
Зачем нужно ключевое слово volatile?
Гарантирует видимость переменной между потоками и запрещает переупорядочивание вокруг неё; но не делает составные операции атомарными.
JMM (модель памяти) 🤓 уверенно
Чем synchronized отличается от volatile?
synchronized даёт и взаимное исключение, и видимость для блока кода; volatile — только видимость одной переменной, без блокировки.
JMM (модель памяти) 🧐 глубоко
Что такое отношение happens-before? Приведи пример.
JMM (модель памяти) 🧐 глубоко
Что такое reordering и как он влияет на многопоточность?
JMM (модель памяти) 😎 про
Как final обеспечивает безопасную публикацию объекта?
JMM (модель памяти) 😎 про
Какие проблемы даёт неправильная ленивая инициализация в многопоточности?