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