— Вопросы по Android SDK:
1. Как реализовать спойлеры в чате на Android Views (RecyclerView и TextView), чтобы по клику скрытая часть текста отображалась? 2. На чем основан механизм отображения HTML-текста в Android TextView? 3. Как решить задачу добавления заголовка (Header) с токеном авторизации ко всем 50+ запросам в приложении, используя Retrofit и OkHttp? 4. Какой механизм можно использовать, чтобы автоматически логировать все запросы и ответы в OkHttp?p?
— Вопросы по Kotlin:
1. Почему в Kotlin List имеет только 5 компонентов (componentN от 1 до 4)? 2. Как реализовать шестой компонент (component5) для List? 3. Как устроен extension под капотом, за счет чего он реализуется? 4. Какие бывают функции области видимости (scope functions) в Kotlin? 5. В чем основное различие между also и let? 6. За счет чего достигается проникновение this и it внутрь контекста функций области видимости? 7. Что такое “implicit receiver” (неявный получатель)? 8. В каких синтаксических конструкциях Kotlin встречается запись, напоминающая экземпляр класса, но являющаяся функцией?ляющаяся функцией?
— Задача 1. Ознакомиться с кодом и ответить на вопросы.
class SpecialFunction : () -> Unit {
override fun invoke() {
println("Invoked from an instance.")
}
}
fun main() { try { SpecialFunction()() } catch (ex: Exception) { println(“An error occurred”) }}
— Вопросы по задаче 1:
1. Каков будет результат выполнения функции main? 2. Для чего используется функция invoke?ke`?
— Задача 2. Ознакомиться с кодом и ответить на вопросы.
val map = mutableMapOf("ZeroKey" to "0")
.plus(
"firstKey" to "1",
).apply {
this.plus("SecondKey" to "2")
}
— Вопросы по задаче 2:
1. Каков будет результат выполнения этого примера кода? 2. Что такое инфиксные функции (in-fix functions)?
— Задача 3. Имеет ли право на существование такой синтаксис ? И где такое можно встретить?
val pair: Pair = "first" to "second"
val (first, second) = pair
— Задача 4. Ознакомиться с кодом и ответить на вопросы.
withContext(Dispatchers.Main) {
val result =
map { ... } // В каком диспатчере?
.flowOn(Dispatchers.IO)
.filter { ... } // В каком диспатчере?
.flowOn(Dispatchers.Default)
.single() // А здесь?
}
— Вопросы по задаче 4:
1. В каком диспетчере будет выполнен каждый оператор в примере с Flow?
2. Как называется функция single и аналогичные ей в терминологии Flow? Чем они отличаются от filter и map?
3. Где и как можно использовать CoroutineExceptionHandler и для чего он нужен?
4. Почему CoroutineExceptionHandler игнорируется в дочерних корутинах, запущенных через launch?ерез launch?