Альфа-Банк · июнь 2025

Тех собес на middle-senior Android Разработчик в Альфа-Банк

middle-senior Тех собес 31 вопрос 1 задача
1

Теория

1. В чем особенность Kotlin по сравнению с Java?

2. Почему разработчики Kotlin не могли сделать synchronized одним ключевым словом?

3. Только ли с Java должен работать Kotlin?

4. Сталкивался ли с контрактами?

5. Что такое inline-функции, что они делают и когда уместны?

6. Что такое reified?

7. Что такое стирание типов и почему оно существует?

8. Какие есть способы взаимодействия между сервисом и Activity?

9. Что такое EventBus?

10. Что такое ResultSet view?

11. Придумай способ, чтобы Dagger-компонент переживал смену конфигурации Activity.

2

Задача 1

Практика

12. Задача: Какие значения будут положены в этот HashSet?

data class Dog(
   val breed: String = "shepherd"
) {
   var name = ""
}

val set = hashSetOf(
   Dog().apply { name = "Joe" },
   Dog("shark"),
   Dog().apply { name = "Henry" }
)
3

Вопросы по задаче 2

Практика
Вопрос

13. Как на самом деле называется эта функция?

Ответ

14. Чем synchronized является в Java

15. В чем особенность Kotlin как языка?

16. Почему synchronized в Kotlin сделано именно так?

17. Зачем нужны kotlin.contracts.contract?

18. Зачем здесь @Suppress("NONPUBLICCALLFROMPUBLIC_INLINE")?

19. Когда уместно использование inline?

20. Что сделать с функцией, чтобы компилятор не ругался на ненужный inline?

21. Расскажи про ключевое слово reified

4

Вопросы по задаче 3

Практика
class Activity {

    fun onCreate() {
        Graph.create().inject(this)
    }

    fun onDestroy() {
        //
    }
}

@Component
interface Graph {

    companion object {
        fun create(): Graph {
            return DaggerGraph.create()
        }
    }
}

22. Какие способы взаимодействия между сервисом и активити?

23. Что такое EventBus? Это антипаттерн? Почему?

24. Расскажи про RecyclerView

25. DiffUtil. Какие методы там есть? getChangePayload()

26. Можешь придумать способ, чтобы компонент переживал смену конфигурации?

27. Что не рекомендуется делать в методе onDraw() при создании Custom View?

28. Эффект какого из launch mode Активити описан ниже?

Если экземпляр Активити уже существует на вершине текущего Task, новый экземпляр не будет сгенерирован, а новые данные для Активити будут оправлены через onNewIntent().

29. В каком из случаев вызов onDestroy() в Активити не гарантирован?

30. Какой из перечисленных источников данных RxJava либо успешно завершает свою работу без какого-либо возвращаемого значения, либо выбрасывает исключение?

31. Для чего используется Scope @Singleton в Dagger2?

32. Какая аннотация в Dagger2 используется для инъекции переменных зависимостей, которые неизвестны на момент компиляции?