Java Core Flashcards
Что такое байт-код
Это платформенно независимые инструкции, которые являются результатом компиляции Java программы и исполняются JVM.
Какой размер int переменной в 32 и 64 разрядных JVM
int 4 byte
Какие типы данных есть в Java
byte (1) short (2) char(2) int (4) long (8) double (8) float (4) boolean (depend on JVM 1-4)
Возникновение потери точности
int-> float, long-> float, long->double
Что передается по ссылке, а что по значению
Переменные простых типов по значению, все остальное по ссылке.
Что такое Autoboxing и Unboxing?
Это преобразование простых типов в обьектные
Какие блоки инициализации есть в Java
Статические и не статические
Когда вызываются блоки инициализации?
Статические при загрузке классов, вызов идет в порядке расположения в классе.
Не статические перед каждым вызовом любого конструктора, вызов идет в порядке расположения в классе.
Для каких целей используются блоки инициализации и в каких случаях?
Статические блоки - используются когда нужно сложно, с дополнительной логикой инициализировать статические поля.
Не статические - используются для инициализации полей экземпляра, выполнения дополнительной логики для ВСЕХ конструкторов.
Можем ли обьявить класс static?
Да, если это вложенный класс (static nested class).
Можем ли мы обьявить статический метод в интерефесе?
Нет, в 8ке да
Могут ли статические методы иметь доступ к нестатическим переменным в Java?
Нет ошибка компиляции
Как получить доступ к статическим членам класса в Java?
Имя класса, точка имя метода или имя переменной
Можно ли переопределить (override) статический метод в Java?
Нет
Как сериализовать статические переменные в Java?
Во време сеарилизации, так же как transient переменные, статические поля не сериализуются.
После десеарилизации статические поля будут содержать значения по умолчанию.
Что такое статический импорт?
Это импорт статических методов и переменных. Доступен с 5 версии Java&
При таком импорте не нужно использовать имя класса для вызова статического метода или переменной.
import static com.abc.Employee.*
Чем отличаются операторы & и &&?
& - битовый оператор.
&& - логический оператор.
& - всегда проверяет два значение
&& - проверяет сначала левое значение, если оно false, тогда второе даже не вычисляется.
Какие модификаторы доступа используются для класса?
public и default.
public - виден все.
default - виден исключительно в одном пакете
Какие модификаторы доступа применяются к методам
public
default
protected
private
Что такое final модификатор?
Для класса: запрещает наследоваться от этого класса.
Для метода: переопределять (override).
Для переменной: делает из переменной константу.
Для чего используется оператор instanceof?
Для проверки типа объекта. Если класс проверяемого объекта совпадает или является наследником целевого типа возвращает true.
Что возвращает оператор instanceof если проверяемый объект - null?
NPE - не будет брошен.
Вернет false.
Какие значения могут быть использованы в switch-case операторе?
Строки(Java 7+), перечисления Enum, int
Объясните использование break оператора в switch-case выражении?
Если не использовать break, тогда после нахождения валидного case, будут выполнены все последующие case выражения до первого break.
Какое отличие между абстрактным классом и интерфейсом?
АК содержит конкретные методы, АК любые модификаторы кроме private abstract, переменные любые модификаторы, наследуется только от одного класса
Зачем использовать абстрактные классы?
Для ситуаций, когда нужно частично реализовать обязанности класса, а часть передать наследникам, которые знают детали реализации методов для себя.
Можно ли создать конструктор абстрактного класса?
Да можно. Но создать объект через new нельзя.
Может ли класс быть abstract final?
Нет это ошибка компиляции
Зачем используется ключевое слово super?
Для доступа к членам родительского класса
Чем отличается super() от this()?
super() - вызов конструктора родительского класса
this() - вызов перегруженного (overload) конструктора
Как создать экземпляр перечисления?
Никак перечисления не имею public конструкторов
Может ли Enum наследоваться от каких-то классов?
Нет, они стандартно наследуются от класса java.lang.Enum
Как итерироваться по перечислениям?
Используя метод values()
Объясните что такое аннотации?
Это форма метаданных, которая содержит информацию о программе, но не является частью программы.
Как создать аннотацию?
@interface AnnotationName
Какие вы знаете аннотации, которые используются в JDK?
@Deprecated @Override @SuppressWarnings @SafeVarargs @FunctionalInterface
Что такое мета-аннотация?
Это аннотация для аннотаций. @Retention @Target @Inherited @Repeatable
На какие части разделено виртуальное пространство Java?
Stack, Heap, Permanent Generation, Code Cache
Permanent Generation - хранятся загруженные классы.
Heap - хранятся все создаваемые объекты.
Code Cache - кешируется скомпилированный платформенно-зависимый код, если включена JIT-компиляция.
Что произошло с Java memory model в Java 8?
MaxPermSize убрали MaxMetaspaceSize добавили
Как можно самостоятельно удалить объект из Heap и освободить память?
Нельзя самостоятельно удалить объект из Heap, можно присвоить ему null, и тогда если нет ссылок на этот объект сборщик мусора его сам удалит.
Что такое сборщик мусора в Java?
Это автоматический процесс, который управляет памятью в Java.
С какой частью памяти работает сборщик мусора в Java
C Heap(NewGEN(Eden+Survivor) + OLD GEN)
Какой объект может уничтожить сборщик мусора?
На который никто не ссылается
Как принудительно вызвать сборщик мусора?
System.gc();
Runtime.getRuntime().gc();
Что такое finalize() где он описан и зачем используется?
Этот метод объявлен в классе Object, вызывается перед уничтожением объекта, используется для освобождения ресурсов.
Можно отключить вызов этого метода Runtime.getRuntime().runFinalizersOnExit(false)