Подготовка к собеседованию
Android-разработчик: вопросы и ответы на собеседовании
Вопросы по Kotlin, Android SDK, жизненному циклу, Compose, потокам и архитектуре приложения.
Kotlin и Android
3 вопросовЧем val отличается от var?junior
val нельзя переназначить после инициализации, а var можно. val не делает объект неизменяемым: его внутреннее состояние всё ещё может меняться.
Что такое null safety в Kotlin?junior
Типы по умолчанию не допускают null. Для nullable-типа используют безопасный вызов, Elvis-оператор и явную проверку, а !! применяют только когда гарантия действительно доказана.
Что такое coroutine и suspend?middle
Coroutine — лёгкая задача, которую можно приостановить без блокировки потока. suspend-функция описывает точку приостановки и запускается из coroutine scope.
Жизненный цикл
3 вопросовПочему нельзя хранить Activity в долгоживущем объекте?junior
Activity имеет жизненный цикл и ссылку на Context. Долгоживущая ссылка удерживает старый экран и вызывает утечку памяти, поэтому используют application context или scoped-компоненты.
Как пережить поворот экрана?middle
Состояние UI хранят в ViewModel и SavedStateHandle, а не только в Activity. Данные из сети обычно кэшируют в репозитории, чтобы повторно использовать их после пересоздания.
Почему нельзя запускать сеть в main thread?junior
Синхронный сетевой вызов блокирует UI и приводит к ANR. Операции выполняют в IO dispatcher, а результат безопасно передают в состояние экрана.
Архитектура приложения
4 вопросовЗачем разделять UI, domain и data?middle
Слои уменьшают связанность и упрощают тестирование: UI отображает состояние, domain содержит правила, data работает с источниками. Границы должны быть оправданы размером проекта.
Что важно проверить перед релизом Android?middle
Сценарии на разных API и размерах экранов, offline и плохую сеть, восстановление после убийства процесса, разрешения, размер APK, crash-free rate и работу proguard/R8.
Как тестировать ViewModel?middle
Передают фейки репозиториев, контролируют входные события и проверяют последовательность состояний loading, data и error. Тест не должен зависеть от Android UI.
Как уменьшить размер приложения?middle
Проверяют зависимости, включают R8/resource shrinking, сжимают изображения и используют App Bundle. Удаление кода должно сопровождаться проверкой runtime-рефлексии.
Как использовать этот список
Сначала ответьте своими словами, затем раскройте пояснение. Отдельно подготовьте примеры из проектов: на собеседовании важно не только знать определение, но и объяснить, где вы применяли подход на практике.
Посмотреть другие профессии →