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

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

По рекламе: @alexzelentsov
Download Telegram
Devoxx Belgium 2026 только закончилась:

https://youtube.com/playlist?list=PLKlmOVksNGoE&si=_BvX8q8qFK4hR4ig
🔥3
Что произойдет, если поток вызовет tryLock(), а замок уже занят другим потоком?
ReentrantLock lock = new ReentrantLock();
// ... где-то в другом потоке lock.lock() ...
if (lock.tryLock()) {
try { /* работа */ }
finally { lock.unlock(); }
} else {
System.out.print("Busy");
}
🤯4❤1
🔍 Ответ на задачу про ReentrantLock: Попытка не пытка 🚪
Метод tryLock() — неблокирующий. Он мгновенно возвращает true, если замок удалось захватить, и false, если нет. Это позволяет потоку избежать ожидания и заняться чем-то другим или реализовать свою логику повторных попыток.

Вывод:
Поток напечатает "Busy" и не будет блокироваться.

⚡️ Не перепутайте:
При использовании lock() всегда вызывайте unlock() в блоке finally. Со synchronized об этом заботится сама JVM.

#java #concurrency #multithreading #reentrantlock #интервью #java_interview_tasks
🔥4👍1🤨1
Что выведет этот код?
Anonymous Quiz
36%
0
15%
2
43%
IllegalStateException
5%
1
🤨6
Что выведет этот код?
Semaphore sem = new Semaphore(0);
sem.release();
sem.release();
System.out.println(sem.availablePermits());
🥴5
🔍 Ответ на задачу про Semaphore: Кто потерял ключи? 🔑
В отличие от многих других синхронизаторов, Semaphore в Java — это просто счетчик. Метод release() просто увеличивает счетчик разрешений на единицу. Ему совершенно всё равно, вызывали ли вы acquire() до этого.

Вывод:
Код напечатает 2. Это свойство часто используют для передачи сигналов между потоками: один поток ждет (acquire), а другой подает сигнал о готовности (release).

⚡️ Не перепутайте:
Если вам нужен строгий замок, где отдать ключ может только тот, кто его взял — используйте ReentrantLock.

#java #concurrency #semaphore #multithreading #интервью #java_interview_tasks
🔥3❤1👍1
🔥1
🔍 Ответ на задачу про CountDownLatch vs CyclicBarrier: Одноразовый или нет? 🏁
- CountDownLatch — одноразовый. Как только счетчик упал до нуля, все потоки проходят через await() свободно, и "взвести" его обратно нельзя.
- CyclicBarrier — многоразовый. После того как все потоки собрались в точке сбора, барьер сбрасывается и готов к следующему раунду (циклу). У него есть метод reset().

Вывод:
CountDownLatch нельзя использовать повторно

⚡️ Не перепутайте:
- Нужен старт нескольких потоков одновременно? CyclicBarrier.
- Нужно дождаться завершения инициализации чего-либо? CountDownLatch.

#java #concurrency #multithreading #latch #barrier #интервью #java_interview_tasks
❤3