Ситуация: асинхронный код ведет себя нестабильно при использовании «async и await». Как вы будете разбираться?
Что хотят услышать интервьюеры:
План действий: сначала воспроизвести проблему, затем сузить область и только после этого менять код.
- Проверить, где используется async и await.
- Посмотреть lifecycle, потоки, state source, логи и stack trace.
- Сравнить ожидаемое поведение с фактическим.
- Закрепить исправление тестом, профилированием или checklist-проверкой.
Ответ:
Вероятная зона риска: запускает coroutine с Deferred-результатом и подходит для параллельных независимых задач. Плохой ответ: сразу переписать экран без диагностики.
val a = async { repo.a() }; val b = async { repo.b() }