Entrevista de Kotlin: preguntas principales y respuestas para aprobar

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cómo aprobar una entrevista de Kotlin: preguntas principales



Kotlin se ha consolidado como el lenguaje principal para el desarrollo de Android y se utiliza activamente en el backend (Ktor, Spring Boot). Una entrevista para un puesto de desarrollador Kotlin no solo evalúa la sintaxis, sino también la comprensión de la filosofía del lenguaje: seguridad contra nulos, corrutinas, enfoque funcional. En este artículo, analizamos las preguntas más frecuentes que se hacen en las entrevistas, con ejemplos de código y explicaciones.



1. Seguridad contra nulos: cómo combate Kotlin NullPointerException



Una de las principales ventajas de Kotlin es la protección integrada contra nulos. A diferencia de Java, donde cualquier referencia puede ser nula, en Kotlin los tipos se dividen en nullable y non-null.



Pregunta: ¿cuál es la diferencia entre ? y !!?

? es el operador de llamada segura. Si el objeto es nulo, la llamada al método o propiedad simplemente devuelve nulo sin excepción.

val name: String? = nullval length = name?.length  // null, no hay error

!! es la aserción non-null. Usted garantiza que el valor no es nulo. Si lo es, se produce una NullPointerException.

val length = name!!.length  // NPE si name == null


Pregunta: ¿qué es el operador Elvis ?:?

Permite establecer un valor por defecto si el valor a la izquierda es nulo.

val name: String? = nullval display = name ?: "Invitado"


Pregunta: ¿cómo funciona let con tipos nullable?

let se ejecuta solo si el objeto no es nulo. Es una forma idiomática de manejar valores nullable.

name?.let {     println("Nombre: $it")}


2. Corrutinas: asincronía sin dolor



Las corrutinas son hilos ligeros que permiten escribir código asíncrono en un estilo imperativo. En las entrevistas se evalúa la comprensión de ámbitos, despachadores y funciones suspend.



Pregunta: ¿cuál es la diferencia entre launch y async?

  • launch inicia una corrutina y devuelve un Job. No devuelve un resultado.
  • async inicia una corrutina y devuelve un Deferred (análogo a Future). El resultado se obtiene mediante .await().
coroutineScope {    val job = launch { delay(100) }    val deferred = async { 42 }    val result = deferred.await()  // 42}


Pregunta: ¿qué es CoroutineContext y los despachadores?

CoroutineContext es un conjunto de elementos que definen el comportamiento de la corrutina (despachador, Job, nombre). Los principales despachadores son:

  • Dispatchers.Main — para la interfaz de usuario (Android).
  • Dispatchers.IO — para operaciones de entrada/salida (red, archivos).
  • Dispatchers.Default — para tareas intensivas en CPU.


Pregunta: ¿qué es withContext?

Permite cambiar de despachador dentro de una corrutina sin cambiar el ámbito.

suspend fun loadData(): String = withContext(Dispatchers.IO) {    // operación larga    "Datos"}


3. Clases y objetos: sealed, data, companion



Kotlin ofrece varios tipos especiales de clases que simplifican patrones típicos.



Pregunta: ¿qué es una sealed class y cuándo se usa?

Una sealed class es una clase abstracta con un conjunto limitado de subclases. Todos los herederos se conocen en tiempo de compilación. Es ideal para representar estados (UI State) o resultados de operaciones.

sealed class Result {    data class Success(val data: String) : Result()    data class Error(val message: String) : Result()    object Loading : Result()}

fun handleResult(result: Result) { when (result) { is Result.Success -> println(result.data) is Result.Error -> println(result.message) Result.Loading -> println("Cargando...") }}

La rama else no es necesaria: el compilador conoce todas las variantes.



Pregunta: ¿en qué se diferencia una data class de una clase nor

Blogs

Book Recommendations