Все профессии

Подготовка к собеседованию

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-рефлексии.

Как использовать этот список

Сначала ответьте своими словами, затем раскройте пояснение. Отдельно подготовьте примеры из проектов: на собеседовании важно не только знать определение, но и объяснить, где вы применяли подход на практике.

Посмотреть другие профессии →