Leroy merlin · август 2024

Тех собес на middle-senior Android Разработчик в Leroy merlin

middle-senior Тех собес 39 вопросов
1

Общие вопросы

1. Что ты автоматизировал в процессе CI/CD? Можешь привести конкретные примеры?

2. Расскажи подробнее про архитектуру вашего проекта. Он был монолитный или модульный?

3. Ты рассказывал про CD, а что насчет CI? Вы настраивали линтеры или писали тесты?

2

Архитектура и паттерны

4. В чём разница между подключением модуля как api и implementation в Gradle?

5. Расскажи про другие архитектурные паттерны для презентационного слоя, помимо MVI. В чём их отличия?

6. В чём разница между MVI и MVVM?

7. Знаком ли ты с аббревиатурой UDF (Unidirectional Data Flow)?

3

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, в нём задействованы, и как они обрабатывают события?

4

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-приложении, как будешь её диагностировать и какие методы оптимизации знаешь?

5

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-кода?

6

Общие вопросы по программированию

37. Расскажи про отличия между Stack и Heap памятью.

38. Какие типы ссылок (references) существуют в Java и Kotlin? Расскажи о них подробнее (Strong, Weak, Soft, Phantom).

39. Расскажи в общих чертах, как работает Garbage Collector? В каких случаях он освобождает память?