Встречается на собеседованиях • сегодня

Почему завис

Зависание может происходить по нескольким причинам:

  1. Deadlock – два потока блокируют друг друга, ожидая освобождения ресурсов.
  2. Бесконечный цикл – например, while(true) без условия выхода.
  3. Долгие операции в UI-потоке – блокировка Event Dispatch Thread в Swing/JavaFX.
  4. Утечка памяти (OOM) – приложение "тормозит" из-за частого GC.

Пример deadlock:

java
Object lock1 = new Object();
Object lock2 = new Object();

// Поток 1
synchronized (lock1) {
    synchronized (lock2) { ... } // Ждёт lock2
}

// Поток 2
synchronized (lock2) {
    synchronized (lock1) { ... } // Ждёт lock1
}

Как исправить:

  • Использовать tryLock() или упорядоченные блокировки.
  • Выносить тяжелые вычисления в отдельные потоки.
  • Мониторить память и потоки через VisualVM/JProfiler.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы