Альфа-Банк · сентябрь 2024

Тех собес на middle-senior Android Разработчик в Альфа-Банк

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

Коллекции и 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 может изменяться?

2

Kotlin

12. Какие методы генерируются для data class?

13. На основе каких полей генерируются эти методы?

14. Что произойдет, если у data class будет два конструктора?

15. Для чего нужны функции расширения (extension functions)?

16. Почему бы не сделать все методы своего класса функциями расширения?

17. Какие ограничения есть у функций расширения?

18. Во что декомпилируются функции расширения?

19. Что такое inline-функция?

20. Почему не сделать все функции inline?

21. Зачем нужны ключевые слова reified и inline?

22. Почему reified не может работать везде?

3

Многопоточность

23. Какие существуют способы синхронизации потоков?

24. Как работает ключевое слово synchronized?

25. Зачем нужны пулы потоков (thread pool) и в чем недостатки работы напрямую с thread?

26. Используют ли корутины пулы потоков?

27. Что произойдет, если выполнить сетевой запрос в Dispatchers.Default?

28. Почему Dispatchers.IO считается более оптимизированным для сетевых запросов?

4

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?

5

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

43. В чем заключается принцип единой ответственности (S в SOLID)?

44. Где компоненты Android нарушают этот принцип?

45. Какие архитектурные подходы применяются в Android?

46. Расскажите про чистую архитектуру (Clean Architecture).

47. Как соотносятся слои presentation, domain и data в MVVM?

48. В каком слое находится ViewModel?

49. Отображение ошибок (show error) относится к модели или к бизнес-логике?

50. Как взаимодействуют компоненты MVVM в рамках чистой архитектуры?

6

Dagger

51. Чем отличаются аннотации binds и provides в Dagger?

52. Для чего нужны scope в Dagger?