— Общие вопросы:
1. Расскажи, что ты автоматизировал в процессе CI/CD? Можешь привести конкретные примеры? 2. Расскажи подробнее про архитектуру вашего проекта. Он был монолитный или модульный? 3. Ты рассказывал про CD, а что насчет CI? Вы настраивали линтеры или писали тесты?
— Архитектура и паттерны:
1. В чём разница между подключением модуля как api и implementation в Gradle? 2. Расскажи про другие архитектурные паттерны для презентационного слоя, помимо MVI. В чём их отличия? 3. В чём разница между MVI и MVVM? 4. Знаком ли ты с аббревиатурой UDF (Unidirectional Data Flow)?ow)?
— Android OS:
1. Расскажи, что такое Context в Android. Какие типы Context бывают и для чего он нужен? 2. Как базовые компоненты Android, такие как Service, Broadcast Receiver, Content Provider, соотносятся с Context’ом? Являются ли они имплементацией Context? 3. Какие типы сервисов существуют в Android? 4. Что можешь рассказать про WorkManager? Приходилось ли с ним работать? 5. Когда работаешь с сервисами, на что влияет флаг android:exported? 6. В каком потоке по умолчанию запускаются сервисы? Можно ли это изменить? 7. Расскажи подробно, как происходит запуск приложения в Android, с момента нажатия на иконку до появления первого экрана. Какие компоненты при этом взаимодействуют? 8. Для чего нужен файл ProGuard и что такое обфускация кода? Зачем она нужна? 9. Как R8 соотносится с ProGuard? 10. Расскажи, как работает UI-поток? Какие механизмы, такие как Handler и Looper, в нём задействованы, и как они обрабатывают события?я?
— Jetpack Compose:
1. Расскажи, что такое декларативный подход в Compose и чем он отличается от императивного? 2. Чем отличаются SideEffect, LaunchedEffect и DisposableEffect? 3. Для чего вообще нужны сайд-эффекты в Compose? 4. Расскажи про stable и unstable аргументы в Compose. Как компилятор определяет, нужно ли перерисовывать UI? 5. Какие типы данных Compose-компилятор автоматически определяет как stable и unstable? 6. Расскажи, для чего нужна функция remember и чем она отличается от rememberSaveable? 7. Куда в памяти сохраняется состояние, запоминаемое с помощью remember? 8. Сталкивался ли ты с CompositionLocal и для решения каких задач он используется? 9. В чём разница между Column и LazyColumn? Есть ли какие-то оптимизации под капотом? 10. Если ты обнаружишь проблему с производительностью в Compose-приложении, как будешь её диагностировать и какие методы оптимизации знаешь? оптимизации знаешь?
— Kotlin:
1. Что такое sealed classes и в чём их отличие от enum class? 2. Как sealed classes и enum class хранятся в памяти? Есть ли разница в том, как создаются их инстансы? 3. В чём разница между val и const val? В каких случаях нужно использовать const val? 4. Расскажи про nullable-типы в Kotlin. В каких случаях, например, Int? будет представлен как примитив, а в каких — как объект? 5. Что такое companion object и во что он компилируется в Java? 6. Можно ли создать несколько companion objects в одном классе? 7. Расскажи, как работают inline-функции в Kotlin? В каких случаях их стоит, а в каких не стоит применять? 8. Что такое crossinline и noinline? 9. Можно ли вызвать inline-функцию из Java-кода?nline`-функцию из Java-кода?
— Общие вопросы по программированию
1. Расскажи про отличия между Stack и Heap памятью. 2. Какие типы ссылок (references) существуют в Java и Kotlin? Расскажи о них подробнее (Strong, Weak, Soft, Phantom). 3. Расскажи в общих чертах, как работает Garbage Collector? В каких случаях он освобождает память?