Desarrollador Android: pregunta de entrevista

¿Qué es la concurrencia estructurada en coroutines de Kotlin?

La concurrencia estructurada vincula coroutines hijas a un scope padre, dando propietario a finalización, cancelación y fallo; usa scopes conscientes del ciclo de vida y evita GlobalScope sin dueño.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

Cada corrutina se lanza dentro de un CoroutineScope, y el Job del scope pasa a ser el padre de la nueva corrutina. Cancelar al padre cancela a los hijos, un fallo no capturado en un hijo cancela a sus hermanos y al padre, y un padre no termina hasta que terminan todos sus hijos. La cancelación es cooperativa: las funciones suspendibles la comprueban en los puntos de suspensión, y los bucles de CPU deben llamar a ensureActive o yield. Esto convierte los ciclos de vida en un árbol que el compilador y el runtime pueden imponer, por eso GlobalScope, sin padre, se considera una fuga por defecto.

Ejemplo

Una pantalla que lanza tres llamadas de red en viewModelScope ve las tres canceladas cuando el usuario sale, y un fallo en una cancela las otras dos salvo que corran bajo supervisorScope. Una exportación de fichero que debe sobrevivir a la pantalla se entrega a un CoroutineScope de aplicación propiedad de un repositorio en lugar de lanzarse desde el ViewModel.

Errores frecuentes

  • Lanzar en GlobalScope desde un ViewModel y filtrar trabajo más allá de la pantalla.
  • Capturar CancellationException en un catch genérico e impedir que la cancelación se propague.
  • Ejecutar un bucle cerrado sin puntos de suspensión, de modo que la cancelación nunca surte efecto.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador Android