Вопросы для Android-собесов

Приуэт! Давно ничего не писал)

Это вопросы для собесов, по которым я сам готовлюсь. Список обновляется и улучшается.

Также будут посты с ответами, по каждому из вопросов.

Вопросы я составляю так, чтобы можно было сразу копипастнуть Гуглу или ЧатГопоте(ChatGPT) и получить более подробный ответ =)

Android

  1. Расскажи про основные компоненты Android приложения
  2. Жизненный цикл Activity. Какой порядок вызова методов жизненного цикла для двух Activity?
  3. Отличия жизненного цикла Fragment-a от жизненного цикла Activity
  4. В каких случаях View уничтожается, а Fragment живет? Зачем это может быть нужно?
  5. saveInstanceState зачем нужен, как и где используется? После чего и до чего вызывается onSaveInstanceState? (- После Android P после onStop, иначе до onDestroy)
  6. Смена конфигурации. Как и где обрабатывать? Куда сохраняется этот самый стейт в системе?
  7. onDestroy когда будет вызван? (не всегда, когда приложение смахнули)
  8. onRestart когда будет вызван? (активити пересоздалось, гаранитировано с андроид)
  9. Методы жизненного цикла View, какие есть, зачем нужны?
  10. Состояния View, как лучше реализовать?
  11. В каких случаях onLayout два раза вызывается?
  12. onMeasure View, какие параметры в него приходят?
  13. ContentProvider, что такое, зачем нужен?
  14. BroadcastReceiver, что такое, зачем нужен? Можно ли отправить интент только внутри приложения? (LocalBroadcastManager)
  15. Можно ли сделать приложение например только с BroadcastReciever-ом? Или только с ContentProvider-ом?
  16. Какой компонент Android-е запускается первым? (Content Provider. Инит на ранней стадии, ресуры, и все такое)
  17. Какие компоненты реагируют на смену конфигурации? (все)
  18. Сервисы. Что такое, для чего нужны, какие бывают?
  19. Чем Animation отличается от Animator-а?
  20. Context в Android-е. Какие бывают, чем отличаются?
  21. ANR в Android-е, как он появляется под капотом? (хэндлер чекает юай, прогоняет через ворк менеджер (все приложения))
  22. Какие классы отвечают за работу с ресурсами в Android-е (AssetManager -> Resources -> ContextThemeWrapper). Чем отличаются?
  23. Как обычно работаешь с ресурсами? Используешь ли аттрибуты? Приходилось ли реализовывать смену темы приложения?
  24. Что такое таск в Android-е? Как задать поведение Activity (task affinity, launchmod)
  25. RV DiffUtils — зачем нужен и как используется?
  26. WorkManager — зачем нужен и как используется?
  27. Как выгружается приложение в Android-е? (как выгружается процесс)
  28. Handler, Looper, MessageQueue, Message — что такое, как работают? Использовал ли когда-нибудь напрямую?
  29. IPC. Межпроцессное взаимодействие, AIDL
  30. Приоритетность процессов в андроиде
  31. Расскажи про порядок запуска приложения. Что такое Zygote, что у нее внутри?
  32. Отличия ART от Dalvik
  33. Расскажи что такое apk, что в него входит. (манифест, декс, нативные либы)
  34. Расскажи про структуру manifest файла, что в нем обязательно прописывать?

Kotlin

  1. Зачем нужны data class-ы в Kotlin? Чем отличаются от обычных классов?
  2. Участвуют ли в генерации методов data class поля из body? Можно ли выпилить из генерации поле из конструктора?
  3. Можно ли наследоваться от data class-а? Почему?
  4. Можно использовать var поля в data class-е? Что будет, если использовать data class с var полем, например, в качестве ключа хэшмапы?
  5. Что такое object? Потокобезопасен ли он? Какие еще есть реализации синглтона?
  6. Что такое inline функции, зачем нужны? crossinline, noinline, ограничения crossinline (non-local returns), reified
  7. Ковариантность, инвариантность в Kotlin-е. Чем отличается от Java?
  8. Sequence в Kotlin-е. Зачем нужны, как работают? Какой ближайший аналог в Java? (стримы) Чем от них отличаются?
  9. Sealed class в Kotlin-е — что такое, зачем нужны? Можно ли наследовать один от другого?
  10. Что такое Nothing в Kotlin-е, зачем нужен?
  11. init {} в Kotlin это аналог чего в Java?
  12. Делегаты в котлине, какие бывают, приходилось ли пользоваться и зачем?
  13. Extension в котлине, как работают? Можно ли сделать extension к интерфейсу? typealias? Функциональному типу?
  14. Какая польза от typealias? Во что он компилируется?
  15. Kotlin Contracts зачем нужны? Где использовать?

Coroutines

  1. Как работают внутри, чем отличаются от тредов?
  2. Что такое CoroutineScope? CoroutineScope vs CoroutineContext зачем он нужен? (чтобы построить иерархию Job-ов джобы наследуют контекст скоупа (но могу модифицировать))
  3. Dispatchers
  4. Coroutine Context — сет из контекс элементов: Dispatcher, Job, Error Handler, Name
  5. CoroutineScope vs CoroutineContext (джобы наследуют контекст скоупа (но могу модифицировать))
  6. Контракт между джобами в иерархии: (Парент джоба не закончится, пока не закончатся все чайлды. Отмена парента отменит всех чайлдов. Отмена чайлда не отменяет парента и других чайлдов)
  7. Что такое Supervisor Job? (не кэнселит другие джобы, если одна сломалась)
  8. Можно похэндлить эксепшен в корутине через try-catch. Что произойдет, если этого не сделать? try-catch, а когда CoroutineException Handler?
  9. Основные билдеры корутин? Разница между launch и async
  10. Как работают suspend функции?
  11. На каком слое лучше получить результат от suspend функции?
  12. Можно ли на корутинах получить дедлок?
  13. Горячие и холодные источники данных — что это такое, зачем нужны? пример

Java, JVM, JMM

  1. Object в Java. Что внутри? Сколько памяти занимает?
  2. hashCode() и equals(). Какой у них контракт? Как нужно их переопределять? Где они используются и как?
  3. Модель памяти в Java? Heap, Stack. Как хранятся static объекты?
  4. Если два потока выполняют один и тот же метод, будет ли между ними шариться переменная из метода?
  5. ClassLoader в Java. Какие бывают? Какие отрабатывают на старте Android приложения?
  6. Чем процесс от потока отличается? Какое взаимоотношение процессов с потоками?
  7. Сколько может быть процессов в Android приложении? Сколько потоков?
  8. Как получить утечку памяти в Android-е?
  9. Garbage Collector. Как работает, какие бывают?
  10. GC root-ы
  11. Какой GC в ART?
  12. Бывают ли в Android-е stop-the-world паузы?
  13. Расскажи про поколения памяти при сборке мусора
  14. Как GC понимает, что надо переместить объект из Eden в Old?
  15. Заколлектятся ли две стронг ссылки друг на друга? В каком случае не заколлектятся?
  16. Что такое jni-reference?
  17. Расскажи про типы ссылок в Java
  18. Как передаются объекты в методы? Что случится с объектом, который мы передали в метод и занулили параметр?
  19. Что такое StringPool? Почему предпочтительнее пароли передавать в CharSequence вместо String?
  20. Чем отличаются StringBuffer от StringBuilder? Когда использовать StringBuilder?

Collections

  1. Основные интерфейсы коллекций в Java — какие знаешь
  2. Какую структуру данных получим, если в котлине написать listOf()? В чем отличия ArrayList и LinkedList? Сложность добавления в каждый из них? Сложность удаления из середины?
  3. Что за структуру данных в котлине мы получим если напишем mapOf()? Почему именно Linked? Как работает хэшмап? сложность добавления, удаления?
  4. Почему может или не может быть налл ключом в хэшмапе, хэшсете?
  5. Тримап, зачем нужен, как работает? механизмы балансировки
  6. Complexity по памяти и по времени — какие вспомнишь навскидку с примерами.
  7. Какая сложность у вложенной итерации по коллекции? если вложенность x3?
  8. Как оценить сложность произвольного алгоритма по времени и по памяти? logN, nlogN, N^2, N

Concurrency

  1. У класса Object есть методы: wait(), notify(), notifyAll(). Для чего они? Как они работают? Какое обязательное условия для их использования?
  2. Что такое монитор в Java, как их можно реализовать? Как он реализован по умолчанию?
  3. Что такое Race condition?
  4. Расскажи DeadLock, LiveLock, Starvation, SplitBrain
  5. Какие знаешь механизмы реализации Concurrency? Semaphore, CountDownLatch — что такое, зачем нужны, какие бывают?
  6. Как потоки в себе хранят данные, как к себе обращаются?
  7. Как сделать так, чтобы поток не кэшировал данные? Что делает volatile?
  8. Что делает synchronized?
  9. Как из HashMap-а сделать потокобезопасный HashMap?
  10. Что такое атомарные операции? Какие механизмы их реализации можешь перечислить? Атомарны ли операции присваивания?

Architecture, general topics

  1. SOLID. Примеры на все
  2. Принципы ООП
  3. Dependency Injection. Сервис локейшен против ДИ
  4. Зависимости через композицию или агрегацию? В конструктор или филды?
  5. Какой принцип нарушает инъекция прямо в поля? (Нарушает сингл респосибилити — инжект в абстрактный класс)
  6. Композиция
  7. Аггрегация
  8. Что такое скоуп?
  9. Паттерны проектирования, навскидку группы с парой примеров в каждой (является ли апплай билдером? Нет)
  10. Почему синглтон антипаттерн?
  11. Три способа создания синглтон? Какой из них тред сейф? все
  12. Какие бывают тесты? Какие писал, на чем? TDD?
  13. MVP, MVI (UDF*), MVVM — что из себя представляют, какие использвал, чем они отличаются?
  14. Нужно заходить в приложение по пин-коду, но он никуда не отправляется и должен храниться на устройстве. Как его нужно хранить?
  15. Как ты понимаешь CLEAN?
  16. Многомодульная архитектура. Работал ли с ней, если да, то как делили модуля
  17. в каком модуле будет DI конфиг?
  18. Код ревью. Как проходит типовой кейс, на что обращаешь внимание в первую очередь, на что во вторую?

RxJava

  1. Какие операторы map ты знаешь? чем они отличаются?
  2. Если сделать flatMap в 2 запроса ретрофита — последовательно ли они выполнятся? На каком пуле работает ретрофит адаптпер рх? (ни на каком)
  3. Какие пулы есть в рх?
  4. Observable.zip — надо ли указывать потоки? (на рандодмном в зависимости от того, кто последний заэмитил элемент)
  5. Понятие Rx контракта — что это и зачем?
  6. Может ли 2 ошибки придти в onError?
  7. Что такое Backpressure?
  8. Горячие и холодные обзерваблы — что это такое, зачем нужны?
  9. Subject-ы в rx — что такое и пользовался ли? Какие бывают и чем отличаются? Какие горячие, какие холодные?
  10. На что влияют методы subscribeOn и observeOn?
  11. Что делать, если надо передать null в обзервабле?

Опубликовано

в

, , , ,

от

Метки: