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
Чему равно значение переменной anyMatch?
Anonymous Quiz
24%
true
70%
false
6%
узнать ответ
👍71🔥1
Значение переменной allMatch равно true. Значение переменной anyMatch будет false

По спецификации Java Streams, allMatch возвращает true, если стрим не содержит элементов. Это связано с тем, что условие "все элементы удовлетворяют предикату" считается выполненным, если нет элементов, которые могли бы его не удовлетворить.
Результат выполнения:
Следовательно, значение переменной allMatch будет true.

Метод anyMatch проверяет, удовлетворяет ли хотя бы один элемент стрима заданному условию (в данном случае предикату, проверяющему, содержит ли строка символ "a").

По спецификации Java Streams, метод anyMatch возвращает false, если стрим не содержит элементов. Это связано с тем, что условие "хотя бы один элемент удовлетворяет предикату" не может быть выполнено в пустом потоке.

Следовательно, значение переменной anyMatch будет false.
👍18🔥4🙏1
👍4😢4🔥2
🔥5👍3👏3
Чему равны переменные 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