Авито · сентябрь 2024

Скрининг на middle-senior Android Разработчик в Авито

middle-senior Скрининг 19 вопросов 1 задача
1

Вопросы по Android

1. Назови основные компоненты Android-приложения (Activity, Service, BroadcastReceiver, ContentProvider) и объясни, почему они являются точками входа в приложение.

2. Перечисли основные методы жизненного цикла Activity.

3. Какие существуют способы сохранения состояния в Android?

4. Какие типы данных можно помещать в Intent?

5. Объясни разницу между интерфейсами Serializable и Parcelable. Почему в Android предпочтительнее использовать Parcelable?

2

Вопросы по Kotlin/Java

6. Перечисли основные методы класса Any.

7. Назови модификаторы доступа для элементов класса в Kotlin.

8. Какие коллекции в Kotlin тебе известны?

9. Чем Map отличается от других коллекций (List, Set)?

10. Приведи примеры реализаций коллекций (ArrayList, LinkedList, HashMap, HashSet).

3

Вопросы по синхронизации

11. Какие способы синхронизации доступа к переменной в многопоточной среде тебе известны?

12. Расскажи об особенностях использования ключевого слова volatile.

13. Что может произойти с программой, если не синхронизировать доступ к общей переменной из разных потоков? Могут ли возникнуть критические ситуации, такие как deadlock?

4

Вопросы по работе с сетью

14. Опиши, какие шаги необходимо предпринять, чтобы выполнить сетевой запрос в новом Android-проекте.

15. Какие особенности нужно учитывать со стороны Android при работе с сетью?

16. Почему не рекомендуется выполнять сетевые запросы напрямую в Activity на главном потоке (main thread)?

5

Вопросы по UI

17. Для чего используется RecyclerView? Почему его применение предпочтительнее ListView?

18. Какие оптимизации и сильные стороны RecyclerView ты можешь назвать (например, использование пула для переиспользования View, ItemAnimator, ItemDecorator и т.д.)?

19. Как RecyclerView работает с большими списками данных? Рендерит ли он сразу все элементы?

6

Задача

Практика

20. Задача: Написать функцию, которая принимает на вход массив чисел (Int) и возвращает boolean, если в массиве есть два подряд идущих одинаковых элемента.

fun function(list: List): Boolean {

}