java core Flashcards

1
Q

Какие задачи выполняет ClassLoader?

A

Загрузка классов, Проверка классов, Сопряжение, Инициализация классов, Кеширование классов

ClassLoader загружает классы в JVM по мере их необходимости из файлов .class, JAR-архивов, сети и других источников.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое fat JAR?

A

Файл со всеми зависимостями

Fat JAR содержит все необходимые библиотеки и классы для работы приложения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое проблема зависимостей в теневых JAR (shaded JAR)?

A

Конфликты или дублирование классов и библиотек при создании единого JAR-файла с включенными зависимостями

Проблема возникает из-за несовместимости версий библиотек.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Какое различие между интерфейсом и абстрактным классом?

A

Интерфейсы задают контракт, абстрактные классы задают базовое поведение

Интерфейсы используются для множественного наследования, абстрактные классы — для общего поведения и состояния.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое дефолтные методы в интерфейсах и абстрактных классах?

A

Методы, позволяющие добавлять новые функции в интерфейсы без нарушения совместимости

Ограничения: нельзя переопределять Object-методы и возникают конфликты при реализации одинаковых дефолтных методов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Различие между Optional.of() и Optional.ofNullable()?

A

Optional.of() выкинет исключение, Optional.ofNullable() подразумевает null

Optional.of() используется, чтобы явно указать, что передаваемое значение не должно быть null.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое аннотации и как они используются?

A

Метаданные, добавляемые к коду для предоставления дополнительной информации компилятору

Аннотации фактически представляют собой интерфейсы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое время жизни аннотации?

A

SOURCE/CLASS/RUNTIME

Определяет, на каком этапе аннотация доступна: на уровне исходного кода, во время компиляции или во время выполнения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

За что отвечает JVM?

A

Независимость Java-кода от платформы, автоматическое управление памятью, безопасность выполнения программ

Основные задачи: загрузка и выполнение байт-кода, управление памятью, обеспечение безопасности, обработка исключений, поддержка многопоточности.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Какова структура JVM?

A

ClassLoader, Runtime Data Areas, Execution Engine, Garbage Collector (GC)

ClassLoader загружает классы, Runtime Data Areas управляет памятью, Execution Engine интерпретирует или компилирует байт-код.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое рефлексия?

A

Механизм, позволяющий получать информацию о классах, методах, полях и конструкторах во время выполнения

Используется для доступа к непредусмотренному разработчиком функционалу.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Какие ограничения существуют при выполнении математических операций?

A

Переполнение, Деление на ноль, Ограниченная точность, Побитовые операции, Ошибки при сравнении дробных чисел

Важно следить за переполнением, точностью, делением на ноль и корректным сравнением чисел.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Как ускорить Java с помощью байт-кода?

A

JIT-компилятор компилирует байт-код в машинный код во время выполнения

Использование дополнительных флагов JVM и профилирования может значительно ускорить выполнение программы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как создать неизменяемый объект?

A

Класс должен быть final, все поля — private и final, отсутствие сеттеров

Если объект содержит ссылочные типы, нужно гарантировать, что эти объекты тоже не могут быть изменены.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Как происходит процесс компиляции?

A

Исходный код (.java) → javac → Байт-код (.class) → ClassLoader → Верификация байт-кода → JVM + JIT-компилятор → Выполнение

Процесс включает в себя несколько этапов от компиляции до выполнения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Сколько стандартных ClassLoader в HotSpot?

A

Три: Bootstrap, Extension, Application

Можно создать свой Custom ClassLoader для загрузки классов из нестандартных мест.