— Теория:
1. В чем особенность котлина по сравнению с джававой? 2. Почему разработчики котлина не могли сделать синхронайз одним ключевым словом? 3. Только ли с джавой должен работать котлин? 4. Сталкивался ли с контрактами? 5. Что такое инлайн что они делают и когда уместны? 6. Что такое рефайт? 7. Что такое затирание типов и почему оно существует? 8. Какие есть способы взаимодействия между сервисом и активити? 9. Что такое EventBus? 10. Что такое ResultSet view? 11. Представим, что у нас есть какая-то Activity. На этой Activity стандартно создается Dagger-компонент методом DI inject. Придумай способ, чтобы этот Dagger-компонент переживал конфигурацию. Как это можно сделать?
— Задача 1: Какие значения будут положены в этот хэш сэт?
data class Dog(
val breed: String = "shepherd"
) {
var name = ""
}
val set = hashSetOf( Dog().apply { name = “Joe” }, Dog(“shark”), Dog().apply { name = “Henry” })
— Задача 2: Ознакомьтес с представленным кодом и ответьте на вопросы по задаче.
public inline fun secretFunction(lock: Any, block: () -> R): R {
callInPlace(block, InvocationKind.EXACTLY_ONCE)
}
@Suppress(“NONPUBLICCALLFROMPUBLICINLINE”, “INVISIBLEMEMBER”)monitorEnter(lock)try { return block()}finally { @Suppress(“NONPUBLICCALLFROMPUBLICINLINE”, “INVISIBLEMEMBER”) monitorExit(lock)}
— Вопросы по задаче 2:
1. Как на самом деле называется эта функция? (synchronized) 2. Чем synchronized является в Java 3. В чем особенность Kotlin как языка? 4. Почему synchronized в Kotlin сделано именно так? 5. Зачем нужны kotlin.contracts.contract? 6. Зачем здесь @Suppress(“NONPUBLICCALLFROMPUBLIC_INLINE”)? 7. Когда уместно использование inline? 8. Что сделать с функцией, чтобы компилятор не ругался на ненужный inline? 9. Расскажи про ключевое слово reifiedжи про ключевое слово reified
— Задача 3 Ознакомьтес с представленным кодом и ответьте на вопросы по задаче.
class Activity {
text📋fun onCreate() {
Graph.create().inject(this)
}
fun onDestroy() {
//
}
}
@Componentinterface Graph {
text📋companion object {
fun create(): Graph {
return DaggerGraph.create()
}
}
}
— Вопросы по задаче 3:
1. Какие способы взаимодействия между сервисом и активити? 2. Что такое EventBus? Это антипаттерн? Почему? 3. Расскажи про RecyclerView 4. DiffUtil. Какие методы там есть? getChangePayload() 5. Есть активити, в этой активити создается даггеровский компонент (в onCreate). Можешь придумать способ, чтобы компонент переживал смену конфигурации? 6. Что не рекомендуется делать в методе onDraw() при создании Custom View? 7. Эффект какого из launch mode Активити описан ниже? Если экземпляр Активити уже существует на вершине текущего Task, новый экземпляр не будет сгенерирован, а новые данные для Активити будут оправлены через onNewIntent(). 8. В каком из случаев вызов onDestroy() в Активити не гарантирован? 9. Какой из перечисленных источников данных RxJava либо успешно завершает свою работу без какого-либо возвращаемого значения, либо выбрасывает исключение? 10. Для чего используется Scope @Singleton в Dagger2? 11. Какая аннотация в Dagger2 используется для инъекции переменных зависимостей, которые неизвестны на момент компиляции? например, для инъекции id в класс Repository?ции id в класс Repository?