Bird
Raised Fist0
Kotlinprogramming~20 mins

Nullable types with ? suffix in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Kotlin Nullable Types Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Kotlin code with nullable types?
Consider the following Kotlin code snippet. What will it print when run?
Kotlin
fun main() {
    val name: String? = null
    println(name?.length ?: "No name")
}
ANo name
B0
Cnull
DThrows NullPointerException
Attempts:
2 left
💡 Hint
Look at the safe call operator ?. and the Elvis operator ?:
🧠 Conceptual
intermediate
1:30remaining
What does the ? suffix mean in Kotlin type declarations?
In Kotlin, what does adding a question mark (?) after a type mean?
AThe variable can hold only non-null values of that type
BThe variable can hold null or values of that type
CThe variable is immutable
DThe variable is a constant
Attempts:
2 left
💡 Hint
Think about null safety and how Kotlin handles null values.
🔧 Debug
advanced
2:00remaining
What error does this Kotlin code raise?
What error will this Kotlin code produce when compiled or run?
Kotlin
fun main() {
    val text: String = null
    println(text.length)
}
ACompilation error: Null can not be a value of a non-null type String
BNullPointerException at runtime
CCompilation error: Unresolved reference 'length'
DPrints 0
Attempts:
2 left
💡 Hint
Check the type declaration and the assigned value.
❓ Predict Output
advanced
2:00remaining
What is the output of this Kotlin code using safe call and let?
What will this Kotlin program print?
Kotlin
fun main() {
    val number: Int? = 10
    number?.let {
        println(it * 2)
    } ?: println("No number")
}
AThrows NullPointerException
BNo number
Cnull
D20
Attempts:
2 left
💡 Hint
The safe call with let runs the block only if the value is not null.
🧠 Conceptual
expert
2:30remaining
How many items are in the list after filtering nulls with ?. operator?
Given this Kotlin code, how many items does the list nonNullNames contain?
Kotlin
fun main() {
    val names: List<String?> = listOf("Anna", null, "Bob", null, "Cara")
    val nonNullNames = names.mapNotNull { it?.uppercase() }
    println(nonNullNames.size)
}
A0
B2
C3
D5
Attempts:
2 left
💡 Hint
mapNotNull removes null results after applying the lambda.

Practice

(1/5)
1. What does adding a ? after a type in Kotlin mean?
easy
A. The variable is immutable.
B. The variable can hold a null value.
C. The variable is a constant.
D. The variable is a function.

Solution

  1. Step 1: Understand Kotlin type suffix

    In Kotlin, adding ? after a type means the variable can hold null.
  2. Step 2: Compare with non-nullable types

    Without ?, variables cannot be null and will cause errors if assigned null.
  3. Final Answer:

    The variable can hold a null value. -> Option B
  4. Quick Check:

    Nullable type = variable can be null [OK]
Hint: Remember: ? means nullable type in Kotlin [OK]
Common Mistakes:
  • Thinking ? makes variable immutable
  • Confusing ? with constant declaration
  • Assuming ? means function type
2. Which of the following is the correct syntax to declare a nullable String variable in Kotlin?
easy
A. var name: String?
B. var name: ?String
C. var name: String!
D. var name: nullable String

Solution

  1. Step 1: Recall Kotlin nullable syntax

    Kotlin uses ? after the type name to mark it nullable, e.g., String?.
  2. Step 2: Check each option

    var name: String? uses String? correctly. Options A, B, and D use invalid syntax.
  3. Final Answer:

    var name: String? -> Option A
  4. Quick Check:

    Nullable syntax = type followed by ? [OK]
Hint: Put ? right after the type name for nullable [OK]
Common Mistakes:
  • Placing ? before the type
  • Using ! instead of ?
  • Writing 'nullable' keyword explicitly
3. What will be the output of this Kotlin code?
var text: String? = null
println(text?.length ?: "No length")
medium
A. 0
B. null
C. No length
D. Throws NullPointerException

Solution

  1. Step 1: Understand safe call and Elvis operator

    text?.length safely accesses length if text is not null; else returns null. The Elvis operator ?: provides "No length" if left side is null.
  2. Step 2: Evaluate given code

    Since text is null, text?.length is null, so the expression prints "No length".
  3. Final Answer:

    No length -> Option C
  4. Quick Check:

    Safe call + Elvis = fallback value [OK]
Hint: Safe call ?. returns null safely; ?: provides default [OK]
Common Mistakes:
  • Expecting NullPointerException on null safe call
  • Thinking null?.length returns 0
  • Ignoring Elvis operator fallback
4. Identify the error in this Kotlin code snippet:
var number: Int? = 10
var result: Int = number + 5
medium
A. Variable 'result' should be nullable.
B. Variable 'number' cannot be nullable.
C. Missing semicolon after declaration.
D. Cannot add Int? and Int directly.

Solution

  1. Step 1: Check type compatibility

    number is nullable Int?, but result expects non-null Int. Adding nullable and non-null directly is not allowed.
  2. Step 2: Understand Kotlin's null safety

    You must safely unwrap number before adding, e.g., using number ?: 0 or safe call.
  3. Final Answer:

    Cannot add Int? and Int directly. -> Option D
  4. Quick Check:

    Nullable + non-null Int needs safe unwrap [OK]
Hint: Nullable Int can't be used directly in arithmetic [OK]
Common Mistakes:
  • Assuming nullable Int can be used like Int
  • Ignoring need for safe call or Elvis operator
  • Thinking semicolon is required in Kotlin
5. You have a nullable list of nullable Strings: val items: List?. How do you safely print the length of the first item or print 0 if the list or first item is null?
hard
A. println(items?.get(0)?.length ?: 0)
B. println(items[0].length)
C. println(items!!.get(0)!!.length)
D. println(items?.get(0).length ?: 0)

Solution

  1. Step 1: Analyze nullable types

    items can be null, and its elements can be null. So both list and first item need safe calls.
  2. Step 2: Use safe calls and Elvis operator

    items?.get(0)?.length ?: 0 safely accesses first item length or returns 0 if null.
  3. Final Answer:

    println(items?.get(0)?.length ?: 0) -> Option A
  4. Quick Check:

    Safe calls chain + fallback = safe nullable access [OK]
Hint: Chain ?. for each nullable and use ?: for default [OK]
Common Mistakes:
  • Using !! which throws exception if null
  • Missing safe call on first item
  • Assuming list or item can't be null
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