Что выведет этот код?
Semaphore sem = new Semaphore(0);
sem.release();
sem.release();
System.out.println(sem.availablePermits());
🥴5
🔍 Ответ на задачу про Semaphore: Кто потерял ключи? 🔑
В отличие от многих других синхронизаторов,
Вывод:
Код напечатает 2. Это свойство часто используют для передачи сигналов между потоками: один поток ждет (
⚡️ Не перепутайте:
Если вам нужен строгий замок, где отдать ключ может только тот, кто его взял — используйте
#java #concurrency #semaphore #multithreading #интервью #java_interview_tasks
В отличие от многих других синхронизаторов,
Semaphore в Java — это просто счетчик. Метод release() просто увеличивает счетчик разрешений на единицу. Ему совершенно всё равно, вызывали ли вы acquire() до этого.Вывод:
Код напечатает 2. Это свойство часто используют для передачи сигналов между потоками: один поток ждет (
acquire), а другой подает сигнал о готовности (release).⚡️ Не перепутайте:
Если вам нужен строгий замок, где отдать ключ может только тот, кто его взял — используйте
ReentrantLock.#java #concurrency #semaphore #multithreading #интервью #java_interview_tasks
🔥4👍2❤1
Можно ли повторно использовать `CountDownLatch`, когда его счетчик достиг нуля?
Anonymous Quiz
25%
Да, вызвав метод `reset()`.
10%
Да, он автоматически сбрасывается.
53%
Нет, это "одноразовый" затвор.
12%
Только если создать его с флагом `isReusable=true`.
🔥2
🔍 Ответ на задачу про CountDownLatch vs CyclicBarrier: Одноразовый или нет? 🏁
-
-
Вывод:
⚡️ Не перепутайте:
- Нужен старт нескольких потоков одновременно?
- Нужно дождаться завершения инициализации чего-либо?
#java #concurrency #multithreading #latch #barrier #интервью #java_interview_tasks
-
CountDownLatch — одноразовый. Как только счетчик упал до нуля, все потоки проходят через await() свободно, и "взвести" его обратно нельзя.-
CyclicBarrier — многоразовый. После того как все потоки собрались в точке сбора, барьер сбрасывается и готов к следующему раунду (циклу). У него есть метод reset().Вывод:
CountDownLatch нельзя использовать повторно⚡️ Не перепутайте:
- Нужен старт нескольких потоков одновременно?
CyclicBarrier.- Нужно дождаться завершения инициализации чего-либо?
CountDownLatch.#java #concurrency #multithreading #latch #barrier #интервью #java_interview_tasks
❤4
Что произойдет, если положить большой объект в `ThreadLocal` и не вызвать `remove()` в приложении, работающем на Tomcat/Jetty?
Anonymous Quiz
18%
Объект будет удален сборщиком мусора, когда поток закончит обработку HTTP-запроса.
68%
Объект останется в памяти, так как потоки в веб-серверах живут в пуле и не умирают.
3%
ThreadLocal сам очистится через 5 минут простоя.
11%
JVM принудительно очищает ThreadLocal при каждой очистке Heap.
🔥5👍2🤨1
🔍 Ответ на задачу про ThreadLocal: Утечка памяти в серверах 🚰
Веб-серверы используют ThreadPool. Поток не умирает после завершения запроса, а возвращается в пул. Если вы привязали к нему данные через
Вывод:
Объект останется в памяти. Всегда вызывайте
⚡️ Не перепутайте:
В современных Java (21+) для таких целей лучше использовать
#java #threadlocal #memoryleak #jvm #backend #интервью #java_interview_tasks
Веб-серверы используют ThreadPool. Поток не умирает после завершения запроса, а возвращается в пул. Если вы привязали к нему данные через
ThreadLocal и не удалили их, эти данные будут висеть в памяти вечно (или пока поток не будет пересоздан), так как на них есть ссылка из живого потока.Вывод:
Объект останется в памяти. Всегда вызывайте
threadLocal.remove() в блоке finally после завершения работы.⚡️ Не перепутайте:
В современных Java (21+) для таких целей лучше использовать
Scoped Values, которые гарантируют очистку данных после выхода из блока.#java #threadlocal #memoryleak #jvm #backend #интервью #java_interview_tasks
❤6👍3🔥2
Что вернет метод `phantomRef.get()`?
Anonymous Quiz
38%
Ссылку на объект `obj`.
48%
null
11%
Ошибка компиляции.
3%
RuntimeException.
🔥3
Что вернет метод
phantomRef.get()?Object obj = new Object();
ReferenceQueue<Object> queue = new ReferenceQueue<>();
PhantomReference<Object> phantomRef = new PhantomReference<>(obj, queue);
System.out.println(phantomRef.get());
👍3
🔍 Ответ на задачу про PhantomReference: 👻
Вывод:
Код выведет
⚡️ Не перепутайте:
-
-
-
#java #jvm #gc #memory #phantomreference #интервью #java_interview_tasks
PhantomReference спроектирована так, что её метод get() всегда возвращает null. Её единственная цель — узнать момент, когда объект был окончательно удален из памяти, через специальную очередь ReferenceQueue. Это гораздо безопаснее и гибче, чем устаревший метод finalize().Вывод:
Код выведет
null. Фантомные ссылки используют для очистки ресурсов вне кучи (off-heap memory), когда мы точно знаем, что Java-объект уже "мертв".⚡️ Не перепутайте:
-
WeakReference: удаляется при ближайшей сборке мусора.-
SoftReference: удаляется только при нехватке памяти.-
PhantomReference: объект уже удален, ссылка нужна только для уведомления.#java #jvm #gc #memory #phantomreference #интервью #java_interview_tasks
❤2👍2🔥1🤨1
Что произойдет с записью в мапе, если на её КЛЮЧ не осталось сильных ссылок?
Anonymous Quiz
40%
Запись останется в мапе до вызова `map.clear()`.
45%
Запись будет автоматически удалена при следующей очистке GC.
16%
Ключ удалится, но значение останется (Memory Leak).
0%
Ошибка RuntimeException.
👍3
Что произойдет с записью в мапе, если на её КЛЮЧ не осталось сильных ссылок?
Map<Object, String> map = new WeakHashMap<>();
Object key = new Object();
map.put(key, "data");
key = null; //удаляем ссылку
System.gc(); //Форсируем сборку мусора
👍3🔥1🤔1💩1
🔍 Ответ на задачу про WeakHashMap:🧠
В
Вывод:
Запись будет удалена (ответ 2). Это отличное решение для временного хранения метаданных объектов, время жизни которых вы не контролируете.
⚡️ Не перепутайте:
Если вы сделаете слабым значение, а не ключ, мапа работать не будет —
#java #collections #weakhashmap #gc #memory #интервью #java_interview_tasks
В
WeakHashMap ключи хранятся как WeakReference. Если на объект-ключ больше никто не ссылается (кроме самой мапы), сборщик мусора имеет право его удалить. Мапа сама заметит исчезновение ключа и удалит соответствующую запись (включая значение).Вывод:
Запись будет удалена (ответ 2). Это отличное решение для временного хранения метаданных объектов, время жизни которых вы не контролируете.
⚡️ Не перепутайте:
Если вы сделаете слабым значение, а не ключ, мапа работать не будет —
WeakHashMap реагирует только на освобождение ключей.#java #collections #weakhashmap #gc #memory #интервью #java_interview_tasks
❤4👍2
🔥2👍1
Что выведет этот код?
StringJoiner joiner = new StringJoiner(", ", "[", "]");
joiner.add("A").add("B");
System.out.println(joiner.toString());👍3🔥1
🔥 Прожарка резюме Java-разработчиков
Откликаешься, а в ответ тишина? Или зовут, но предлагают меньше, чем рассчитываешь? Возможно, дело не в навыках, а в резюме.
27 октября рекрутер из Skyeng и Java-разработчик из Wildberries разберут резюме участников в прямом эфире!
Что разберём:
✦ почему рекрутер закрывает резюме, не дочитав до конца;
✦ как показать свой вклад и результаты, а не просто перечислить технологии;
✦ какие формулировки могут занизить твой грейд.
🗓 27 октября в 19:00 МСК
Участие бесплатное
👥 Спикеры:
— Анастасия Дегтярь, Senior TA в Skyeng, 6+ лет в найме;
— Виктор Анохин, Java/Kotlin-разработчик в Wildberries, ex-Билайн.
Эфир проводит ШОРТКАТ – менторская программа для разработчиков, которые хотят сменить работу или вырасти в грейде и зарплате.
Переходи в бота, чтобы зарегистрироваться на эфир: @shortcut_sh_bot
Реклама.
О рекламодателе.
Откликаешься, а в ответ тишина? Или зовут, но предлагают меньше, чем рассчитываешь? Возможно, дело не в навыках, а в резюме.
27 октября рекрутер из Skyeng и Java-разработчик из Wildberries разберут резюме участников в прямом эфире!
Что разберём:
✦ почему рекрутер закрывает резюме, не дочитав до конца;
✦ как показать свой вклад и результаты, а не просто перечислить технологии;
✦ какие формулировки могут занизить твой грейд.
🗓 27 октября в 19:00 МСК
Участие бесплатное
👥 Спикеры:
— Анастасия Дегтярь, Senior TA в Skyeng, 6+ лет в найме;
— Виктор Анохин, Java/Kotlin-разработчик в Wildberries, ex-Билайн.
Эфир проводит ШОРТКАТ – менторская программа для разработчиков, которые хотят сменить работу или вырасти в грейде и зарплате.
Переходи в бота, чтобы зарегистрироваться на эфир: @shortcut_sh_bot
Реклама.
О рекламодателе.
🔍 Ответ на задачу про StringJoiner:
Вывод:
Результат:
⚡️ Не перепутайте:
Если вам нужно просто соединить строки через запятую без префиксов, используйте более лаконичный
#java #string #stringjoiner #clean_code #basics #интервью #java_interview_tasks
StringJoiner (Java 8) позволяет удобно собирать строки с разделителем, префиксом и суффиксом. Его главное преимущество — он сам следит за тем, чтобы разделитель НЕ ставился после последнего элемента.Вывод:
Результат:
[A, B].⚡️ Не перепутайте:
Если вам нужно просто соединить строки через запятую без префиксов, используйте более лаконичный
String.join(", ", list).#java #string #stringjoiner #clean_code #basics #интервью #java_interview_tasks
🔥3❤1👍1
📂 Подборка интересных каналов по AI, IT & HR Tech + Crypto
Каналы для тех, кто работает в области IT и хочет держать руку на пульсе без мониторинга сотни источников ✔️
Что внутри:
Посмотреть и подписаться можно здесь ➡️ добавить папку
📩 Запись в папку
Каналы для тех, кто работает в области IT и хочет держать руку на пульсе без мониторинга сотни источников ✔️
Что внутри:
AI-блок: новости, нейросети, ИИ-инструменты и кейсы внедрения, стартапы, датасеты
Dev-блок: Java, Python, JS (Frontend/Backend), Mobile, QA, промышленная автоматизация (IIoT)
Отдельно: Cybersecurity, SciPop, IT-вакансии, биржа фриланса, бизнес-новости, Agile/PMP-менеджмент и Crypto бюллетень
Бонус: IT-мемы и юмор
Посмотреть и подписаться можно здесь ➡️ добавить папку
📩 Запись в папку
👍3🔥1👌1
👍2🔥1🤔1
Что выведет этот код?
try {
System.out.print("Try ");
System.exit(0);
} finally {
System.out.print("Finally");
}🤔3👍1🔥1
🪩 Последние IT & AI новости в одной ленте 🔎
Мониторить каналы про нейросети поштучно долго — свежие инструменты, обновления и материалы удобнее держать в одной подборке.
Внутри:
– новые сервисы и рабочие фишки;
– обзоры инструментов AI и IT;
– карьера и HR Tech: как найти работу по специальности.
🔗 Сохранить [ подборку ]
📩 Записаться в папку
Мониторить каналы про нейросети поштучно долго — свежие инструменты, обновления и материалы удобнее держать в одной подборке.
Внутри:
– новые сервисы и рабочие фишки;
– обзоры инструментов AI и IT;
– карьера и HR Tech: как найти работу по специальности.
🔗 Сохранить [ подборку ]
📩 Записаться в папку
👍1🔥1👌1
🔍 Ответ на задачу про System.exit(): exit или finally? 🥊
Блок
Вывод:
Программа выведет только "Try " и завершится. Единственный способ выполнить код при выходе — использовать
⚡️ Не перепутайте:
Во всех остальных случаях (return, exception, break)
#java #jvm #finally #systemexit #basics #интервью #java_interview_tasks
Блок
finally гарантированно выполняется почти всегда. Но System.exit() - это другое). Он мгновенно останавливает работу всей виртуальной машины (JVM). В этом случае выполнение кода прерывается немедленно, и никакие finally блоки не запускаются.Вывод:
Программа выведет только "Try " и завершится. Единственный способ выполнить код при выходе — использовать
Runtime.getRuntime().addShutdownHook().⚡️ Не перепутайте:
Во всех остальных случаях (return, exception, break)
finally обязательно отработает.#java #jvm #finally #systemexit #basics #интервью #java_interview_tasks
👍4❤1🔥1🤔1😐1