Java Interview Tasks
3.9K subscribers
185 photos
1 file
121 links
Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.

Автор канала - @alexzelentsov

По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks
Download Telegram
👍9
какие тут проблемы могут быть? (метод get могут вызывать разные потоки одновременно)
🔥8👍2
проблемы в https://t.me/java_interview_tasks/328:

1) метод load() будет вызываться несколько раз , если новые потоки будут приходить до того как doLoad загрузит данные => одни и те же данные будут грузится паралельно, что может вызвать проблемы, например оом, плюс к этому на каждый вызову будет создаваться новый тред
2) возможно подразумевается что эксепшен из метода load перехватится в методе get, но этого не будет, так как он был выброшен в другом треде

Вопрос к экспертам по jmm: надо ли поле lastUpdate делать volatile ?
🔥52👍1
Java Interview Tasks
какие тут проблемы могут быть? (метод get могут вызывать разные потоки одновременно)
Что бы понять нужен ли volatile над полем, проведем несколько тестов:
Будем использовать jcstress - https://openjdk.org/projects/code-tools/jcstress/
(https://youtu.be/uZfK-9ixxec?si=oE1Lqvp8_wxoLOuY)
Код двух экспериментов ниже:
🔥32👍1
👍3🔥3
👍3🔥3
Запускал эти тесты у себя локально, на jdk11:
java.specification.name Java Platform API Specification
java.specification.vendor Oracle Corporation
java.specification.version 11
java.vendor Amazon.com Inc.
java.version 11.0.19
java.vm.name OpenJDK 64-Bit Server VM
java.vm.vendor Amazon.com Inc.
java.vm.version 11.0.19+7-LTS
os.arch amd64
os.name Windows 11
os.version 10.0
🔥42
Результат без volatile
👏4
Результат с volatile
🔥3👏2
Progress.java
2.2 KB
Полный код теста
👍4🔥3
Какие потоки будут создаваться быстрее?
👍3🔥2🐳2
🔥7🐳3👍1
Результат получился ожидаемый. Виртуальные потоки создаются быстрее обычных как и ожидается.
👍11🔥32🐳1
Где будет исполнен метод doInternal?
👍5🔥4
Какие есть недостатки в этом коде?
🔥72🐳2👏1
Что напечатает код, если index = -1? (Разъяснение ответа будет завтра)
🔥71
👍9👎6🤔2
Тут проблема в приоритете операций, код выше эквивалентен такому:
if ((index >= 0 && s.charAt(index) == 'q') || s.charAt(index) == '\t')
Поэтому правильный вариант будет - StringIndexOutOfBoundsException, так как код дойдет до выполнения s.charAt(index) и упадет на нем
👍62🔥2