Какие инструменты и языки используются для разработки мобильных приложений
Что проверяют
Насколько современен ваш стек и понимаете ли вы, зачем нужен каждый инструмент. Для Android-разработчика вопрос почти всегда сводится к тому, что вы используете сегодня и почему. Следом спрашивают про Compose против View, про внедрение зависимостей или про устройство сборки в Gradle.
Как отвечать
Идите по слоям, от языка до выпуска:
- язык: Kotlin, платформа официально следует подходу Kotlin-first с 2019 года. Java остаётся в старом коде, для асинхронности корутины и
Flow; - UI: Jetpack Compose для новых экранов, XML и View в легаси, Material 3;
- Jetpack:
ViewModel, Navigation, Room поверх SQLite, DataStore вместоSharedPreferences, WorkManager для фоновых задач; - сеть и DI: Retrofit и OkHttp или Ktor, сериализация через kotlinx.serialization или Moshi, внедрение зависимостей через Hilt поверх Dagger или через Koin;
- сборка: Gradle с Kotlin DSL, каталог версий
libs.versions.toml, KSP вместо kapt, R8 для сжатия и обфускации; - тесты: JUnit и MockK для юнит-тестов, Robolectric, Espresso и Compose UI Test для интерфейса;
- выпуск и мониторинг: CI в GitHub Actions или GitLab CI, Fastlane, Crashlytics, Baseline Profiles для ускорения запуска.
Отдельно упомяните кроссплатформу: Kotlin Multiplatform выносит общую логику и на iOS, Compose Multiplatform добавляет общий UI. Flutter и React Native тоже встречаются, но для нативной вакансии достаточно понимать их плюсы и минусы. Говорите о том, что использовали сами, и честно отмечайте, что знаете только по документации.
Где спотыкаются
Отвечают стеком пятилетней давности: AsyncTask, RxJava как единственный вариант, kapt без упоминания KSP. Это сразу выдаёт, что проект давно не обновлялся.
Путают роли инструментов: считают Hilt отдельным от Dagger фреймворком или не могут объяснить, что R8 кроме обфускации ещё удаляет неиспользуемый код и оптимизирует его.
Перечисляют библиотеки без причин выбора. Спросят, почему Hilt, а не Koin, и ответ «так было в проекте» звучит слабо.