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
Java Interview Tasks
Photo
Ответ к вопросу про хеш:
1) Если класс не immutable и метод расчета хеш-код зависит от полей объекта , то такой хеш код скорее всего не годится, так как после изменения полей объекта, хеш меняться не будет - это обычно приводит к проблемам
2) Если класс неизменяемый, то первой проблемы нет, зато есть concurrency баг - поле hash никак не синхронизировано, и внутри метода hashcode состояние этого поля меняется под гонкой => могут быть разные эффекты:
- пересчет hashcode может вызваться несколько раз, если поток увидит в поле hash 0
- в методе hashcode два чтения поля hash, может возникнуть ситуация когда эти два чтения будут разные, например даже так: первый раз прочитается поле и поток увидет не ноль , а второй раз в return увидит 0
Похожий код был в старых версиях jdk в классе String, вот подробности - https://bugs.openjdk.org/browse/JDK-8166842
👍13🔥3🐳3❤‍🔥11
Задача для супер сеньоров: что напечатается в результате выполнения этого кода?
🔥10🐳1
Что напечатается в результате выполнения этого кода?
Anonymous Quiz
39%
0
17%
1
11%
2
17%
3
9%
4
5%
5
2%
10
👍13🤔7😁6🔥3🐳3
Задача для супер сеньоров, часть 2, что напечатается?
👍8🔥4👏1
Задача для супер сеньоров, часть 2, что напечатается?
Anonymous Quiz
41%
0
14%
1
11%
2
18%
3
11%
4
5%
5
🔥14👏1
Задача для супер сеньоров, часть 3, что напечатается?
🔥8👍4👏1
Задача для супер сеньоров, часть 3, что напечатается?
Anonymous Quiz
22%
0
6%
1
7%
2
8%
3
21%
4
23%
5
13%
"null"
👍10🔥7🫡7
Что напечатается?
👍8🔥3
🔥10😱3👍2👏1
Что напечатается в результате выполнения кода?
🤔7🔥5👍1
Что напечатается в результате выполнения кода?
Anonymous Quiz
26%
ничего
32%
test
29%
будет эксепшен
13%
узнать ответ
🔥9👏1
что напечатает код?
👍5🔥5👎1🐳1
🔥8🆒4👍3👎3🐳1
Ответ на вопрос про различные блокировки:
Частый вопрос на собеседовании про несколько вызовов lock у ReentrantLock и
acquire у Semaphore внутри одного треда
Как видно из задач выше, в случае ReentrantLock проблем не возникнет, и
второй lock не заблокирует тот же самый поток.
Semaphore, наоборот, заблокирует на втором вызове.
syncronized работает так же, как и ReentrantLock - не заблокирует при втором вызове.
👍7🔥4
Выводы после вопросов про разные варианты map и операции с null (https://t.me/java_interview_tasks/209):
Надо работать аккуратно, когда вы не знаете реализацию map (например, map приходит в метод как параметр), возможно вам нужно добавлять
проверки на null перед операциями с map, либо если вы модифицируете map, надо убедиться что map mutable (как вариант создать new HashMap и сложить туда все элементы из мапы которая пришла в метод, а потом уже модифицировать новую мапу)
👍6🔥3👏1
Пример такого небезопасного кода:
👍5🆒3🔥2🕊1🐳1
Упражнение для читателей - пофиксить все баги в этом коде, при учете того что в метод могут прийти любые параметры
👍7🐳3👏1
Сохранится ли customer в базе?
👍7
Сохранится ли customer в базе?
Anonymous Quiz
50%
Сохранится
41%
Не сохранится
9%
Узнать ответ
👍7🔥6👏1