Kotlin Coroutines: вопросы на собеседовании
Вопросы и ответы по Kotlin Coroutines: подготовка, примеры и типичные ошибки.
Проверьте себя по Kotlin Coroutines: 5 вопросов, ~10 минут
Вопросов: 41. Частые идут первыми, сложные возвращаются на повторение.
- Как отменить coroutine и что происходит с дочерними coroutines при отмене родительской?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Что такое
CoroutineScopeи почему он важен?Junior· спрашивают почти всегда - Что такое Kotlin coroutines и какую проблему они решают по сравнению с потоками?Junior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Что такое
CoroutineDispatchersи в чём разница междуMain,IO,DefaultиUnconfined?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost - Что такое
Flowв Kotlin и чем он отличается отsuspend fun, возвращающей одно значение?Junior· спрашивают почти всегда - В чём разница между билдерами coroutine
launchиasync?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost - Что такое structured concurrency и почему это важно?Senior· спрашивают почти всегда
- Что такое suspend-функция и где её можно вызывать?Junior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Как coroutines работают в Android — каковы рекомендуемые скоупы (
viewModelScope,lifecycleScope)?Middle· полный разбор — Jobs/Boost - В чём разница между холодными (cold) и горячими (hot) flows?Middle
- Как реализовать кооперативную отмену и что такое
ensureActive()?Middle· полный разбор — Jobs/Boost - Как тестировать coroutines с помощью
runTestиTestCoroutineScheduler?Senior· полный разбор — Jobs/Boost - Что такое
Deferred<T>и как использоватьawait()?Middle - Как работает обработка исключений в coroutines? В чём разница между
launchиasyncпри возникновении исключений?Senior· полный разбор — Jobs/Boost - Как обрабатывать ошибки в Flow с помощью оператора
catch?Middle· полный разбор — Jobs/Boost - Что такое операторы flow и приведите примеры (
map,filter,flatMapConcat,zip,combine)?Middle· полный разбор — Jobs/Boost - Что такое
GlobalScopeи почему его следует избегать?Middle - В каких mobile-проектах Kotlin Coroutines является сильным выбором, а где лучше выбрать native или другую cross-platform альтернативу?Middle· полный разбор — Jobs/Boost
- Как сравнить Kotlin Coroutines с альтернативами по performance, UX, доступу к platform APIs, найму и долгосрочной поддержке?Middle
- Как понять, что проблема в приложении связана с Kotlin Coroutines, а не с backend, сетью, дизайном состояния или платформой?Senior· полный разбор — Jobs/Boost
- Представьте, экран на Kotlin Coroutines тормозит, теряет состояние или ведёт себя по-разному на разных платформах. Как вы будете искать причину?Senior· полный разбор — Jobs/Boost
- Какие ошибки делают команды, когда строят приложение на Kotlin Coroutines как web/backend-проект без учёта mobile constraints?Middle
- Какие архитектурные решения Kotlin Coroutines задаёт вокруг UI state, lifecycle, navigation, threading и platform integration?Middle· полный разбор — Jobs/Boost
- Какие production-риски есть у Kotlin Coroutines: memory, lifecycle bugs, accessibility, offline mode, app size или platform-specific behavior?Senior· полный разбор — Jobs/Boost
- В чём разница между
StateFlowиSharedFlow?Middle· полный разбор — Jobs/Boost - Что такое
supervisorScopeи чем он отличается отcoroutineScope?Senior· полный разбор — Jobs/Boost - Что такое
withContext()и когда его следует использовать?Middle - Как реализовать таймаут в coroutine с помощью
withTimeout?Middle· полный разбор — Jobs/Boost - Что такое
callbackFlowи когда его стоит использовать?Senior· полный разбор — Jobs/Boost - В чём разница между
cancelAndJoin()иcancel()?Middle - Что такое
Channelв Kotlin coroutines и чем он отличается от Flow?Middle· полный разбор — Jobs/Boost - Что такое
CoroutineExceptionHandlerи как его настраивать?Senior· полный разбор — Jobs/Boost - Что такое backpressure во flows и как Kotlin с этим справляется?Senior
- Что такое
Jobв coroutines и в каких состояниях он может находиться?Middle· полный разбор — Jobs/Boost - Чем
buffer,conflateиcollectLatestотличаются во Flow?Middle· полный разбор — Jobs/Boost - Что делает
Dispatchers.IO.limitedParallelism()и когда это полезно?Middle - Как не словить dispatcher starvation при CPU-bound работе?Middle· полный разбор — Jobs/Boost
- Расскажите о случае, когда вы решали проблему с Kotlin Coroutines: lifecycle, performance, testing, release или platform integration.Middle· полный разбор — Jobs/Boost
- Что такое
Mutexв coroutines и когда его использовать для защиты разделяемого состояния?Middle - Что такое
runBlockingи когда его уместно применять?Middle· полный разбор — Jobs/Boost - Что такое модель акторов (actor model) и как её реализовать с помощью coroutines?Senior