Вопрос на собеседовании · Android-разработчик
Как работают корутины Kotlin и что такое structured concurrency?
Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.
Корутина выполняется внутри CoroutineScope, который задаёт её Job, dispatcher и срок жизни. Structured concurrency означает, что дочерние задачи принадлежат родительскому scope: родитель ждёт их завершения, а его отмена распространяется вниз. Поэтому работа, запущенная в viewModelScope, не должна продолжать обновлять уже закрытый экран.
Обычный coroutineScope передаёт ошибку дочерней задачи всему scope; supervisorScope изолирует сбой одного ребёнка, когда остальные результаты всё ещё полезны. Отмена кооперативна: suspend-функции и явные проверки isActive должны дать задаче завершиться, а CancellationException нельзя бездумно превращать в экранную ошибку.
01 · Структура ответа
Что важно сказать интервьюеру
Начните с определения, затем объясните механизм и закончите примером из практики. Для полного ответа раскройте эти тезисы:
02 · Пример
Как объяснить на практике
Экран профиля запускает параллельно запрос пользователя и рекомендаций в viewModelScope. Если рекомендация необязательна, её оборачивают в supervisorScope и показывают частичный экран; при очистке ViewModel оба запроса отменяются и не пишут состояние после закрытия экрана.
Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.
03 · Ошибки
Чего избегать в ответе
04 · Углубление
Что могут спросить следом
- Чем launch отличается от async?
- Когда нужен SupervisorJob?
- Как тестировать корутины ViewModel?
Практика ответа
Ответьте вслух, а не про себя
Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с подсказкой.
Mira