Какие из приведенных утверждений верны?
Anonymous Quiz
9%
Класс-наследники Set-интерфейса подходят для приложений с доступом к коллекциям на основе индексов
78%
Для реализации функционала, основанного на очередях, больше подходит LinkedList, чем Map
7%
Коллекции Queues концептуально больше похожи на Sets, чем на Lists или Maps
6%
Концептуально механизм java.util.Properties больше похож на List, чем на Map
Какие исключения будут брошены методом main?
Anonymous Quiz
45%
IndexOutOfBoundsException
20%
Код не скомпилируется
28%
NullPointerException
7%
ClassCastException
Чем отличаются операторы & и &&, | и ||?
Anonymous Quiz
10%
Операторов & и | в Java нет
39%
& и | - унарные операторы, && и || - бинарные
51%
& и | всегда проверяют оба операнда на истинность, && и || - не всегда
Пояснение к предыдущему вопросу👆
👨🏻💻 Операторы & и |применяются как побитовое «И» и «ИЛИ» соответственно, если операнды целочисленные, и как логические «И» и «ИЛИ», если операнды булевы. При этом & и |, в случае логического выражения, проверяют оба своих операнда на истинность.
Их сокращенные версии, &&и ||, оптимизированы – «И» не проверяет на истинность второй операнд, если первый «ЛОЖЬ», «ИЛИ» не проверяет второй операнд, если первый «ИСТИНА».
Это делает их полезными для оптимизации кода и позволяет избежать NullPointerExceptionв тех случаях, когда второй операнд-выражение может его инициировать (в первом операнде размещают проверку на null-значение).
Java задачи с собеседований
👨🏻💻 Операторы & и |применяются как побитовое «И» и «ИЛИ» соответственно, если операнды целочисленные, и как логические «И» и «ИЛИ», если операнды булевы. При этом & и |, в случае логического выражения, проверяют оба своих операнда на истинность.
Их сокращенные версии, &&и ||, оптимизированы – «И» не проверяет на истинность второй операнд, если первый «ЛОЖЬ», «ИЛИ» не проверяет второй операнд, если первый «ИСТИНА».
Это делает их полезными для оптимизации кода и позволяет избежать NullPointerExceptionв тех случаях, когда второй операнд-выражение может его инициировать (в первом операнде размещают проверку на null-значение).
Java задачи с собеседований
Зачем нужны два survivor space?
Anonymous Quiz
27%
Чтобы постоянно дефрагментировать эту область памяти
26%
Такое разделение нужно только GC типа G1 для разбиения области памяти на фрагменты
17%
Чтобы обеспечить многопоточность самого приложения
30%
Чтобы GC работал с каждым в параллельных потоках, увеличивая скорость очистки
Пояснение к предыдущему вопросу👆
👨🏻💻В survivor space находятся объекты, которые пережили больше одного прохода GC, но меньше 15 (по умолчанию это порог, после которого объект отправляется к долгожителям в Old Generation). После проходов GC в этой области возникает проблема фрагментации – постоянно возникают «дырки» от удаленных объектов и нужно «уплотнять» их расположение в памяти для большей производительности.
Для этого данная область делится на две и каждый проход сборщика все элементы из одной копируются в другую, фрагментируясь, а вторая остается пустой. На следующем проходе они вновь меняются местами, фрагментируя расположение объектов.
Java задачи с собеседований
👨🏻💻В survivor space находятся объекты, которые пережили больше одного прохода GC, но меньше 15 (по умолчанию это порог, после которого объект отправляется к долгожителям в Old Generation). После проходов GC в этой области возникает проблема фрагментации – постоянно возникают «дырки» от удаленных объектов и нужно «уплотнять» их расположение в памяти для большей производительности.
Для этого данная область делится на две и каждый проход сборщика все элементы из одной копируются в другую, фрагментируясь, а вторая остается пустой. На следующем проходе они вновь меняются местами, фрагментируя расположение объектов.
Java задачи с собеседований
Что выведет следующий код?
Anonymous Quiz
15%
В ходе выполнения будет брошено исключение ClassCastException
11%
I'm a Daddy
16%
Код не скомпилируется
57%
It's me!
Пояснение к предыдущему вопросу👆
👨🏻💻В коде используется повышающее преобразование, когда экземпляр класса Meсоздается под ссылку родительского класса Daddy.
Не произойдет ни ошибки компиляции, ни исключения во время выполнения. Однако и при обращении по ссылке типа Daddy, и по ссылке типа Me будет вызван метод класса Me, так как сам объект относится именно к этому классу.
Java задачи с собеседований
👨🏻💻В коде используется повышающее преобразование, когда экземпляр класса Meсоздается под ссылку родительского класса Daddy.
Не произойдет ни ошибки компиляции, ни исключения во время выполнения. Однако и при обращении по ссылке типа Daddy, и по ссылке типа Me будет вызван метод класса Me, так как сам объект относится именно к этому классу.
Java задачи с собеседований
Что выведет следующий код?
Anonymous Quiz
8%
Long
45%
Произойдет ошибка компиляции
4%
Number
43%
Object
Что выведет следующий код?
Anonymous Quiz
33%
truetruetrue
30%
falsefalsefalse
7%
truefalsetrue
30%
falsefalsetrue
Пояснение к предыдущему вопросу👆
👨🏻💻 Конкатенация строк при помощи оператора «+» и метода concat отличается по своей реализации. Оператор «+», если разложить код дизассемблером и проанализировать, развернется в нечто вроде
String s1 = new StringBuilder()
.append(s1)
.append(s2)
.toString();
При этом s1 и s2 неявно преобразуются в String (т. е. null -> «null») и NullPointerException’а не возникнет. В случае же с concat оно будет брошено, т. к. метод вызывается у null-объекта.
Поэтому первые две строки отработают как ожидается. Третья строка успешно пройдет компиляцию, т. к. null-объект явно преобразовывается в строку со значением «null».
Java задачи с собеседований
👨🏻💻 Конкатенация строк при помощи оператора «+» и метода concat отличается по своей реализации. Оператор «+», если разложить код дизассемблером и проанализировать, развернется в нечто вроде
String s1 = new StringBuilder()
.append(s1)
.append(s2)
.toString();
При этом s1 и s2 неявно преобразуются в String (т. е. null -> «null») и NullPointerException’а не возникнет. В случае же с concat оно будет брошено, т. к. метод вызывается у null-объекта.
Поэтому первые две строки отработают как ожидается. Третья строка успешно пройдет компиляцию, т. к. null-объект явно преобразовывается в строку со значением «null».
Java задачи с собеседований