P
prepair.app
Comenzar entrevista →
EnglishУкраїнськаРусскийDeutsch
🟩

Middle Android (Kotlin)Preguntas de entrevista Android developer

Middle · 2–4 años de experiencia

Las entrevistas de Android se enfocan en idioms de Kotlin, coroutines, y el ciclo de vida de la plataforma — la mayoría de las preguntas senior en realidad preguntan si entiendes que tu proceso puede morir en cualquier momento. Aquí están las preguntas hechas más a menudo, cada una con una respuesta modelo. Middle: comprensión más profunda, optimización y situaciones reales de trabajo.

Pruébalo — sin cuenta necesaria
Preparando tu pregunta…

Temas para prepararte

Características del lenguaje Kotlin
Coroutines y Flow
Ciclo de vida de Android
Jetpack Compose
Arquitectura y DI
Room, Retrofit y testing

9 preguntas de nivel Middle con respuestas

1

¿Qué es una coroutine, y en qué se diferencia de un hilo?

Respuesta

Una coroutine es un cómputo suspendible programado por el runtime de Kotlin; un hilo es programado por el SO. La suspensión libera el hilo en vez de bloquearlo, así miles de coroutines comparten un pool pequeño. Por eso una llamada bloqueante dentro de una coroutine derrota el propósito por completo — retiene el hilo que se suponía debía liberar.

2

¿Qué es la concurrencia estructurada y qué garantiza un CoroutineScope?

Respuesta

Que cada coroutine iniciada en un scope es hija de él, así cancelar el scope las cancela a todas y el scope no termina hasta que ellas lo hagan. En la práctica esto es viewModelScope — el trabajo para cuando el ViewModel se limpia. Lanzar en GlobalScope se sale de eso y es cómo el trabajo sobrevive a la pantalla que lo inició.

3

¿Cuál es la diferencia entre `Flow`, `StateFlow` y `SharedFlow`?

Respuesta

Un Flow es frío — produce valores cuando se colecta, una vez por colector. StateFlow es caliente, siempre tiene un valor actual, y lo emite a cada colector nuevo, que es lo que quiere el estado de UI. SharedFlow es caliente sin un valor actual y conviene para eventos que no deberían repetirse — un comando de navegación o un snackbar.

4

¿Qué es la recomposición en Compose, y qué hace que pase demasiado?

Respuesta

Compose vuelve a correr composables cuyos inputs cambiaron. Pasa demasiado cuando un lambda o un tipo inestable se recrea en cada render del padre, o cuando toda una pantalla lee un valor que cambia frecuentemente. Los arreglos son remember, elevar el estado para que solo la parte que lo necesita lo lea, y tipos estables — y los conteos de recomposición en Layout Inspector te dicen dónde.

5

¿Por qué el `Context` que sostienes es una fuente común de fugas?

Respuesta

Porque un context de Activity está atado a una pantalla, y cualquier cosa de larga vida que lo sostenga mantiene toda esa pantalla en memoria. Los casos usuales son un singleton inicializado con una Activity, una referencia estática, o un listener nunca desregistrado. El context de la aplicación es correcto para cualquier cosa que sobreviva a una pantalla — pero no puede inflar vistas con tema, por eso se comete el error.

6

¿Cómo encontrarías por qué una app es lenta para arrancar?

Respuesta

Mide primero: adb shell am start -W da tiempos de arranque frío, tibio y caliente, y el trace del sistema muestra qué corre antes del primer frame. Las causas usuales son trabajo en Application.onCreate — inicialización de SDKs especialmente — lecturas síncronas de disco o red, y hacer en el hilo principal lo que se podría diferir hasta después del primer frame.

7

¿Cuál es la diferencia entre `launch` y `async`?

Respuesta

launch inicia trabajo y devuelve un Job sin resultado; async devuelve un Deferred al que le haces await. Usa async solo cuando necesitas el valor, y arranca ambos antes de hacer await a cualquiera si los quieres concurrentes. Un async cuyo resultado nunca se espera traga su excepción, que es una forma silenciosa de perder un crash.

8

`Serializable` o `Parcelable` — ¿cuál y por qué?

Respuesta

Parcelable es el de Android: describes cómo se escribe y lee el objeto, así que no hay reflection y es medible más rápido para pasar datos entre componentes. Serializable es la interfaz marcadora de Java — casi gratis de escribir, lenta en runtime, y asigna mucho. En Kotlin el argumento mayormente desaparece porque @Parcelize genera el boilerplate, lo que elimina la única razón real por la que la gente elegía Serializable.

9

Doze, App Standby, `WorkManager` o un `Service` — ¿cómo eliges?

Respuesta

Doze y App Standby son el sistema difiriendo tu trabajo en background cuando el dispositivo está inactivo o tu app sin usar, por eso una alarma o una llamada de red simplemente no pasa cuando esperabas. WorkManager es para trabajo diferible que eventualmente debe pasar y sobrevivir la muerte del proceso y el reinicio — sync, upload, limpieza. Un foreground service es para trabajo del que el usuario está consciente ahora mismo, como reproducción o navegación, y debe mostrar una notificación. Recurrir a un background service plano en su lugar es cómo el trabajo silenciosamente deja de correr en Android moderno.

🦎

Leer respuestas no es suficiente

En una entrevista real hablas bajo presión. Cam hace estas mismas preguntas, evalúa cada respuesta y muestra exactamente qué mejorar.

Practicar entrevista de Middle Android (Kotlin) →
Gratis · 3 entrevistas al mes

Otros niveles — Android (Kotlin)

Junior Android (Kotlin)Senior Android (Kotlin)Todas las preguntas de Android (Kotlin)

Otras especializaciones

🔍Middle Manual QA🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🐘Middle PHP Backend🦫Middle Go Backend🟢Middle Node.js Backend💎Middle Ruby on Rails🔷Middle C++🟨Middle JavaScript