Получи случайную криптовалюту за регистрацию!

Java Interview Tasks

Логотип телеграм канала @java_interview_tasks — Java Interview Tasks J
Логотип телеграм канала @java_interview_tasks — Java Interview Tasks
Адрес канала: @java_interview_tasks
Категории: Блоги
Язык: Русский
Количество подписчиков: 2.70K
Описание канала:

Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.
Автор канала - @alexzelentsov
По рекламе обращайтесь: @alexzelentsov , @Vatrusha_ksu

Рейтинги и Отзывы

3.67

3 отзыва

Оценить канал java_interview_tasks и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

2

2 звезд

0

1 звезд

0


Последние сообщения 3

2022-06-23 13:06:50 Разъяснение:
В конструктор BigDecimal(4.4) передаётся примитив double, в котором вместо 4.4 лежит
4.4000000000000003552713678800500929355621337890625
Поэтому объект BigDecimal будет хранить это число, а не 4.4

Вопрос к читателям: как переписать код, что бы результат стал точным (8.8) ?
1.4K viewsAlexander Zelentsov, 10:06
Открыть/Комментировать
2022-06-21 11:50:38
Вопрос для любителей точных вычеслений:
Что напечатает код?
``` BigDecimal result = new BigDecimal(4.4).add(new BigDecimal(4.4)); System.out.println(result); ```
Anonymous Quiz
0%
0
41%
8.8
46%
8.8000000000000000000
1%
9
0%
10
0%
42
0%
-1
11%
что-то другое
471 voters1.4K viewsAlexander Zelentsov, 08:50
Открыть/Комментировать
2022-06-14 11:34:56 Ответ к последнему вопросу:
Объявление массива как volatile не делает доступ к его элемента volatile.
Поэтому hb семантика тут не применима и никаких гарантий относительно исполнения дать нельзя
Правильный вариант - "0, 0", "1, 1", "0, 1", "1, 0"
Были вопросы откуда может взяться вариант "1, 0":
Тут происходит запись элементов в массив и их чтение под гонкой,
jmm не дает в этом случае каких то гарантий на порядок выполнения операций.
Например компилятор может выполнить запись в другом порядке,
отличающимся от порядка в коде, то есть сначала записать a[1] = 1 а потом a[0] = 1

Вот пример, когда volatile даёт гарантии видимости в другом треде: https://t.me/java_interview_tasks/53

Вопрос для читателей: что нужно сделать, что бы вариант (1,0) был запрещён?
1.3K viewsAlexander Zelentsov, 08:34
Открыть/Комментировать
2022-06-11 14:06:27
Какие значения могут напечаться?
Anonymous Quiz
9%
"0, 0", "1, 1"
17%
"0, 0", "1, 1", "0, 1"
46%
"0, 0", "1, 1", "0, 1", "1, 0"
13%
"1, 1"
14%
"0, 0"
299 voters1.4K viewsAlexander Zelentsov, 11:06
Открыть/Комментировать
2022-06-11 14:05:33
Какие значения могут напечататься?
(thread1 и thread2 запускаются одновременно в разных потоках)
1.4K viewsAlexander Zelentsov, edited  11:05
Открыть/Комментировать
2022-06-08 18:27:56 Ответ к вопросу про allMatch/anyMatch:

Малоизвестный факт, в документации написано следующее:

boolean allMatch(Predicate predicate);

return true if either all elements of the stream match the
provided predicate or the stream is empty, otherwise false
и
boolean anyMatch(Predicate predicate);

return true if any elements of the stream match the provided predicate, otherwise false

То есть allMatch() для пустого стрима вернет true, а anyMatch() вернет false.

Объяснить это можно так: для всех элементов пустого стрима любое условие выполнено.
В тоже время anyMatch вернет false, потому что нельзя найти элемент из коллекции, который удовлятворяет этому условию.

Такое поведение консистенто, например, для закона Де Моргана:
stream.allMatch(condition) равносильно !stream.anyMatch(!condition)
1.3K viewsAlexander Zelentsov, edited  15:27
Открыть/Комментировать
2022-06-06 11:50:07
Что напечатает код?
Anonymous Quiz
11%
true, true
13%
true, false
13%
false, true
62%
false, false
475 voters951 viewsAlexander Zelentsov, 08:50
Открыть/Комментировать
2022-06-06 11:49:23
Что напечатает код?
960 viewsAlexander Zelentsov, 08:49
Открыть/Комментировать
2022-06-05 11:04:05 Jugru выложили недавно несколько видосов, один из которых по тематике канала:


1.3K viewsAlexander Zelentsov, 08:04
Открыть/Комментировать
2022-06-02 12:42:01 Ответ на вопрос VolatileVsFinal (https://t.me/java_interview_tasks/140) :

Тут речь идет об одном из самых интересных разрешенных сценариев JMM. Это тот факт, что volatile поле не имеет final семантики.
Это означает, что если мы публикуем ссылку объекта под гонкой, то мы можем увидеть дефолтное значение для volatile поля
Поэтому в данном случае 0 вполне можно получить.

Этот эффект можно увидеть на некоторых платформах, например AArch64:
RESULT SAMPLES FREQ
-1 1,428,517,070 91.74%
0 7,105 <0.01%
42 128,534,641 8.25%
604 viewsAlexander Zelentsov, edited  09:42
Открыть/Комментировать