Коллекции и HashMap
1. Что такое Collection?
2. Какие методы есть у коллекций?
3. Почему Map не наследуется от Collection?
4. Как устроена HashMap?
5. Может ли data class быть ключом в Map?
6. Можно ли потерять элемент в коллекции или Map?
7. Приведите кейс, при котором элемент в Map может быть потерян.
8. Опишите алгоритм работы метода get в HashMap.
9. Всегда ли hashCode объекта остается неизменным?
10. Всегда ли hashCode объекта постоянный?
11. У каких типов переменных или объектов hashCode может изменяться?
Kotlin
12. Какие методы генерируются для data class?
13. На основе каких полей генерируются эти методы?
14. Что произойдет, если у data class будет два конструктора?
15. Для чего нужны функции расширения (extension functions)?
16. Почему бы не сделать все методы своего класса функциями расширения?
17. Какие ограничения есть у функций расширения?
18. Во что декомпилируются функции расширения?
19. Что такое inline-функция?
20. Почему не сделать все функции inline?
21. Зачем нужны ключевые слова reified и inline?
22. Почему reified не может работать везде?
Многопоточность
23. Какие существуют способы синхронизации потоков?
24. Как работает ключевое слово synchronized?
25. Зачем нужны пулы потоков (thread pool) и в чем недостатки работы напрямую с thread?
26. Используют ли корутины пулы потоков?
27. Что произойдет, если выполнить сетевой запрос в Dispatchers.Default?
28. Почему Dispatchers.IO считается более оптимизированным для сетевых запросов?
Android
29. Каковы основные компоненты Android?
30. Является ли Fragment основным компонентом Android?
31. Почему Fragment не относится к основным компонентам?
32. Чем Activity отличается от Fragment?
33. Почему используется подход Single Activity Architecture?
34. Как обстоят дела с контекстом у Activity и Fragment?
35. В каких случаях какой тип контекста следует выбирать?
36. Какой контекст нужно использовать при создании универсальной библиотеки для любого экрана?
37. Какие бывают виды сервисов в Android?
38. Расскажите подробнее про Bound Service.
39. Чем Bound Service отличается от обычного сервиса?
40. Какие есть альтернативы сервисам в Android?
41. Что делает метод invalidate у View?
42. Что делает метод requestLayout у View?
Архитектура и принципы SOLID
43. В чем заключается принцип единой ответственности (S в SOLID)?
44. Где компоненты Android нарушают этот принцип?
45. Какие архитектурные подходы применяются в Android?
46. Расскажите про чистую архитектуру (Clean Architecture).
47. Как соотносятся слои presentation, domain и data в MVVM?
48. В каком слое находится ViewModel?
49. Отображение ошибок (show error) относится к модели или к бизнес-логике?
50. Как взаимодействуют компоненты MVVM в рамках чистой архитектуры?
Dagger
51. Чем отличаются аннотации binds и provides в Dagger?
52. Для чего нужны scope в Dagger?