Вопрос на собеседовании · Android-разработчик

Как работают корутины Kotlin и что такое structured concurrency?

Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.

Обновлено 25 сентября 2026 г.базовая тема
Android-разработчикПрофессии и разделы
Короткий ответ

Корутина выполняется внутри CoroutineScope, который задаёт её Job, dispatcher и срок жизни. Structured concurrency означает, что дочерние задачи принадлежат родительскому scope: родитель ждёт их завершения, а его отмена распространяется вниз. Поэтому работа, запущенная в viewModelScope, не должна продолжать обновлять уже закрытый экран.

Обычный coroutineScope передаёт ошибку дочерней задачи всему scope; supervisorScope изолирует сбой одного ребёнка, когда остальные результаты всё ещё полезны. Отмена кооперативна: suspend-функции и явные проверки isActive должны дать задаче завершиться, а CancellationException нельзя бездумно превращать в экранную ошибку.

01 · Структура ответа

Что важно сказать интервьюеру

Раскройте тезисы, которые относятся именно к этому вопросу, и поясните их на собственном примере:

Scope задаёт жизненный цикл и context корутины.
Отмена родителя отменяет дочерние задачи.
coroutineScope и supervisorScope по-разному распространяют ошибки.
CancellationException обычно пробрасывают дальше.

02 · Пример

Как объяснить на практике

Экран профиля запускает параллельно запрос пользователя и рекомендаций в viewModelScope. Если рекомендация необязательна, её оборачивают в supervisorScope и показывают частичный экран; при очистке ViewModel оба запроса отменяются и не пишут состояние после закрытия экрана.

Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.

03 · Ошибки

Чего избегать в ответе

Запускать работу в GlobalScope и терять её жизненный цикл.
Ловить все Throwable и скрывать отмену как ошибку.
Считать supervisorScope универсальным способом игнорировать сбои.

04 · Углубление

Что могут спросить следом

  1. Чем launch отличается от async?
  2. Когда нужен SupervisorJob?
  3. Как тестировать корутины ViewModel?

05 · Проверка фактов

Первоисточники по теме

Ссылки ниже помогают проверить понятия, методы и ограничения по теме. Они не являются доказательством того, что этот вопрос задают на каждом собеседовании.

Практика ответа

Ответьте вслух, а не про себя

Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с подсказкой.

Потренировать ответ