Test de Kotlin: 24 preguntas para comprobar lo que sabes

¿Cuánto Kotlin sabes de verdad? Estas 24 preguntas repasan las 8 lecciones de nuestro curso de Kotlin: kotlinc y la JVM, val y var, when y rangos, colecciones, null safety, data classes y sealed, lambdas y funciones de extensión, corrutinas y pruebas con Gradle. Elige una respuesta en cada pregunta y pulsa Corregir al final: verás tu nota, los aciertos por lección y la explicación de cada respuesta.

No hace falta registrarse y nada se envía a ningún sitio: el test se corrige en tu propio navegador. Todas las respuestas con código se comprobaron compilando con kotlinc y ejecutando con Kotlin 2.4.21 sobre Java 25.

Pregunta 1Lección 1: Primeros pasos

¿Qué produce kotlinc hola.kt -include-runtime -d hola.jar?

Pregunta 2Lección 1: Primeros pasos

¿Qué escribe este programa?

fun main() {
    val nombre = "Ana"
    println("Hola, $nombre")
    println("Total: $2 + 3")
    println("Total: ${2 + 3}")
}
Pregunta 3Lección 1: Primeros pasos

¿En qué año anunció Google que Kotlin pasaba a tener soporte oficial en Android?

Pregunta 4Lección 2: Variables, tipos y funciones

¿Compila este programa?

fun main() {
    val x = 5
    x = 6
    println(x)
}
Pregunta 5Lección 2: Variables, tipos y funciones

¿Compila este programa?

fun main() {
    val a: Int = 7
    val b: Double = a
    println(b)
}
Pregunta 6Lección 2: Variables, tipos y funciones

¿Qué escribe este programa?

fun main() {
    println(7 / 2)
    println(7 / 2.0)
}
Pregunta 7Lección 3: Control de flujo y colecciones

¿Compila esta función?

fun nombre(n: Int): String = when (n) {
    1 -> "uno"
    2 -> "dos"
}

fun main() {
    println(nombre(1))
}
Pregunta 8Lección 3: Control de flujo y colecciones

¿Qué escribe este programa?

fun main() {
    for (i in 10 downTo 1 step 3) print("$i ")
    println()
}
Pregunta 9Lección 3: Control de flujo y colecciones

¿Compila este programa?

fun main() {
    val numeros = listOf(1, 2, 3)
    numeros.add(4)
    println(numeros)
}
Pregunta 10Lección 4: Null safety

¿Qué escribe este programa?

fun main() {
    val s: String? = null
    println(s?.length ?: -1)
}
Pregunta 11Lección 4: Null safety

¿Compila este programa?

fun main() {
    val s: String = null
    println(s)
}
Pregunta 12Lección 4: Null safety

¿Qué pasa con este programa?

fun main() {
    val s: String? = null
    println(s!!.length)
}
Pregunta 13Lección 5: Clases, data classes y sealed

¿Qué escribe este programa?

data class Punto(val x: Int, val y: Int)
class Lugar(val x: Int, val y: Int)

fun main() {
    println(Punto(1, 2) == Punto(1, 2))
    println(Lugar(1, 2) == Lugar(1, 2))
}
Pregunta 14Lección 5: Clases, data classes y sealed

¿Compila este programa?

class Animal
class Perro : Animal()

fun main() {
    println(Perro())
}
Pregunta 15Lección 5: Clases, data classes y sealed

¿Compila este programa, sin else en el when?

sealed interface Forma
data class Circulo(val r: Double) : Forma
data class Cuadrado(val lado: Double) : Forma

fun describir(f: Forma): String = when (f) {
    is Circulo -> "círculo de radio ${f.r}"
    is Cuadrado -> "cuadrado de lado ${f.lado}"
}

fun main() {
    println(describir(Cuadrado(2.0)))
}
Pregunta 16Lección 6: Lambdas y funciones de extensión

¿Qué escribe este programa?

fun String.gritar() = uppercase() + "!"

fun main() {
    println("hola".gritar())
}
Pregunta 17Lección 6: Lambdas y funciones de extensión

¿Qué escribe este programa?

fun main() {
    val r = listOf(1, 2, 3, 4).filter { it % 2 == 0 }.map { it * 10 }
    println(r)
}
Pregunta 18Lección 6: Lambdas y funciones de extensión

¿Qué escribe este programa?

fun main() {
    listOf(1, 2, 3).forEach {
        if (it == 2) return
        println(it)
    }
    println("fin")
}
Pregunta 19Lección 7: Corrutinas

¿Qué diferencia hay entre delay(1000) y Thread.sleep(1000) dentro de una corrutina?

Pregunta 20Lección 7: Corrutinas

¿Compila este programa?

import kotlinx.coroutines.delay

suspend fun esperar() {
    delay(100)
    println("listo")
}

fun main() {
    esperar()
}
Pregunta 21Lección 7: Corrutinas

¿En qué orden escribe este programa?

import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    launch {
        delay(100)
        println("A")
    }
    println("B")
}
Pregunta 22Lección 8: Pruebas y proyecto con Gradle

¿En qué lenguaje está escrito un archivo build.gradle.kts?

Pregunta 23Lección 8: Pruebas y proyecto con Gradle

En un proyecto de Gradle con el plugin kotlin("jvm"), ¿dónde van las pruebas?

Pregunta 24Lección 8: Pruebas y proyecto con Gradle

¿Qué pasa al ejecutar este programa, que usa kotlin.test?

import kotlin.test.assertEquals

fun sumar(a: Int, b: Int) = a + b + 1

fun main() {
    assertEquals(4, sumar(2, 2))
    println("bien")
}

Las preguntas siguen el orden del curso. Si fallas alguna, el enlace de su explicación te lleva a la lección donde se explica con ejemplos.