en
Feedback
Java Interview Tasks

Java Interview Tasks

Open in Telegram

Реальные вопросы и задачи с собеседований. Оригинальный авторский контент. Актуальный материал. Уровень вопросов от junior до supersenior. Автор канала - @alexzelentsov По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks

Show more
4 522
Subscribers
No data24 hours
-107 days
-2730 days
Posts Archive
Ответ на задачу про Map.of(): В доках не указана конкретная реализация, сказано следующее: Returns an unmodifiable map … В java 17 реализация из класса ImmutableCollections. Например: ImmutableCollections.EMPTY_MAP, new ImmutableCollections.Map1<>(k1, v1) и тд. Эти мапы эффективнее. Если у вас мапа не будет меняться, то лучше использовать эти реализации.

Что возвращает метод Map.of()?
Anonymous voting

Ответ к задаче про нахождение среднего: 1 вариант будет сильно отличаться от остальных, так как оперирует с лонгами, и там будут переполнения 2 вариант и 3 отличаются между собой из-за разного порядка суммирования в обычном и параллельном стриме Главный вопрос в том, почему отличается вариант 2 от варианта 4: doubleStream использует алгоритм, который делает суммирования таким образом, чтобы погрешность была минимальной, а цикл for суммирует в лоб

Сколько вариантов с одинаковым результатом?
Anonymous voting

Рассмотрим 4 варианта нахождения среднего значения в массиве
Рассмотрим 4 варианта нахождения среднего значения в массиве

Ответ на последнюю задачу - 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 Если нашли какие то ещё проблемы, пишите в комментариях

Какие тут есть проблемы ?
Какие тут есть проблемы ?

Outofmemory это ?
Anonymous voting

Ответ к вопросу про суммирование double: Java использует для типа double числа с плавающей запятой. Они не совсем точны. Более простой пример: System.out.println(0.1d + 0.2d); выведет 0.30000000000000004. Если важна точность в расчетах то надо использовать BigDecimal

Может ли напечаться что то кроме 20.2?
Anonymous voting

Может ли напечататься что то кроме 20.2? (Свои варианты и причины пишите в комменты)
Может ли напечататься что то кроме 20.2? (Свои варианты и причины пишите в комменты)

Ответ на вчерашний вопрос: 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

Что весит больше HashMap или HashSet?
Anonymous voting

Ответ на вчерашнюю задачу: тут проблема в том что публикация объекта небезопасна, в jmm есть раздел про публикацию объектов. Спецификация гарантирует безопасную публикацию объекта если его поля, которые инициализируются в конструкторе объявлены final. То есть в данном случае достаточно x1 и x2 объявить как final. (Тогда могут быть вариант -1,-1 и 1,2) Ещё есть нюанс про утечку объекта из конструктора. Про это будет отдельный вопрос позже.

Что может напечатать thread2?
Anonymous voting

Что может напечатать thread2? (thread1 и thread2 запускаются одновременно в разных потоках)
Что может напечатать thread2? (thread1 и thread2 запускаются одновременно в разных потоках)

Какие проблемы Вы видите в этом коде, почему ide подсвечивает warning и как исправить?
Какие проблемы Вы видите в этом коде, почему ide подсвечивает warning и как исправить?

Ответ на вчерашнюю задачу очень подробно расписал @winogradoff : https://t.me/c/1712587991/300 Спасибо!

Что напечатает код?
Anonymous voting

Что напечатает код?
Что напечатает код?