## Вопросы для самоконтроля: 1. В какой момент происходит интерполяция строк? Во время компиляции или во время выполнения? 2. Во что компилируются функции верхнего уровня? 3. Чем отличается Unit от других объектов. 4. Какой порядок разрешения функций со значениями по умолчанию. 5. Что не является выражением в Котлин? 6. Кто такой Волдеморт? 7. В чем отличие declaration site variance от use site variance. Какой из вариантов поддерживается в Котлин? 8. Как выводится тип выражения try? 9. Есть ли разница между `Nothing` и `Nothing?` ? 10. Какие ограничения наложены на конструктор data class. 11. В каком случае вычисляется правая часть выражения безопасного вызова? 12. Что такое Элвис оператор? 13. Как работает стирание дженериков при разрешении расширений? 14. Может ли у свойства-расширения быть собственное значение? 15. Чем отличается run от with? 16. Стоит ли использовать scope функции везде, где это возможно. 17. Чем отличается arrayListOf()` от `mutableListOf()`? 18. List в Kotlin всегда реализует List в Java при интеропе? 19. Можно ли сделать собственную реализацию карты с get и set при помощи квадратных скобок? 20. В чем отличие forEach на карте в стандартной библиотеке Котлин и Java? 21. Как работают функции componentN? 22. Почему в Котлин нет диапазонов для чисел с плавающей точкой? 23. Какой оператор должен быть реализован типе для того, чтобы он стал делегатом? 24. Можно ли делегировать при помощи расширения? 25. В какой момент происходит инлайнинг инлайн функции? 26. Может ли быть сделана реификация типа без инлайна? 27. В каких случаях следует использовать тип Array?