Android-Notes (in progress)
RUS
Список вопросов
Список вопросов по темам о разработке на андроид, корутинам и compose.
Kotlin
- Разница между class и data class, data object и object
- Способы реализовать функциональный тип
- Разница между 0 until 10, 0..10 and 0..<10
- Что такое inline/noinline/crossinline? Какие плюсы от использования? Почему не использовать их постоянно? Когда мы не можем использовать inline? Что такое non-local-return?
- Что такое reified? В чем плюс использования с inline?
- Сколько параметров в конструкторе может иметь inline class? Почему?
- Контравариантность, ковариантность, инвариантность
- Разница между Nothing, Unit и Any
- Можно ли наследоваться от data class? Почему?
Ответы по теории Kotlin
Coroutines
- Разница между корутинами тредами
- Какие основные составляющие компоненты корутин вы знаете. Опишите их роль
- Как основные компоненты корутин зависят друг от друга
- Расскажите про обработку исключений
- Что такое suspension points?
- Разница между async и launch
- Виды Job
- Join, JoinAll, Await, AwaitAll
- В чем разница между deferreds.map { it.await() } and deferreds.awaitAll()
- Что такое CoroutineStart? Какие типы бывают?
- Что такое ensureActive?
- Как поместить дополнительные данные в CoroutineContext?
- Напишите код который приведет к deadlock
- Как отменяются скоупы при выбросе ошибки в дочернем скоупе?
- Что такое Flow? Когда мы должны его использовать?
- Что такое CoroutineDispatcher? В каких случаях какой использовать?
Ответы по теории Coroutines
Вопросы по практике Coroutines
Ответы по практике Coroutines
Compose
- Что такое рекомпозиция
- remember, remember(key), rememberSaveable, remember { derivedStateOf() } различия
- Что такое Side-Effect?
- Какие виды Side-Effect бывают?
- Типы state
- Что такое Snapshot Policy?
- Переиспользует ли LazyColumn элементы по аналогии с RecyclerView?
- Сохранит ли by remember {} свое значение при повороте экрана?
- Что значит поднятие состояния (state hoisting)?
- Способы сохранения состояния при смене конфигурации
- Жизненный цикл composable
- Можно ли передавать viewModel в дочерние composable функции?
- Как избежать вызова рекомпозиции всех элементов списка при добавлении одного нового элемента?
- За что отвечает аннотация @Stable
- Как добавить отступы между элементами списка?
- Когда мы работаем с ViewGroup, большая вложенность элементов приводит к частому измерению размеров, и уменьшает производительность. Сохраняется ли такая проблема в Compose?
- Можно ли изменить количество измерений размеров для компоуз элементов?
- Как создать свой Layout (ViewGroup)?
- Что такое CompositionLocal?
- compositionLocalOf vs staticCompositionLocalOf
- Три фазы создания Composable UI
Ответы по теории Compose
Android
- Лимит на размер bundle?
- Что такое Binder транзакция?
- Как данные могут передаваться в обход Binder
- Какой процессор использует Android?
- Зачем нужен Dalvik/Art вместо JVM?
- Разница между Dalvik и Art
- Самая ранняя точка входа в приложение?
- Отличия контекстов
- Приоритеты процессов
- Мы обновили приложение, хранили Serializable и Parcelable. Добавили новое поле, как поддержать изменение?
- Жизненный цикл view. Когда при invalidate() не вызовется onDraw(). Всегда ли отработает requestLayout()?
- Когда луче использовать svg, png, webp
- Различия в работе glide, picasso, koil
- Отличие LongPolling от WebSocket
- Как андроид под капотом отрисовывает интерфейс?
- Как запретить активити уничтожаться при повороте экрана?
- Разница между low memory killer и out of memory killer?
- Расскажите про версии garbage collector в Android
- Как происходит запуск приложения
- Что такое Zygote?
- Разница между targetSDK и compileSdk
- Как происходит компиляция приложения
- Что такое процесс в Android
- Что такое App Sandbox
- Может ли BroadcastReceiver быть запущен без объявления в манифесте?
- Виды сервисов
- Отличие IntentService, Service, JobIntentService, JobService
- За что отвечают Content resolver и Content Provider
- Что такое PendingIntent?
- Если создать два Pending Intent отличные только по данным помещенным в data, с какой ошибкой можно столкнуться?
- Когда можно сохранять state чтобы гарантированно восстановить его даже в случае если андроид убьёт приложение?
- Какие launch mode существуют?
Ответы Android
DI
- Dagger/Hilt vs Koin
- ServiceLocator vs DI
- Основные компоненты в DI
Dagger
- Аннотации в Dagger
- Как работает создаение Scope компонента под капотом?
- Почему Hilt не стоит использовать для многомодульности
- Lazy vs Scope?
- В чем минус Subcomponent? Как разделить логику компонента без использования subcomponent?
Ответы DI
Multithreading
- В чем отличие потока от процесса
- Какую функцию выполняет Handler?
Ответы Multithreading
ENG
QuestionsPool
Full questions list for Coroutines, Compose, Common Android topics `