Java Interview Tasks
3.89K subscribers
185 photos
1 file
121 links
Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.

Автор канала - @alexzelentsov

По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks
Download Telegram
Чему равны переменные a и b?

Для d.equals(-0.0): false
Объяснение: Метод equals() для объектов типа Double сравнивает их значения, но в этом случае сравнение 0.0 и -0.0 возвращает false, поскольку equals() также учитывает знак.

Для d == -0.0: true
Объяснение: Оператор == сравнивает значения, и в Java 0.0 и -0.0 считаются равными несмотря на различные знаки, поэтому выражение возвращает true.

Таким образом, результаты выполнения данного кода:

d.equals(-0.0) вернет false
d == -0.0 вернет true

Давайте разберем, почему так сделано в Java.
Оператор == при сравнении примитивных типов (включая double) сравнивает их численные значения, игнорируя знак. Таким образом, 0.0 и -0.0 считаются равными, поскольку в контексте числовых вычислений они представляют одно и то же количество: нулевая величина.

Java использует стандарт IEEE 754 для представления чисел с плавающей точкой, в котором существуют два разных значения для нуля: +0.0 и -0.0. Однако, когда речь идет о сравнении значений, стандарт допускает равенство этих двух значений.

Метод equals() является методом класса Object и может быть переопределён. В случае класса Double, метод equals() не только сравнивает значения, но и учитывает знак числа.

Метод equals() в Double реализован так, что он воспринимает 0.0 и -0.0 как разные значения. Это сделано для поддержки точного различения, которое может быть важно в некоторых математических или инженерных расчётах. Например, в контексте некоторых алгоритмов или в области численной линейной алгебры знак может играть важную роль.
👍10🔥2👌2🙏1🕊1
Что напечатает код?
👍7🥰1🙏1
🐳5👍42🔥1
Ответ на вопрос про Multimap.forEach:
Правильный ответ 3, проще всего понять причину, если в forEach добавить типы параметров:
map.forEach((Integer key, String values) -> i.getAndIncrement());
Тогда видно, что "String values" это одно "value", а не "values", еще больше запутывает название параметра "values"
Для примера результат работы кода выше будет такой:
1=one
1=two
1=three
👍7🔥3🙏1
Что напечатает код?
👍5🔥1🙏1
👍4🔥1🙏1
Ответ на вопрос про Collectors.toList() vs Stream.toList():
Collectors.toList() возвращает ArrayList и поэтому shuffle отрабатывает корректно, но Stream.toList() всегда возвращает реализацию списка, которая не может быть изменена. И поэтому shuffle упадет с java.lang.UnsupportedOperationException.
Поэтому верный ответ - напечатается «2»
👍11🔥2🍓2
Что напечатает код при вызове конструктора?
👍4🔥1🙏1🍓1
Что напечатает код при вызове конструктора?
Anonymous Quiz
54%
true, true
16%
false, false
19%
false, true
7%
true, false
3%
узнать ответы
🔥6👍2🙏1
Ответ на вопрос про == для строк:
Правильный ответ - true, true
Здесь все строки это ссылки на один и тот же объект в пуле строк, пэтому сравнение == возвращает тру.
Про пул строк:
Когда в коде создается строка через строковый литерал (например, String s = "Hello";), JVM сначала проверяет пул строк. Если строка с таким же значением уже присутствует в пуле, то новый объект не создается. Вместо этого переменной s присваивается ссылка на уже существующий объект в пуле. Если же такой строки в пуле нет, JVM создает новый объект строки в пуле и возвращает ссылку на него.

Это поведение отличается от создания строк через оператор new (например, String s = new String("Hello");). В этом случае в куче всегда создается новый объект String, независимо от того, содержится ли такая же строка в пуле строк или нет.
👍113🔥2
Вы бросаете два кубика. Каждый кубик имеет 6 граней. Какова вероятность того, что сумма выпавших очков будет равна 6?
👍4🔥2👏2
Ответ на задачу про два кубика:
Каждый кубик имеет 6 граней, поэтому общее количество возможных комбинаций при броске двух кубиков: [ 6 * 6 = 36 ] Это означает, что при броске двух кубиков существует 36 возможных разных исходов.
Теперь определим все комбинации двух кубиков, которые в сумме дают 6. Рассмотрим все возможные пары чисел:
(1, 5)
(2, 4)
(3, 3)
(4, 2)
(5, 1)
Итак, у нас есть 5 благоприятных сочетаний, где сумма равна 6.

Вероятность того, что сумма выпавших очков будет равна 6, можно вычислить по формуле: [ P = число благоприятных исходов / общее количество исходов = 5/36 ]
Ответ:
Таким образом, вероятность того, что сумма очков на двух кубиках будет равна 6, составляет 5/36.
👍104🔥2
Можно ли создать конструктор у enum?
Anonymous Quiz
76%
Можно
22%
Нельзя
2%
Узнать ответ
👍5😢2🔥1🤔1
Может ли этот код выбросить AssertionError?
👍5🔥21
Может ли этот код выбросить AssertionError?
Anonymous Quiz
41%
может
51%
не может
8%
узнать ответ
👍5🔥2🙏2
Ответ на задачу про ассерт:
Если a равно NaN, то проверка if (a == 0.0) будет ложной, и будет AssertionError();, поскольку NaN не равен ни нулю, ни любому другому числу. В данном коде стоит добавить проверку if(Double.isNaN(a))
👍12🔥4😢1
С Новым годом 🎆🍾🎄🎁🎉
15🔥6🎉5🙏1
Что напечатает код? (Внутри try-catch выбрасывается эксепшен, а потом, при закрытии ресурса, вылетает еще один ексепшен)
🔥7👍32
🔥7👍3🙏2
Ответ на вопрос про try-catch-with-resources:
Напечатается "try", так как в случае когда вылетает ексепшн внутри try-catch и при закрытии ресурса, то второй эксепшен добавляется в поле suppressedExceptions в основном эксепшене.
🔥11🤔7👍4
Чему будет равно d3?
👍8😢3🔥2