Bird
Raised Fist0
Kotlinprogramming~20 mins

Why Kotlin over Java - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Kotlin Mastery: Why Kotlin over Java
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 using null safety?
Consider this Kotlin code snippet that uses null safety features. What will it print?
Kotlin
fun main() {
    val name: String? = null
    val length = name?.length ?: -1
    println(length)
}
A0
B-1
CThrows NullPointerException
Dnull
Attempts:
2 left
💡 Hint
Look at the Elvis operator ?: and how it handles null values.
🧠 Conceptual
intermediate
2:00remaining
Why does Kotlin reduce boilerplate compared to Java?
Which Kotlin feature helps reduce the amount of boilerplate code compared to Java?
AKotlin forces manual memory management
BKotlin requires explicit getters and setters for all properties
CKotlin does not support lambdas
DData classes automatically generate common methods like equals and toString
Attempts:
2 left
💡 Hint
Think about how Kotlin handles simple classes with properties.
🔧 Debug
advanced
2:00remaining
Identify the error in this Kotlin code using coroutines
What error will this Kotlin coroutine code produce when run?
Kotlin
import kotlinx.coroutines.*

fun main() {
    GlobalScope.launch {
        delay(1000L)
        println("World!")
    }
    println("Hello,")
}
APrints "Hello," only because main exits before coroutine runs
BPrints "Hello," then "World!" after 1 second
CCompilation error due to missing runBlocking
DRuntime exception: CoroutineScope not initialized
Attempts:
2 left
💡 Hint
Consider what happens to the main thread after launching a coroutine.
📝 Syntax
advanced
2:00remaining
Which Kotlin syntax correctly declares a read-only list?
Choose the correct Kotlin syntax to declare a read-only list of integers containing 1, 2, and 3.
Aval list = listOf(1, 2, 3)
Bval list = mutableListOf(1, 2, 3)
Cval list = arrayListOf(1, 2, 3)
Dval list = List(1, 2, 3)
Attempts:
2 left
💡 Hint
Read-only lists use a specific Kotlin function.
🚀 Application
expert
3:00remaining
What is the output of this Kotlin code using sealed classes?
Given the sealed class hierarchy below, what will be printed when calling describeShape with a Circle(5.0)?
Kotlin
sealed class Shape
class Circle(val radius: Double) : Shape()
class Rectangle(val width: Double, val height: Double) : Shape()

fun describeShape(shape: Shape): String = when(shape) {
    is Circle -> "Circle with radius ${shape.radius}"
    is Rectangle -> "Rectangle with width ${shape.width} and height ${shape.height}"
}

fun main() {
    println(describeShape(Circle(5.0)))
}
ARuntime error: Unhandled type
BRectangle with width 5.0 and height 5.0
CCircle with radius 5.0
DCompilation error: when expression is not exhaustive
Attempts:
2 left
💡 Hint
Sealed classes allow exhaustive when expressions without else.

Practice

(1/5)
1. Why do many developers prefer Kotlin over Java for Android development?
easy
A. Kotlin does not support interoperability with Java
B. Kotlin reduces boilerplate code and improves safety
C. Kotlin requires more lines of code than Java
D. Kotlin is slower to compile than Java

Solution

  1. Step 1: Understand Kotlin's code simplicity

    Kotlin reduces the amount of code needed compared to Java, making it easier to write and read.
  2. Step 2: Recognize Kotlin's safety features

    Kotlin has built-in null safety and other features that help prevent common errors.
  3. Final Answer:

    Kotlin reduces boilerplate code and improves safety -> Option B
  4. Quick Check:

    Kotlin is easier and safer than Java [OK]
Hint: Remember Kotlin cuts code and adds safety [OK]
Common Mistakes:
  • Thinking Kotlin requires more code
  • Believing Kotlin can't work with Java
  • Assuming Kotlin is slower to compile
2. Which of the following is a correct Kotlin syntax feature that improves safety compared to Java?
easy
A. Using var x: Int = null to allow null values
B. Declaring variables without specifying type always
C. Using val name: String? to declare a nullable variable
D. Using void as a return type

Solution

  1. Step 1: Identify Kotlin's null safety syntax

    Kotlin uses ? after a type to mark it nullable, e.g., String?.
  2. Step 2: Check other options for correctness

    Using var x: Int = null to allow null values is wrong because Int cannot be assigned null without ?. Declaring variables without specifying type always is incorrect because Kotlin requires type inference or explicit types. Using void as a return type is Java syntax, not Kotlin.
  3. Final Answer:

    Using val name: String? to declare a nullable variable -> Option C
  4. Quick Check:

    Nullable types use ? in Kotlin [OK]
Hint: Nullable types end with ? in Kotlin [OK]
Common Mistakes:
  • Assigning null to non-nullable types
  • Confusing Kotlin and Java syntax
  • Using void instead of Unit in Kotlin
3. What will be the output of this Kotlin code snippet?
val list = listOf(1, 2, 3)
val doubled = list.map { it * 2 }
println(doubled)
medium
A. Compilation error
B. [1, 2, 3]
C. [3, 6, 9]
D. [2, 4, 6]

Solution

  1. Step 1: Understand the map function

    The map function applies the lambda { it * 2 } to each element, doubling each number.
  2. Step 2: Calculate the resulting list

    Original list is [1, 2, 3], doubling gives [2, 4, 6].
  3. Final Answer:

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

    map doubles each element [OK]
Hint: map transforms each element in the list [OK]
Common Mistakes:
  • Confusing map with filter
  • Expecting original list unchanged
  • Thinking map returns a single value
4. Identify the error in this Kotlin code snippet:
fun main() {
  val name: String = null
  println(name)
}
medium
A. Cannot assign null to a non-nullable type
B. Missing semicolon after println
C. Function main must return Int
D. Variable name must be declared with var

Solution

  1. Step 1: Check variable declaration

    The variable name is declared as non-nullable String, but assigned null.
  2. Step 2: Understand Kotlin null safety

    Kotlin does not allow assigning null to non-nullable types. To allow null, use String?.
  3. Final Answer:

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

    Non-nullable types cannot hold null [OK]
Hint: Non-nullable types reject null assignments [OK]
Common Mistakes:
  • Thinking semicolon is required
  • Assuming main must return Int
  • Confusing var and val for nullability
5. You have a Java project and want to start using Kotlin without rewriting everything. What is the best reason to choose Kotlin here?
hard
A. Kotlin can interoperate with Java code seamlessly
B. Kotlin requires all Java code to be converted first
C. Kotlin does not support Java libraries
D. Kotlin needs a separate runtime incompatible with Java

Solution

  1. Step 1: Understand Kotlin-Java interoperability

    Kotlin is designed to work smoothly with existing Java code and libraries without conversion.
  2. Step 2: Evaluate other options

    Kotlin requires all Java code to be converted first is false because conversion is not mandatory. Kotlin does not support Java libraries is false because Kotlin supports Java libraries. Kotlin needs a separate runtime incompatible with Java is false because Kotlin runs on the JVM, compatible with Java.
  3. Final Answer:

    Kotlin can interoperate with Java code seamlessly -> Option A
  4. Quick Check:

    Kotlin and Java work together easily [OK]
Hint: Kotlin works with Java code without rewriting [OK]
Common Mistakes:
  • Thinking Kotlin requires full Java rewrite
  • Believing Kotlin can't use Java libraries
  • Assuming Kotlin needs a separate incompatible runtime
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