14 вопросов
Практика
Какова цель и синтаксис делегирования интерфейса в Kotlin, и как это позволяет классу делегировать реализацию своего интерфейса другому объекту?
Как работает делегирование свойств в Kotlin, и какие ключевые интерфейсы и встроенные делегаты используются для его реализации?
Можешь объяснить ключевое слово `lateinit` в Kotlin, включая его ограничения, типичные случаи использования и способы проверки, был ли инициализирован свойство `lateinit`?
Можешь объяснить, как работает `lazy` делегат в Kotlin, включая то, когда происходит инициализация, как кешируется значение и какие у него характеристики потокобезопасности?
Какие ключевые различия между `lateinit` и `lazy` инициализацией свойств в Kotlin, и когда следует использовать каждый из них?
Можешь объяснить, что такое scope functions в Kotlin и описать ключевые различия между пятью доступными scope functions с точки зрения ссылки на контекстный объект и возвращаемых значений?
Можешь объяснить, как работают generics в Kotlin, и показать пример того, как они обеспечивают type-safe и переиспользуемый код?
В Kotlin generics, какие ключевые различия между использованием star projection (`List<*>`) и `List<Any>`, и когда нужно использовать каждый из них?
Можешь объяснить разницу между ковариантностью (`out`) и контравариантностью (`in`) в Kotlin generics и как они контролируют, используются ли параметры типов для чтения или записи значений?
Как ключевое слово `reified` в Kotlin позволяет тебе работать с информацией о типах generic'ов во время выполнения, и какие у него есть практические применения?
Как работают ограничения типов в дженериках Kotlin, и какие существуют способы реализации верхних границ и множественных ограничений?
Можешь объяснить, как Kotlin реализует паттерн delegation и описать роль ключевого слова `by` в делегировании как классов, так и свойств?
Какие ключевые различия между функциями области видимости `let`, `run`, `with`, `also` и `apply` в Kotlin, и когда следует использовать каждую из них?
Какие ключевые различия между scope-функциями `apply` и `with` в Kotlin, и когда следует использовать каждую из них?