Kotlin — Вопросы для собеседований
Архитектура Android
Фоновая работа в Android — Service, WorkManager и ограничения Doze.
10 вопросов
Компоненты платформы Android
Кирпичи Jetpack, из которых собирают Android-приложение — Navigation с бэкстеком и deep link, Room поверх голого SQLite, Parcelable против Serializable и View Binding после отказа от Kotlin-синтетики.
6 вопросов
Упаковка и равенство
Примитивы против упакованных чисел, nullable-типы, кэш Integer и ссылочное равенство.
4 вопросов
Сборка и компилятор
Что происходит между исходником и APK — фронтенд K2, обработка аннотаций kapt против KSP, build-варианты, сжатие и обфускация через R8, Gradle Kotlin DSL и разбиение на модули ради скорости инкрементальной сборки.
11 вопросов
Классы и свойства
Механика классов в повседневном Kotlin — первичные и вторичные конструкторы, порядок инициализации, open против final, модификатор видимости internal, вложенные и inner-классы, backing field и реализации по умолчанию в интерфейсах.
8 вопросов
Коллекции и последовательности
API коллекций стандартной библиотеки — преобразования map, filter и flatMap, энергичный List против ленивой Sequence, read-only и изменяемые коллекции в рантайме, fold против reduce, groupBy против associateBy, массивы и примитивные IntArray.
9 вопросов
Jetpack Compose
Декларативный UI на Kotlin — чем композиция отличается от императивной системы View, рекомпозиция и что вызывает лишнюю, remember против обычной локальной переменной, Compose Multiplatform и Compose Hot Reload.
7 вопросов
Конкурентность
Потоки, мониторы synchronized, взаимоблокировки, модель памяти Java и утечки памяти.
6 вопросов
Отмена и сбои корутин
Как останавливается дерево корутин и как распространяется сбой — иерархия Job, кооперативная отмена и yield, SupervisorJob и supervisorScope, где действительно срабатывает CoroutineExceptionHandler, и безопасная при отмене очистка через finally и NonCancellable.
9 вопросов
Корутины
Приостанавливаемые вычисления на JVM — чем корутина отличается от потока, suspend как передача продолжения, билдеры launch/async/runBlocking, структурная конкурентность и CoroutineScope, CoroutineContext, диспетчеры Main/IO/Default и Mutex вместо synchronized.
21 вопросов
Кастомные View
Жизненный цикл кастомного View в Android — onMeasure, onLayout, onDraw и MeasureSpec.
3 вопросов
Data-классы
Data-классы, сгенерированные equals/hashCode/copy и их использование как ключей map.
8 вопросов
Делегирование
Делегирование интерфейсов через by, делегированные свойства и приоритет override.
4 вопросов
Внедрение зависимостей
Внедрение зависимостей с Dagger 2 — компоненты, модули, привязки и multibinding.
4 вопросов
Обработка ошибок
Как Kotlin сообщает об ошибках — тип Result и runCatching, сознательный отказ от checked exceptions и выбор между возвратом ожидаемой ошибки и выбросом исключения.
6 вопросов
Flow и каналы
Асинхронные потоки в kotlinx.coroutines — холодный Flow против горячих SharedFlow и StateFlow, операторы, обратное давление через buffer, conflate и collectLatest, почему flowOn влияет только на upstream, и когда Channel лучше Flow.
11 вопросов
Функции и лямбды
Kotlin как функциональный язык — функции высшего порядка, функциональные типы, лямбды с ресивером и builder-DSL на их основе, синтаксис trailing lambda, локальные функции, tailrec, перегрузка операторов, функции и свойства-расширения.
13 вопросов
Основы Kotlin
Повседневный слой синтаксиса — val против var, выражения if и when, строковые шаблоны, Unit, иерархия Any, аргументы по умолчанию и именованные аргументы, функции верхнего уровня и scope-функции let/run/with/apply/also.
12 вопросов
Дженерики
Стирание типов, reified-параметры типа и вариантность в дженериках Kotlin.
7 вопросов
Inline-функции
Inline-функции, non-local return и модификаторы crossinline и noinline.
5 вопросов
Интероп с Java
Место встречи двух языков — платформенные типы из неаннотированной Java, @JvmStatic, @JvmOverloads и @JvmName, @Throws, отображение объявлений Kotlin в байткод, вызов suspend-функции из Java и места, где стопроцентный интероп даёт течь.
12 вопросов
Kotlin Multiplatform
Общий код на нескольких платформах — объявления expect/actual, common- и платформенные source set, формат klib, интероп с iOS через Objective-C-заголовок и альфа-версию Swift export, модель памяти Kotlin/Native, Kotlin/Wasm, экосистема KMP-библиотек и стратегия внедрения.
18 вопросов
Null-безопасность
Как система типов убирает NullPointerException — nullable-типы, safe call и оператор Элвиса, not-null assertion, умные приведения и условия их работы, lateinit и тип Nothing.
7 вопросов
Sealed-иерархии и объекты
Закрытые иерархии типов и семейство object — sealed-классы и интерфейсы, исчерпывающий when, object-объявления как синглтоны, companion object вместо статики и анонимные объекты.
9 вопросов
Тестирование
Тестирование кода на Kotlin — фреймворки JUnit и Kotest, runTest для suspend-кода, MockK против final-классов и функций-расширений, fake против mock, Turbine для эмиссий Flow, snapshot-тесты Compose, инструментальные и локальные JVM-тесты, commonTest в KMP и property-based тестирование.
11 вопросов