Interview Questions on Intermediate Kotlin Features

1. What are inline classes in Kotlin, and how do they improve performance?

2. What are delegated properties in Kotlin, and how do they work?

3. How does Kotlin handle default arguments and named arguments in function calls?

4. What is the difference between `object` expressions and `object` declarations in Kotlin?

5. What is the purpose of the `inline` keyword for higher-order functions in Kotlin?

6. What are reified types in Kotlin, and how are they used?

7. How do `vararg` parameters work in Kotlin, and when should you use them?

8. What is the difference between `read-only` and `mutable` collections in Kotlin?

9. How does the `with` function work in Kotlin, and how is it different from `apply`?

10. What are higher-order functions with lambdas as receivers in Kotlin?

11. What are destructuring declarations in Kotlin, and how are they used?

12. What are inline properties in Kotlin, and how are they defined?

13. How do `reified` and `inline` work together in Kotlin generics?

14. What are the key differences between `run`, `let`, and `apply` in Kotlin?

15. What is the difference between `takeIf` and `takeUnless` in Kotlin?

16. How does Kotlin's `when` expression work with multiple conditions?

17. What are type projections in Kotlin generics, and why are they useful?

18. What is the purpose of Kotlin's `by lazy` initialization?

19. How does Kotlin support function references and method references?

20. What is the difference between `lazy` and `lateinit` properties in Kotlin?