Подготовка по специальности
Собеседование Android-разработчика:
вопросы и ответы.
На собеседовании Android-разработчика проверяют не только знание Kotlin и Android SDK, но и умение управлять состоянием экрана, конкурентностью и ограничениями мобильного устройства. Сильный ответ связывает API с пользовательским сценарием: поворот экрана, уход приложения в фон, медленная сеть или нехватка памяти.
Потренировать ответы вслухНе пытайтесь выучить все ответы: интервьюеры проверяют понимание, а не память. Разберите темы ниже, прорешайте типичные вопросы вслух и свяжите каждый ответ с примером из собственного опыта.
01 · Процесс
Как обычно проходит интервью
После разговора о проектах обычно идут вопросы по Kotlin, lifecycle и архитектуре, затем live-coding или разбор экрана. Кандидата могут попросить объяснить отмену корутин, набросать состояние Compose-экрана, найти утечку или предложить стратегию тестирования.
02 · Темы
Что нужно знать перед интервью
Kotlin и конкурентность
- coroutines, suspend и cancellation
- structured concurrency и SupervisorJob
- Flow, StateFlow и обработка ошибок
- потоки, dispatchers и backpressure
Android lifecycle и состояние
- Activity, Fragment и ViewModel
- изменение конфигурации и process death
- SavedStateHandle и навигация
- сбор Flow с учётом lifecycle
UI, архитектура и качество
- Jetpack Compose и recomposition
- state hoisting и однонаправленный поток данных
- слои приложения и зависимости
- unit, integration и UI-тесты
03 · Вопросы
Реальные вопросы с разбором ответов
Пометка у вопроса — как часто он встречается на реальных интервью: почти всегда часто иногда
Корутина выполняется в CoroutineScope и наследует его Job и context. Structured concurrency связывает дочерние задачи с жизненным циклом родителя: отмена ViewModel останавливает её работу. Упомяните, когда нужен supervisorScope.
Читать полный разбор Потренировать этот ответViewModel хранится в ViewModelStore владельца и переживает пересоздание Activity или Fragment, но не гарантированно process death. Долгое состояние сохраняют через SavedStateHandle или источник данных, а Flow собирают lifecycle-aware способом.
Читать полный разбор Потренировать этот ответCompose перечитывает наблюдаемое state и пересчитывает затронутые composable. Не называйте recomposition перерисовкой всего экрана: объясните стабильные параметры, remember, derivedStateOf и вынос дорогой работы из composition.
Читать полный разбор Потренировать этот ответ04. Чем StateFlow отличается от LiveData и когда выбрать каждый?
частоStateFlow — горячий поток с обязательным текущим значением и coroutine API; LiveData lifecycle-aware из коробки. В современном Kotlin-стеке часто используют StateFlow в ViewModel и repeatOnLifecycle в UI, но учитывают выбранную архитектуру проекта.
Потренировать этот ответ05. Как обрабатывать отмену и ошибки в корутинах?
почти всегдаCancellationException не поглощают в общем catch: её пробрасывают дальше. Ошибки дочерних задач ведут себя по-разному в coroutineScope и supervisorScope; покажите, где ошибка превращается в UI-state или retry.
Потренировать этот ответ06. Что такое state hoisting в Compose?
частоСостояние поднимают к общему владельцу, а дочернему composable передают значение и события. Это делает UI предсказуемым и тестируемым, но не требует поднимать каждую локальную анимацию наверх.
Потренировать этот ответ07. Как сохранить состояние при process death?
частоViewModel не заменяет сохранение состояния процесса. В SavedStateHandle держат небольшой восстанавливаемый UI-state и параметры навигации, а данные получают заново из репозитория по устойчивому идентификатору.
Потренировать этот ответ08. Как выстроить слои Android-приложения?
частоОпишите границы UI, domain и data без догматизма: UI зависит от use case или state, data скрывает сеть и БД, зависимости направлены к абстракциям. Свяжите решение с тестированием и размером команды.
Потренировать этот ответ09. Какие тесты нужны для экрана Android-приложения?
частоПирамида обычно включает unit-тесты ViewModel и логики, интеграцию репозитория, немного UI-тестов на критические сценарии. Не дублируйте один сценарий на каждом уровне и стабилизируйте асинхронность.
Потренировать этот ответ10. Расскажите о сложной проблеме производительности или стабильности в Android-приложении.
почти всегдаСтруктурируйте по STAR: симптом и метрика, как локализовали причину, что изменили, как проверили результат и не допустили повторения. Подходят ANR, утечка, лишние recomposition или сетевые ретраи.
Потренировать этот ответ04 · Практика
Практический кейс Android-разработчика
В практической части могут дать экран каталога с сетью, загрузкой и поворотом устройства. Сначала уточните состояния и ошибки, затем предложите однонаправленный поток событий, ViewModel, устойчивое состояние и границы репозитория.
Проговаривайте, что сделаете сразу, а что оставите как следующую итерацию: отмену запросов, кэш, аналитику и тесты. Интервьюер оценивает обоснованные компромиссы, а не количество знакомых библиотек.
Общая подготовка — резюме, техника, звук и демонстрация экрана — разобрана в чек-листе подготовки к онлайн-собеседованию. Как осознанно использовать AI-подсказки во время звонка — в гайде «Как использовать AI на собеседовании».
05 · FAQ
Частые вопросы
Нужно ли знать XML, если команда использует Compose?
Для большинства вакансий полезно понимать существующий View-based UI и interop, потому что крупные приложения мигрируют постепенно. Главный фокус на интервью зависит от стека вакансии, но lifecycle и состояние нужны в обоих подходах.
Насколько глубоко спрашивают алгоритмы у Android-разработчика?
Это зависит от компании. Чаще одновременно оценивают базовые структуры данных, сложность и прикладной Android-кейс; в крупных продуктовых командах возможна отдельная алгоритмическая секция.
Как подготовить рассказ о проекте?
Выберите два кейса с измеримым эффектом и заранее разложите ответственность, техническое решение, компромиссы и результат. Уточняйте личный вклад, чтобы не подменять командную работу общими словами.
Тренировка перед интервью
Репетируйте ответы вслух с Mira
Mira слышит вопрос и показывает подсказку для ответа прямо во время звонка. 30 минут бесплатно каждый месяц, банковская карта не нужна.
Mira