Нужно ли публиковать новости и какие-то интересные материалы?
Anonymous Poll
70%
можно
15%
не нужно
9%
мне пофиг
7%
узнать результаты
Ответ на вчерашнюю задачу очень подробно расписал @winogradoff :
https://t.me/c/1712587991/300
Спасибо!
https://t.me/c/1712587991/300
Спасибо!
Что может напечатать thread2?
Anonymous Quiz
31%
-1, -1 ; 1, 2
6%
1, 2
13%
1, 0 ; -1, -1 ; 1, 2
8%
1, 0 ; -1, -1 ; 1, 2 ; 0, 2
10%
другой вариант (пишите в комменты)
23%
узнать ответы
9%
1, 0 ; -1, -1 ; 1, 2 ; 0, 2 ; 0, 0
Java Interview Tasks
Что может напечатать thread2? (thread1 и thread2 запускаются одновременно в разных потоках)
Ответ на вчерашнюю задачу: тут проблема в том что публикация объекта небезопасна, в jmm есть раздел про публикацию объектов. Спецификация гарантирует безопасную публикацию объекта если его поля, которые инициализируются в конструкторе объявлены final. То есть в данном случае достаточно x1 и x2 объявить как final. (Тогда могут быть вариант -1,-1 и 1,2) Ещё есть нюанс про утечку объекта из конструктора. Про это будет отдельный вопрос позже.
Что весит больше HashMap или HashSet?
Anonymous Quiz
39%
HashMap
33%
HashSet
22%
одинаково
7%
узнать ответ
Java Interview Tasks
Что весит больше HashMap или HashSet?
Ответ на вчерашний вопрос:
HashSet весит чуть больше так как он реализован через HashMap
Детальнее:
java.util.HashSet object internals:
OFF SZ TYPE DESCRIPTION VALUE
0 8 (object header: mark) N/A
8 4 (object header: class) N/A
12 4 java.util.HashMap HashSet.map N/A
Instance size: 16 bytes
Видим что hashset содержит поле map java.util.HashMap. То есть вес его = 12 байт headers + reference ( в данном случае 4 (из за compressed oop)) на HashMap + вес hash map
java.util.HashMap object internals:
OFF SZ TYPE DESCRIPTION VALUE
0 8 (object header: mark) N/A
8 4 (object header: class) N/A
12 4 java.util.Set AbstractMap.keySet N/A
16 4 java.util.Collection AbstractMap.values N/A
20 4 int HashMap.size N/A
24 4 int HashMap.modCount N/A
28 4 int HashMap.threshold N/A
32 4 float HashMap.loadFactor N/A
36 4 java.util.HashMap.Node[] HashMap.table N/A
40 4 java.util.Set HashMap.entrySet N/A
44 4 (object alignment gap)
Instance size: 48 bytes
HashSet весит чуть больше так как он реализован через HashMap
Детальнее:
java.util.HashSet object internals:
OFF SZ TYPE DESCRIPTION VALUE
0 8 (object header: mark) N/A
8 4 (object header: class) N/A
12 4 java.util.HashMap HashSet.map N/A
Instance size: 16 bytes
Видим что hashset содержит поле map java.util.HashMap. То есть вес его = 12 байт headers + reference ( в данном случае 4 (из за compressed oop)) на HashMap + вес hash map
java.util.HashMap object internals:
OFF SZ TYPE DESCRIPTION VALUE
0 8 (object header: mark) N/A
8 4 (object header: class) N/A
12 4 java.util.Set AbstractMap.keySet N/A
16 4 java.util.Collection AbstractMap.values N/A
20 4 int HashMap.size N/A
24 4 int HashMap.modCount N/A
28 4 int HashMap.threshold N/A
32 4 float HashMap.loadFactor N/A
36 4 java.util.HashMap.Node[] HashMap.table N/A
40 4 java.util.Set HashMap.entrySet N/A
44 4 (object alignment gap)
Instance size: 48 bytes
Java Interview Tasks
Может ли напечататься что то кроме 20.2? (Свои варианты и причины пишите в комменты)
Ответ к вопросу про суммирование double:
Java использует для типа double числа с плавающей запятой. Они не совсем точны. Более простой пример: System.out.println(0.1d + 0.2d); выведет 0.30000000000000004. Если важна точность в расчетах то надо использовать BigDecimal
Java использует для типа double числа с плавающей запятой. Они не совсем точны. Более простой пример: System.out.println(0.1d + 0.2d); выведет 0.30000000000000004. Если важна точность в расчетах то надо использовать BigDecimal
Outofmemory это ?
Anonymous Quiz
6%
checked exception
34%
unchecked exception
54%
error
3%
что то другое
3%
узнать ответ
Ответ на последнюю задачу - https://t.me/java_interview_tasks/83
Список проблем:
1) дублирование строки “key”
2) map может быть null, нужна проверка
3) если этот код выполняется в многопоточной среде, то можно получить value = null внутри if, если другой поток вызовет map.remove(“key”) между вызовами map.containsKey(“key”) и map.get(“key”)
4) название метода не соответствует логике, лучше назвать, например, printKey
Если нашли какие то ещё проблемы, пишите в комментариях
Список проблем:
1) дублирование строки “key”
2) map может быть null, нужна проверка
3) если этот код выполняется в многопоточной среде, то можно получить value = null внутри if, если другой поток вызовет map.remove(“key”) между вызовами map.containsKey(“key”) и map.get(“key”)
4) название метода не соответствует логике, лучше назвать, например, printKey
Если нашли какие то ещё проблемы, пишите в комментариях
Telegram
Java Interview Tasks
Какие тут есть проблемы ?
👍4🤮2
Сколько вариантов с одинаковым результатом?
Anonymous Quiz
13%
Во всех вариантах одинаковые результаты
22%
2 одинаковых
19%
3 одинаковых
17%
Все разные
17%
Что за фигня?
12%
Узнать ответ
🔥8
Java Interview Tasks
Рассмотрим 4 варианта нахождения среднего значения в массиве
Ответ к задаче про нахождение среднего:
1 вариант будет сильно отличаться от остальных, так как оперирует с лонгами, и там будут переполнения
2 вариант и 3 отличаются между собой из-за разного порядка суммирования в обычном и параллельном стриме
Главный вопрос в том, почему отличается вариант 2 от варианта 4: doubleStream использует алгоритм, который делает суммирования таким образом, чтобы погрешность была минимальной, а цикл for суммирует в лоб
1 вариант будет сильно отличаться от остальных, так как оперирует с лонгами, и там будут переполнения
2 вариант и 3 отличаются между собой из-за разного порядка суммирования в обычном и параллельном стриме
Главный вопрос в том, почему отличается вариант 2 от варианта 4: doubleStream использует алгоритм, который делает суммирования таким образом, чтобы погрешность была минимальной, а цикл for суммирует в лоб
❤9
Что возвращает метод Map.of()?
Anonymous Quiz
46%
HashMap
4%
TreeMap
7%
LinkedHashMap
25%
EmptyMap
19%
другой ответ
Java Interview Tasks
Что возвращает метод Map.of()?
Ответ на задачу про Map.of():
В доках не указана конкретная реализация, сказано следующее: Returns an unmodifiable map …
В java 17 реализация из класса ImmutableCollections.
Например: ImmutableCollections.EMPTY_MAP, new ImmutableCollections.Map1<>(k1, v1) и тд.
Эти мапы эффективнее.
Если у вас мапа не будет меняться, то лучше использовать эти реализации.
В доках не указана конкретная реализация, сказано следующее: Returns an unmodifiable map …
В java 17 реализация из класса ImmutableCollections.
Например: ImmutableCollections.EMPTY_MAP, new ImmutableCollections.Map1<>(k1, v1) и тд.
Эти мапы эффективнее.
Если у вас мапа не будет меняться, то лучше использовать эти реализации.
👍15