Работали ли вы с Kotlin
Что проверяют
Насколько вы владеете языком, а не просто перевели Java-код построчно. Дальше идут вопросы про null-безопасность и корутины.
Как отвечать
Рамка и то, чем пользуетесь по существу.
> «Kotlin четыре года, весь новый код на нём, Java остался в старых модулях. Пишу на корутинах и Flow, интерфейс на Compose».
Что стоит назвать как реально применяемое:
- null-безопасность: типы с
?,?.,?:,let. Проверка переносится на компиляцию, иNullPointerExceptionперестаёт быть привычным; - data-классы вместо ручных
equals,hashCodeиtoString; - sealed-иерархии для состояния экрана и исчерпывающего
whenбезelse; - функции-расширения для читаемых цепочек без наследования;
- корутины и Flow вместо колбэков и RxJava;
- делегаты:
by lazy,by viewModels, свои черезgetValue; - inline и reified там, где нужен тип во время выполнения.
Полезно упомянуть взаимодействие с Java: платформенные типы (String!) не проверяются на null, поэтому на границе с Java аннотации важны, иначе безопасность иллюзорна.
Где спотыкаются
Пишут на Kotlin как на Java: !! вместо нормальной обработки, изменяемые переменные везде.
Не знают про платформенные типы и удивляются NullPointerException в Kotlin.
Называют корутины, но не могут объяснить структурированную конкурентность.
Используют lateinit там, где подошёл бы обычный тип с null или by lazy.