Вопросы по Android SDK
1. Как реализовать спойлеры в чате на Android Views (RecyclerView и TextView), чтобы по клику скрытая часть текста отображалась?
2. На чем основан механизм отображения HTML-текста в Android TextView?
3. Как решить задачу добавления заголовка с токеном авторизации ко всем запросам в приложении, используя Retrofit и OkHttp?
4. Какой механизм можно использовать, чтобы автоматически логировать все запросы и ответы в OkHttp?
Вопросы по Kotlin
5. Почему в Kotlin List имеет только 5 компонентов (componentN от 1 до 4)?
6. Как реализовать шестой компонент (component5) для List?
7. Как устроен extension под капотом, за счет чего он реализуется?
8. Какие бывают функции области видимости в Kotlin?
9. В чем основное различие между also и let?
10. За счет чего достигается проникновение this и it внутрь контекста функций области видимости?
11. Что такое неявный получатель?
12. В каких синтаксических конструкциях Kotlin встречается запись, напоминающая экземпляр класса, но являющаяся функцией?
Задача 1.
Практика13. Задача: Ознакомиться с кодом и ответить на вопросы
class SpecialFunction : () -> Unit {
override fun invoke() {
println("Invoked from an instance.")
}
}
fun main() {
try { SpecialFunction()() }
catch (ex: Exception) { println("An error occurred") }
}14. Каков будет результат выполнения функции main?
15. Для чего используется функция invoke?
Задача 2.
Практика16. Задача: Ознакомиться с кодом и ответить на вопросы
val map = mutableMapOf("ZeroKey" to "0")
.plus(
"firstKey" to "1",
).apply {
this.plus("SecondKey" to "2")
}17. Каков будет результат выполнения этого примера кода?
18. Что такое инфиксные функции?
Задача 3.
Практика19. Задача: Проанализировать синтаксис деструктуризации Pair
val pair: Pair = "first" to "second"
val (first, second) = pair20. Имеет ли право на существование такой синтаксис и где такое можно встретить?
Задача 4.
Практика21. Задача: Проанализировать работу операторов в цепочке Flow
withContext(Dispatchers.Main) {
val result = map { ... } // В каком диспатчере?
.flowOn(Dispatchers.IO)
.filter { ... } // В каком диспатчере?
.flowOn(Dispatchers.Default)
.single() // А здесь?
}22. В каком диспетчере будет выполнен каждый оператор в примере с Flow?
23. Как называется функция single и аналогичные ей в терминологии Flow и чем они отличаются от filter и map?
24. Где и как можно использовать CoroutineExceptionHandler и для чего он нужен?
25. Почему CoroutineExceptionHandler игнорируется в дочерних корутинах, запущенных через launch?