· 6 years ago · Jan 12, 2020, 07:38 PM
1# Android Interview Questions
2
3### Жизненный цикл
4 * Activity
5 * Fragment
6 * Service
7
8### Activity
9 * Как сохранять состояние Activity при повороте экрана?
10 * Чтобы сохранить состояние активити, нужно переопределить метод onSaveInstanceState() и положить данные в Bundle. При реинициализации активити, Bundle с сохраненным состоянием передается в onCreate() и в onRestoreInstanceState(). Система вызывает onSaveInstanceState() и onRestoreInstanceState() только в том случае, когда необходимо сохранить состояние, например при повороте экрана или при убийстве активити для освобождения памяти. Данные коллбэки **не** вызываются, если пользователь выходит из активити нажав Back или если активити убивается вызовом finish().
11 * Когда вызывается onSavedInstanceState() и onRestoreInstanceState()?
12 * onSaveInstanceState() вызывается после onStop() на версии API ≥ 28. На API < 28 этот коллбэк вызывается перед onStop() и нет гарантий до или после onPause(). А onRestoreInstanceState() вызывается после onStart()
13 * Может ли Android убить Activity, которая находится на переднем плане? Если да, то в каких случаях?
14 * Может, если Activity, находящаяся на переднем плане, потребляет слишком много памяти. Когда с помощью этой Activity достигнуто состояние подкачки памяти, она уничтожается, чтобы UI сохранял свою отзывчивость.
15
16### Fragment
17 * Что такое Fragment и где он может использоваться?
18 * Можно ли создать Fragment без UI? Если да, то в каких случаях это можно использовать?
19 * Что такое FragmentManager?
20 * Что такое FragmentTransaction?
21 * Как восстановить состояние Fragment?
22 * Какие методы вызываются только 1 раз за жизненный цикл?
23 * onAttach(), onCreate(), onDestroy(), onDetach()
24 * Чем отличаются Fragment и Activity? Объяснить их взаимоотношения.
25 * Обычно Activity - отдельный целенаправленный модуль с чётким предназначением (набор номера, просмотр карты, сделать снимок или отправить электронное письмо). Хотя, разработчику ничего не мешает сделать более сложный интерфейс, который содержит в себе несколько сложных модулей. Обычно такие модули принято разделять на Fragments, которые имеют свой жизненный цикл, а так же могут быть добавлены или удалены по желанию. Важно помнить, что жизненный цикл Fragment напрямую зависит от жизненного цикла его Activity. То есть, когда действие приостановлено, то все фрагменты в нем также приостановлены, и когда Activity разрушена, все его фрагменты тоже.
26 * Почему рекомендуется использовать только стандартный конструктор при создании Fragment?
27 * Как взаимодействовать между двумя фрагментами без участия Activity??
28
29### Service & AsyncTask
30 * Что такое Service?
31 * Service - компонент Android приложения, который может выполнять длительные операции в фоновом режиме и не содержит UI. Другой компонент приложения может запустить Service, который продолжит работу в фоновом режиме даже в том случае, когда пользователь перейдет в другое приложение.
32 * Это не значит, что работает в другом потоке.
33 * И это не значит, что вы сможете бесконечно долго что-то делать в фоне. Система убьёт вас, если вы будете злоупотреблять этим.
34 * В каких случаях использование Services полезно?
35 * Чем отличаются Intent Service от Service?
36 * `Service` - базовый класс для всех сервисов, расширив который, можно создать любой сервис. Класс, который расширяет сервис, будет выполняться в Main Thread, поэтому, будет блокировать UI, если таковой имеется. Поэтому, нужно либо создавать отдельный поток в Service, либо использовать его для не слишком долгих операций.
37 * `IntentService` - Подкласс Service. Он Используется, если в сервисе нужно выполнять какие-то тяжелые задачи, и мы не хотим сами возиться с асинхронностью. Принцип работы этого вида сервиса прост. Он создает новый поток для своей работы. Затем берет все Intent пришедшие ему в onStartCommand и отправляет их на обработку в этот поток. Как именно обрабатываются Intent – зависит от нас, т.к. мы сами кодим это в методе onHandleIntent.
38 * Какие типы Services бывают?
39 * Какие режимы бывают у Services?
40 * Как остановить Service?
41 * Когда останавливается Bound Service?
42 * Какой метод отличает его, чтобы служба работала в фоновом режиме?
43 * Какие проблемы могут возникнуть при использовании Services?
44 * Что такое AsyncTask?
45 * Когда нужно использовать Service, а когда AsyncTask?
46 * Какие есть проблемы у Activity и AsyncTask? Как их избежать или решить?
47
48### Intent
49 * Что такое Intent?
50 * Что такое Action?
51 * Что такое Intent Filter?
52 * Что такое StikyIntent?
53 * Что такое PendingIntent?
54 * Объясните основные 3 случая, когда используется Intent.
55 * Отличия Explicit Intent и Implicit Intent.
56
57### Общие
58 * Как происходит отрисовка любого (почти) View в Android?
59 * Расскажите структуру Manifest.xml
60 * Назовите основные компоненты Android приложения.
61 * Что такое Context?
62 * Что такое BroadcastReciever?
63 * Что такое LocalBroadcastManager?
64 * Что такое ContentProvider?
65 * Какая разница между обычным растровым изображением и 9-patch изображениями?
66 * Что за ошибка Application Not Respondin и как избежать её появления в приложении?
67 * Разница между Serializable и Parcelable? Что лучше подходит для Android?
68 * Что такое Views и ViewGroups и чем они отличаются?
69 * Как создать приложение, которое поддерживает все размеры экрана?
70 * Что такое утечки памяти? Приведите пример, когда это может произойти.
71 * Назовите плюсы и минусы хранения данных в SharedPreferences.
72
73### Архитектура
74 * MVC
75 * MVP
76 * MVVM
77 * MVI
78 * Какие приемущества у MVVM над MVP?
79
80### Retrofit2
81 * В чём плюсы использования Retrofit вместо AsyncTask?
82 * Как обрабатывать несколько сетевых вызовов с помощью Retrofit?
83
84### RxJava2
85 * В чём смысл и какие плюсы у реактивного программирования?
86 * Основные принципы Observable и Observer
87 * Какие типы Observables существуют?
88 * Разница между Observable и Flowable
89 * Что такое Backpressure и какие бывают стратегии работы с ним?
90 * Что такое Single?
91 * Что такое Completable?
92 * Что такое Maybe?
93 * В каких случаях используются Single, Completable и Maybe?
94 * from, just — для чего и в чем отличия?
95 * map, flatMap, concatMap, switchMap — для чего и в чем отличия?
96 * Что делают observeOn() и subscribeOn()?
97 * Что будет, если вызвать несколько subscribeOn()? А если несколько observeOn()?
98 * Разница между Hot Observable и Cold Observable?
99
100### Room & SQL
101 * Что такое PrimaryKey?
102 * Что такое Foreign Key?
103 * Как избавиться от проблемы вложенных классов?
104 * Как из таблицы Markers достать уникальные элементы?
105 * Что такое Pattern Matching в SQL?