Bird
Raised Fist0
Kotlinprogramming~20 mins

Non-nullable types by default in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Null Safety Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of accessing a nullable variable
What is the output of this Kotlin code snippet?
Kotlin
fun main() {
    val name: String? = null
    println(name?.length ?: "No length")
}
Anull
BNo length
C0
DThrows NullPointerException
Attempts:
2 left
💡 Hint
Look at the safe call operator and the Elvis operator usage.
❓ Predict Output
intermediate
2:00remaining
Behavior of non-nullable variable assignment
What happens when you try to assign null to a non-nullable variable in Kotlin?
Kotlin
fun main() {
    val number: Int = null
    println(number)
}
ACompilation error
BPrints null
CPrints 0
DThrows NullPointerException at runtime
Attempts:
2 left
💡 Hint
Remember Kotlin's default type nullability.
🔧 Debug
advanced
2:00remaining
Identify the cause of NullPointerException
Why does this Kotlin code throw a NullPointerException at runtime?
Kotlin
fun main() {
    val text: String? = null
    val length: Int = text!!.length
    println(length)
}
ABecause println cannot print null values
BBecause length is declared as Int instead of Int?
CBecause text is nullable and !! forces non-null, causing exception
DBecause text is not initialized
Attempts:
2 left
💡 Hint
Check the use of the !! operator on a null value.
🧠 Conceptual
advanced
2:00remaining
Understanding Kotlin's type system default
Which statement best describes Kotlin's type system regarding nullability?
AAll types are nullable by default, requiring explicit non-null declaration
BKotlin does not support nullable types
CNullability is not checked by the compiler in Kotlin
DAll types are non-nullable by default, requiring explicit nullable declaration
Attempts:
2 left
💡 Hint
Think about how Kotlin prevents null pointer errors.
❓ Predict Output
expert
2:00remaining
Output of complex nullable chaining
What is the output of this Kotlin code?
Kotlin
fun main() {
    val map: Map<String, String?> = mapOf("key" to null)
    val length = map["key"]?.length ?: -1
    println(length)
}
A-1
BThrows NullPointerException
Cnull
D0
Attempts:
2 left
💡 Hint
Check the safe call and Elvis operator on a nullable map value.

Practice

(1/5)
1. In Kotlin, what happens if you declare a variable without a ? after its type?
easy
A. The variable cannot hold null values.
B. The variable can hold null values.
C. The variable is automatically initialized to null.
D. The variable must be declared as lateinit.

Solution

  1. Step 1: Understand Kotlin's default type behavior

    Kotlin types are non-nullable by default, meaning variables cannot hold null unless specified.
  2. Step 2: Check the effect of missing ?

    Without ?, the variable type is non-nullable, so it cannot hold null.
  3. Final Answer:

    The variable cannot hold null values. -> Option A
  4. Quick Check:

    Non-nullable type = no null allowed [OK]
Hint: No ? means no null allowed [OK]
Common Mistakes:
  • Thinking variables are nullable by default
  • Assuming variables initialize to null automatically
  • Confusing lateinit with nullability
2. Which of the following Kotlin variable declarations is correct to allow null values?
easy
A. val name: String? = null
B. val name: String?
C. val name: String = null
D. val name: String = "null"

Solution

  1. Step 1: Identify nullable type syntax

    Adding ? after the type allows the variable to hold null.
  2. Step 2: Check initialization

    Nullable variables must be initialized or declared with null explicitly, so val name: String? = null is correct.
  3. Final Answer:

    val name: String? = null -> Option A
  4. Quick Check:

    Nullable type with ? and initialized to null [OK]
Hint: Use ? and initialize nullable variables [OK]
Common Mistakes:
  • Declaring nullable without ?
  • Not initializing nullable variables
  • Assigning null to non-nullable types
3. What will be the output of this Kotlin code?
fun main() {
    val text: String? = null
    println(text?.length ?: "No text")
}
medium
A. 0
B. Compilation error
C. null
D. No text

Solution

  1. Step 1: Understand safe call operator usage

    The text?.length safely accesses length only if text is not null.
  2. Step 2: Evaluate the Elvis operator

    Since text is null, text?.length is null, so the Elvis operator ?: returns "No text".
  3. Final Answer:

    No text -> Option D
  4. Quick Check:

    Safe call + Elvis operator returns fallback [OK]
Hint: Safe call with Elvis returns fallback if null [OK]
Common Mistakes:
  • Expecting 0 instead of fallback string
  • Confusing safe call with normal call
  • Thinking code causes error due to null
4. Identify the error in this Kotlin code snippet:
fun main() {
    val number: Int = null
    println(number)
}
medium
A. Variable 'number' is not initialized.
B. Cannot assign null to a non-nullable type Int.
C. Missing semicolon after println statement.
D. Variable 'number' should be declared as var.

Solution

  1. Step 1: Check variable type and assignment

    The variable 'number' is declared as non-nullable Int but assigned null, which is not allowed.
  2. Step 2: Understand Kotlin null safety rules

    Non-nullable types cannot hold null, so this causes a compilation error.
  3. Final Answer:

    Cannot assign null to a non-nullable type Int. -> Option B
  4. Quick Check:

    Non-nullable types reject null assignments [OK]
Hint: Non-nullable types cannot be assigned null [OK]
Common Mistakes:
  • Thinking semicolon is required
  • Assuming var fixes null assignment
  • Ignoring Kotlin's null safety
5. You have a nullable variable val input: String?. You want to print its length only if it is not null, otherwise print "Empty input". Which Kotlin code correctly does this?
hard
A. println(input.length ?: "Empty input")
B. println(input!!.length)
C. println(if (input != null) input.length else "Empty input")
D. println(input?.length)

Solution

  1. Step 1: Understand nullable variable usage

    Since input can be null, we must check before accessing length.
  2. Step 2: Evaluate each option

    println(input.length ?: "Empty input") is invalid because length is Int, not nullable, so Elvis operator on it is wrong.
    println(if (input != null) input.length else "Empty input") safely checks null and prints length or fallback.
    println(input!!.length) uses !! which throws exception if null.
    println(input?.length) prints null if input is null, not the string "Empty input".
  3. Final Answer:

    println(if (input != null) input.length else "Empty input") -> Option C
  4. Quick Check:

    Explicit null check with if-else for safe access [OK]
Hint: Use if-else to check null before accessing properties [OK]
Common Mistakes:
  • Using !! and risking exceptions
  • Misusing Elvis operator on non-nullable Int
  • Printing null instead of fallback string
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard