Java Core Flashcards

1
Q

Что такое байт-код

A

Это платформенно независимые инструкции, которые являются результатом компиляции Java программы и исполняются JVM.

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

Какой размер int переменной в 32 и 64 разрядных JVM

A

int 4 byte

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

Какие типы данных есть в Java

A
byte (1)
short (2)
char(2)
int (4)
long (8)
double (8)
float (4)
boolean (depend on JVM 1-4)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Возникновение потери точности

A

int-> float, long-> float, long->double

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

Что передается по ссылке, а что по значению

A

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

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

Что такое Autoboxing и Unboxing?

A

Это преобразование простых типов в обьектные

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

Какие блоки инициализации есть в Java

A

Статические и не статические

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

Когда вызываются блоки инициализации?

A

Статические при загрузке классов, вызов идет в порядке расположения в классе.
Не статические перед каждым вызовом любого конструктора, вызов идет в порядке расположения в классе.

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

Для каких целей используются блоки инициализации и в каких случаях?

A

Статические блоки - используются когда нужно сложно, с дополнительной логикой инициализировать статические поля.
Не статические - используются для инициализации полей экземпляра, выполнения дополнительной логики для ВСЕХ конструкторов.

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

Можем ли обьявить класс static?

A

Да, если это вложенный класс (static nested class).

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

Можем ли мы обьявить статический метод в интерефесе?

A

Нет, в 8ке да

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

Могут ли статические методы иметь доступ к нестатическим переменным в Java?

A

Нет ошибка компиляции

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

Как получить доступ к статическим членам класса в Java?

A

Имя класса, точка имя метода или имя переменной

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

Можно ли переопределить (override) статический метод в Java?

A

Нет

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

Как сериализовать статические переменные в Java?

A

Во време сеарилизации, так же как transient переменные, статические поля не сериализуются.
После десеарилизации статические поля будут содержать значения по умолчанию.

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

Что такое статический импорт?

A

Это импорт статических методов и переменных. Доступен с 5 версии Java&
При таком импорте не нужно использовать имя класса для вызова статического метода или переменной.
import static com.abc.Employee.*

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

Чем отличаются операторы & и &&?

A

& - битовый оператор.
&& - логический оператор.
& - всегда проверяет два значение
&& - проверяет сначала левое значение, если оно false, тогда второе даже не вычисляется.

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

Какие модификаторы доступа используются для класса?

A

public и default.
public - виден все.
default - виден исключительно в одном пакете

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

Какие модификаторы доступа применяются к методам

A

public
default
protected
private

20
Q

Что такое final модификатор?

A

Для класса: запрещает наследоваться от этого класса.
Для метода: переопределять (override).
Для переменной: делает из переменной константу.

21
Q

Для чего используется оператор instanceof?

A

Для проверки типа объекта. Если класс проверяемого объекта совпадает или является наследником целевого типа возвращает true.

22
Q

Что возвращает оператор instanceof если проверяемый объект - null?

A

NPE - не будет брошен.

Вернет false.

23
Q

Какие значения могут быть использованы в switch-case операторе?

A

Строки(Java 7+), перечисления Enum, int

24
Q

Объясните использование break оператора в switch-case выражении?

A

Если не использовать break, тогда после нахождения валидного case, будут выполнены все последующие case выражения до первого break.

25
Q

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

A

АК содержит конкретные методы, АК любые модификаторы кроме private abstract, переменные любые модификаторы, наследуется только от одного класса

26
Q

Зачем использовать абстрактные классы?

A

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

27
Q

Можно ли создать конструктор абстрактного класса?

A

Да можно. Но создать объект через new нельзя.

28
Q

Может ли класс быть abstract final?

A

Нет это ошибка компиляции

29
Q

Зачем используется ключевое слово super?

A

Для доступа к членам родительского класса

30
Q

Чем отличается super() от this()?

A

super() - вызов конструктора родительского класса

this() - вызов перегруженного (overload) конструктора

31
Q

Как создать экземпляр перечисления?

A

Никак перечисления не имею public конструкторов

32
Q

Может ли Enum наследоваться от каких-то классов?

A

Нет, они стандартно наследуются от класса java.lang.Enum

33
Q

Как итерироваться по перечислениям?

A

Используя метод values()

34
Q

Объясните что такое аннотации?

A

Это форма метаданных, которая содержит информацию о программе, но не является частью программы.

35
Q

Как создать аннотацию?

A

@interface AnnotationName

36
Q

Какие вы знаете аннотации, которые используются в JDK?

A
@Deprecated
@Override
@SuppressWarnings
@SafeVarargs
@FunctionalInterface
37
Q

Что такое мета-аннотация?

A
Это аннотация для аннотаций.
@Retention
@Target
@Inherited
@Repeatable
38
Q

На какие части разделено виртуальное пространство Java?

A

Stack, Heap, Permanent Generation, Code Cache
Permanent Generation - хранятся загруженные классы.
Heap - хранятся все создаваемые объекты.
Code Cache - кешируется скомпилированный платформенно-зависимый код, если включена JIT-компиляция.

39
Q

Что произошло с Java memory model в Java 8?

A

MaxPermSize убрали MaxMetaspaceSize добавили

40
Q

Как можно самостоятельно удалить объект из Heap и освободить память?

A

Нельзя самостоятельно удалить объект из Heap, можно присвоить ему null, и тогда если нет ссылок на этот объект сборщик мусора его сам удалит.

41
Q

Что такое сборщик мусора в Java?

A

Это автоматический процесс, который управляет памятью в Java.

42
Q

С какой частью памяти работает сборщик мусора в Java

A

C Heap(NewGEN(Eden+Survivor) + OLD GEN)

43
Q

Какой объект может уничтожить сборщик мусора?

A

На который никто не ссылается

44
Q

Как принудительно вызвать сборщик мусора?

A

System.gc();

Runtime.getRuntime().gc();

45
Q

Что такое finalize() где он описан и зачем используется?

A

Этот метод объявлен в классе Object, вызывается перед уничтожением объекта, используется для освобождения ресурсов.
Можно отключить вызов этого метода Runtime.getRuntime().runFinalizersOnExit(false)