Bird
Raised Fist0
Kotlinprogramming~20 mins

Val for immutable references in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Val Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of val with mutable object
What is the output of this Kotlin code snippet?
Kotlin
data class Person(var name: String)

fun main() {
    val person = Person("Alice")
    person.name = "Bob"
    println(person.name)
}
AAlice
BRuntime exception
CCompilation error
DBob
Attempts:
2 left
💡 Hint
Remember val means the reference cannot change, but the object it points to can be modified if mutable.
❓ Predict Output
intermediate
2:00remaining
Reassigning val variable
What happens when you try to reassign a val variable in Kotlin?
Kotlin
fun main() {
    val number = 10
    // number = 20
    println(number)
}
ACompilation error if reassignment uncommented
BPrints 10
CPrints 20
DRuntime exception
Attempts:
2 left
💡 Hint
val variables cannot be reassigned after initialization.
🔧 Debug
advanced
2:00remaining
Why does this code fail to compile?
Identify the reason this Kotlin code does not compile.
Kotlin
fun main() {
    val list = listOf(1, 2, 3)
    list.add(4)
    println(list)
}
Aval variables cannot call functions
BlistOf creates a mutable list but val forbids modification
Clist is immutable, so add() is not available
Dprintln cannot print lists
Attempts:
2 left
💡 Hint
Check the type returned by listOf and what methods it supports.
🧠 Conceptual
advanced
2:00remaining
Val and object mutability
Which statement best describes val in Kotlin regarding object mutability?
Aval makes both the reference and the object immutable
Bval makes the reference immutable but the object can be mutable
Cval allows reassigning the reference but not modifying the object
Dval allows both reference reassignment and object mutation
Attempts:
2 left
💡 Hint
Think about what val restricts: the reference or the object?
❓ Predict Output
expert
2:00remaining
Output with val and mutable collection
What is the output of this Kotlin program?
Kotlin
fun main() {
    val numbers = mutableListOf(1, 2, 3)
    val alias = numbers
    alias.add(4)
    println(numbers)
}
A[1, 2, 3, 4]
BCompilation error due to val reassignment
CRuntime exception
D[1, 2, 3]
Attempts:
2 left
💡 Hint
Both val variables point to the same mutable list object.

Practice

(1/5)
1. What does the val keyword do in Kotlin?
easy
A. Defines a class
B. Creates an immutable reference that cannot be reassigned
C. Declares a function
D. Creates a mutable variable that can be reassigned

Solution

  1. Step 1: Understand the role of val

    val declares a variable whose reference cannot be changed after assignment.
  2. Step 2: Compare with other keywords

    var allows reassignment, but val does not.
  3. Final Answer:

    Creates an immutable reference that cannot be reassigned -> Option B
  4. Quick Check:

    val = immutable reference [OK]
Hint: Remember: val means fixed reference, var means changeable [OK]
Common Mistakes:
  • Confusing val with var
  • Thinking val makes the object itself immutable
  • Assuming val declares a function or class
2. Which of the following is the correct syntax to declare an immutable integer variable named count with value 10 in Kotlin?
easy
A. val count = 10
B. var count = 10
C. int val count = 10
D. val count : Int =

Solution

  1. Step 1: Identify correct keyword and syntax

    val is used for immutable variables, and Kotlin infers type if not specified.
  2. Step 2: Check each option

    var count = 10 uses var (mutable), C has invalid syntax, D is incomplete.
  3. Final Answer:

    val count = 10 -> Option A
  4. Quick Check:

    Immutable variable syntax = val count = 10 [OK]
Hint: Use val for fixed values, var for changeable ones [OK]
Common Mistakes:
  • Using var instead of val for immutable variables
  • Incorrect Kotlin type declarations
  • Leaving declarations incomplete
3. What will be the output of the following Kotlin code?
val list = mutableListOf(1, 2, 3)
list.add(4)
println(list)
medium
A. Runtime error
B. [1, 2, 3]
C. Compilation error
D. [1, 2, 3, 4]

Solution

  1. Step 1: Understand val with mutable objects

    val means the reference to the list cannot change, but the list itself can be modified.
  2. Step 2: Analyze code behavior

    Adding 4 to the mutable list changes its content, so printing shows [1, 2, 3, 4].
  3. Final Answer:

    [1, 2, 3, 4] -> Option D
  4. Quick Check:

    val reference + mutable object = modified list [OK]
Hint: val fixes reference, not object content if mutable [OK]
Common Mistakes:
  • Thinking val prevents modifying the list content
  • Expecting compilation or runtime errors
  • Confusing immutable reference with immutable object
4. Identify the error in the following Kotlin code:
val number = 5
number = 10
println(number)
medium
A. No error, prints 10
B. Runtime error: reassignment not allowed
C. Compilation error: val cannot be reassigned
D. Syntax error: missing semicolon

Solution

  1. Step 1: Check reassignment of val variable

    val variables cannot be reassigned after initialization.
  2. Step 2: Identify error type

    Trying to assign 10 to number causes a compilation error.
  3. Final Answer:

    Compilation error: val cannot be reassigned -> Option C
  4. Quick Check:

    val reassignment = compilation error [OK]
Hint: val variables cannot change after first assignment [OK]
Common Mistakes:
  • Assuming val variables can be reassigned
  • Confusing runtime errors with compile errors
  • Ignoring Kotlin's no-semicolon rule
5. Given the following Kotlin code, what will be the output?
val map = mutableMapOf("a" to 1, "b" to 2)
map["a"] = 3
println(map)

Explain why this works even though map is declared with val.
hard
A. {a=3, b=2}
B. {a=1, b=2}
C. Compilation error: cannot modify val map
D. Runtime error

Solution

  1. Step 1: Understand val with mutable collections

    val means the reference to the map cannot change, but the map's content can be modified.
  2. Step 2: Analyze the map update

    Updating key "a" to 3 changes the map content, so printing shows {a=3, b=2}.
  3. Final Answer:

    {a=3, b=2} -> Option A
  4. Quick Check:

    val reference + mutable map = updated map content [OK]
Hint: val fixes reference, mutable map content can change [OK]
Common Mistakes:
  • Thinking val prevents modifying map content
  • Expecting compilation or runtime errors
  • Confusing immutable reference with immutable object
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