Какой опыт с языками программирования?
Что проверяют
Для Android-разработчика вопрос о языках на деле про Kotlin: насколько глубоко вы его знаете и как давно ушли от Java. Следом обычно спрашивают про корутины, null-безопасность или про совместную работу Kotlin и Java в одном модуле.
Как отвечать
Основной язык подробно, затем то, что рядом:
- Kotlin: с 2019 года Google ведёт Android по принципу Kotlin-first. Назовите, чем пользуетесь каждый день: null-безопасность и
?.,data class,sealed-иерархии для состояний экрана, extension-функции,inlineиreified, делегатыby lazyиby viewModels(); - корутины и Flow:
viewModelScopeиlifecycleScope, структурная конкурентность,Dispatchers.IO,StateFlowиSharedFlow, сбор с учётом жизненного цикла черезrepeatOnLifecycle; - Java: легаси-модули и интероп, аннотации
@JvmStaticи@JvmOverloads, платформенные типы вродеString!, из-за которых null прилетает из Java-кода в обход проверок компилятора; - Compose: отдельным языком не является, но опирается на плагин компилятора, который с Kotlin 2.0 развивается внутри самого Kotlin;
- сборка:
build.gradle.kts, version catalogs, KSP вместо kapt; - соседние языки: C или C++ через NDK и JNI, если были нативные библиотеки; Kotlin Multiplatform для общей с iOS логики; Swift, если писали под обе платформы.
Рассказывайте на своём материале: сколько лет, какие приложения, как переводили код с Java на Kotlin, по модулям или по файлам. Цифры только настоящие. Если Java в ваших проектах уже не было, так и скажите, но покажите, что читаете её код и понимаете интероп.
Где спотыкаются
Ставят !! повсюду и называют это знанием null-безопасности. На вопрос, чем плох !!, ответ «ничем» заканчивает разговор.
Запускают корутины в GlobalScope и не могут объяснить, кто их отменит, когда пользователь уйдёт с экрана.
Говорят, что Kotlin быстрее Java. Оба языка компилируются в байт-код JVM, а на Android он проходит через D8 и R8 в DEX, так что скорость определяет код, а не выбор языка.