WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Kotlin · Intermediate · question 23 of 100

Explain the difference between lazy initialization and lateinit properties in Kotlin. Provide use cases for each.?

📕 Buy this interview preparation book: 100 Kotlin questions & answers — PDF + EPUB for $5

In Kotlin, ‘lazy initialization‘ and ‘lateinit properties‘ are used to delay the initialization of a property. However, they are fundamentally different and have different use cases.

‘Lazy initialization‘ is used to instantiate properties when they are first accessed. The instantiation is deferred until the value is needed for the first time. A ‘lazy‘ property is initialized using a lambda expression that provides the value of the property. Once the property is initialized, subsequent references to the property will return the same value without recomputing it again.

Here is an example of a ‘lazy initialization‘:

val myLazyValue: String by lazy {
    // computation of the value
    "Hello, World!"
}

In this example, ‘myLazyValue‘ is a ‘lazy property‘ that gets initialized with the value ‘"Hello, World!"` only when it is accessed the first time.

On the other hand, ‘lateinit‘ is used to delay the initialization of a property that cannot be initialized at the time of the object creation, during instance initialization or constructor parameter initialization. The property is marked with the ‘lateinit‘ keyword, indicating that it will be initialized at a later point in time, before it is used.

Here is an example of ‘lateinit‘:

class MyClass {
    lateinit var myLateInitValue: String
    
    fun setUp() {
        // initialization of the property
        myLateInitValue = "Hello, World!"
    }
}

In this example, ‘myLateInitValue‘ is marked as ‘lateinit‘ and is initialized within the ‘setUp‘ method.

The use case of ‘lazy initialization‘ is when the property is expensive to compute, and the computation can be delayed until it is required. For example, accessing a view or database object can be expensive and can be done lazily once needed.

The use case of ‘lateinit‘ is when the property cannot be initialized until later after the object is created. A common example is when a property is initialized using a dependency injection framework or when the initialization code is done within a separate initialization method.

In summary, ‘lazy initialization‘ is for deferring computation until needed, while ‘lateinit‘ is for deferring initialization until the property can be properly initialized.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Kotlin interview — then scores it.
📞 Practice Kotlin — free 15 min
📕 Buy this interview preparation book: 100 Kotlin questions & answers — PDF + EPUB for $5

All 100 Kotlin questions · All topics