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
Ответ к вопросу про разницу между interrupted() и isInterrupted() :
Метод interrupt() выставляет флаг прерывания на конкретном потоке, указывая, что ему следует остановиться. Ставит значение флага true.
Статический метод Thread.interrupted() возвращает значение флага прерывания для текущего потока. После проверки всегда присваивает значение флага false и запускает поток.
Метод isInterrupted() возвращает значение флага прерывания для того объекта, на котором вызван. Не запускает поток.
🔥12👍2
Задача:
Реализуйте функцию для проверки сбалансированности двоичного дерева поиска. Сбалансированное дерево - это дерево, в котором высота поддеревьев различается не более чем на единицу.
👍11🔥31
Чему равны d1,d2 ?
👍7🤡5🤮4🔥2🤔1
Что не так в этом многопоточном коде?
😁12🔥4🥱1
Основная проблема в том , что код по факту не является многопоточным, вызывается метод Feature.get(), который блокируется до тех пор, пока не отработает код внутри callable и не вернется результат, поэтому в цикле блокируется по очереди каждый вызов и следующий запускается после того, как предыдущий уже завершен. Пример того, как можно сделать код многопоточным 👆
🔥11🥱6👍1👨‍💻1
👍5🔥4
В каком месте код упадет из-за NPE?
Anonymous Quiz
42%
.mapToDouble(v -> v)
30%
double x = v * v;
4%
System.out.println(x);
24%
не упадет
🔥15🤯5👍2
Есть ли проблемы в этом коде?
🔥11🤔4👍1
Ответ к коду про тред пул и строки из файла
(https://t.me/java_interview_tasks/316):
В тред пуле неограниченная по размеру очередь и все таски будут складываться в эту очередь,
Так как потока всего два и разгребать они очередь будут не успевать , если строк в файле довольно много будет, то случиться OutOfMemoryError.
👍5🔥32
Java Interview Tasks
В каком месте код упадет из-за NPE?
Здесь не будет никакой ошибки, так как стрим вообще не будет запущен из-за отсутствия терминальной операции.
Вопрос для читателей, упадет ли код с ошибкой (если да, то с какой?) если в этот стрим добавить .count() ?
🔥6👍2
Проверим мощь Virtual Threads: какой метод отработает быстрее?

# JMH version: 1.33
# VM version: JDK 21.0.1, OpenJDK 64-Bit Server VM, 21.0.1+12-29
# 16 cores
👍5🔥3😨1
Какой тред пул быстрее отработает?
Anonymous Quiz
17%
Fixed thread pool
34%
Cached thread pool
42%
Virtual thread pool
8%
Другой вариант
🤣11👍5🔥3🤯2🤡2👎1
Результаты на моем ноуте:
# JMH version: 1.33
# VM version: JDK 21.0.1, OpenJDK 64-Bit Server VM, 21.0.1+12-29
# 16 cores

Benchmark Mode Cnt Score Error Units
Test.testCachedExecutorTask200ms avgt 2 214770,671 us/op
Test.testFixedExecutorTask200ms avgt 2 4260257,133 us/op
Test.testVirtualExecutorTask200ms avgt 2 212590,221 us/op

Интерпретация:
Разницы между Cached и Virtual нет. Это было ожидаемо. На такой нагрузке работа с потоками занимает относительно малое время по сравнению с бизнес логикой (200 ms в тестах).
Разница между Fixed может быть объяснена тем что плохо подобрано количество потоков в пуле.
4🔥32👍1
👍5🔥3
👍9
какие тут проблемы могут быть? (метод get могут вызывать разные потоки одновременно)
🔥8👍2
проблемы в https://t.me/java_interview_tasks/328:

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

Вопрос к экспертам по jmm: надо ли поле lastUpdate делать volatile ?
🔥52👍1