Preguntas de entrevista para desarrollador Android junior

Milad Bonakdar
Autor
Prepárate para una entrevista Android junior con preguntas sobre Kotlin, ciclo de vida, Jetpack Compose, Room, redes y corrutinas.
Introducción
En una entrevista para desarrollador Android junior, espera preguntas que comprueben si puedes explicar Kotlin, ciclos de vida de Android, estado en Compose, almacenamiento local, peticiones de red y corrutinas de forma práctica. Las mejores respuestas conectan cada concepto con una app pequeña y fiable: colocar bien el estado de la UI, no bloquear el hilo principal, guardar datos de forma segura y manejar errores con claridad.
Usa esta guía para practicar respuestas breves y relaciónalas con un proyecto de tu CV o portafolio. Si creaste una app de tareas, clima o una pantalla conectada a una API, usa ese ejemplo para que la entrevista suene concreta y no memorizada.
Fundamentos de Kotlin (6 preguntas)
1. ¿Cuál es la diferencia entre val y var en Kotlin?
Respuesta:
val: Declara una variable inmutable (de solo lectura). Una vez asignada, su valor no se puede cambiar.var: Declara una variable mutable. Su valor se puede cambiar después de la inicialización.- Mejor práctica: Usa
valpor defecto por seguridad. Solo usavarcuando necesites reasignar el valor.
Frecuencia: Muy común Dificultad: Fácil
2. Explica los tipos Nullable y el operador Safe Call en Kotlin.
Respuesta: El sistema de tipos de Kotlin distingue entre tipos nullable y no nullable para prevenir excepciones de puntero nulo.
- Tipo Nullable: Agrega
?después del tipo:String? - Safe Call (
?.): Llama a un método solo si el objeto no es nulo - Operador Elvis (
?:): Proporciona un valor predeterminado si es nulo - Not-null Assertion (
!!): Lanza una excepción si es nulo (usar con moderación)
Frecuencia: Muy común Dificultad: Fácil
3. ¿Cuál es la diferencia entre una class y una data class en Kotlin?
Respuesta:
- Clase Regular: Definición de clase estándar
- Data Class: Genera automáticamente métodos útiles para contener datos
equals()yhashCode()toString()- función
copy() - funciones
componentN()para la desestructuración
Frecuencia: Muy común Dificultad: Fácil
4. ¿Qué son las expresiones Lambda y las funciones de orden superior en Kotlin?
Respuesta:
- Lambda: Función anónima que se puede pasar como un valor
- Función de orden superior: Función que toma funciones como parámetros o devuelve una función
Frecuencia: Muy común Dificultad: Media
5. Explica las funciones de extensión en Kotlin.
Respuesta: Las funciones de extensión te permiten agregar nuevas funciones a las clases existentes sin modificar su código fuente.
Frecuencia: Común Dificultad: Fácil
6. ¿Cuál es la diferencia entre == y === en Kotlin?
Respuesta:
==: Igualdad estructural (compara valores usandoequals())===: Igualdad referencial (compara referencias de memoria)
Frecuencia: Común Dificultad: Fácil
Componentes de Android (5 preguntas)
7. ¿Qué es una Activity y explica su ciclo de vida?
Respuesta: Una Activity representa una sola pantalla con una interfaz de usuario. Tiene un ciclo de vida bien definido:
onCreate(): La Activity se crea. Inicializa la UI, establece la vista de contenido.onStart(): La Activity se vuelve visible.onResume(): La Activity está en primer plano e interactiva.onPause(): La Activity pierde el foco (otra Activity pasa al primer plano).onStop(): La Activity ya no es visible.onDestroy(): La Activity se destruye.
Frecuencia: Muy común Dificultad: Fácil
8. ¿Cuál es la diferencia entre una Activity y un Fragment?
Respuesta:
- Activity: Representa una pantalla completa. Punto de entrada para la interacción del usuario. Tiene su propio ciclo de vida.
- Fragment: Porción reutilizable de la UI dentro de una Activity. Pueden existir múltiples fragments en una Activity. Tiene su propio ciclo de vida vinculado a la Activity anfitriona.
- Beneficios de los Fragments:
- Reusabilidad en las Activities
- Componentes de UI modulares
- Soporte para tablets (diseños de múltiples paneles)
- Integración del componente de navegación
Frecuencia: Muy común Dificultad: Fácil
9. ¿Qué es un Intent y cuáles son sus tipos?
Respuesta: Intent es un objeto de mensajería utilizado para solicitar una acción de otro componente de la aplicación.
- Intent Explícito: Especifica el componente exacto para iniciar (por nombre de clase)
- Intent Implícito: Declara una acción general, y el sistema encuentra el componente apropiado
Frecuencia: Muy común Dificultad: Fácil
10. ¿Qué es un Service en Android?
Respuesta: Un Service es un componente que se ejecuta en segundo plano para realizar operaciones de larga duración sin una interfaz de usuario.
- Tipos:
- Foreground Service: Realiza operaciones notables (reproductor de música). Muestra notificación.
- Background Service: Realiza operaciones no directamente notadas por el usuario.
- Bound Service: Permite que los componentes se vinculen a él e interactúen.
Frecuencia: Común Dificultad: Media
11. ¿Qué es un BroadcastReceiver?
Respuesta: BroadcastReceiver es un componente que responde a anuncios de broadcast a nivel de sistema.
- Casos de uso: Batería baja, cambios en la conectividad de red, SMS recibido, inicio completado
- Registro:
- Estático: En AndroidManifest.xml (limitado en versiones más nuevas de Android)
- Dinámico: En código (preferido)
Frecuencia: Común Dificultad: Fácil
Desarrollo de UI (4 preguntas)
12. ¿Cuál es la diferencia entre LinearLayout, RelativeLayout y ConstraintLayout?
Respuesta:
- LinearLayout: Organiza los elementos secundarios en una sola fila o columna. Simple pero puede conducir a diseños anidados.
- RelativeLayout: Posiciona los elementos secundarios en relación con otros o con el padre. Más flexible pero complejo.
- ConstraintLayout: Diseño moderno y flexible. Jerarquía de vista plana. Recomendado para UIs complejas.
Frecuencia: Muy común Dificultad: Fácil
13. ¿Qué es RecyclerView y cómo funciona?
Respuesta: RecyclerView es un widget eficiente para mostrar grandes listas reciclando vistas.
- Componentes:
- Adapter: Vincula datos a las vistas
- ViewHolder: Contiene referencias a las vistas (evita llamadas a
findViewById) - LayoutManager: Posiciona los elementos (Lineal, Grid, Staggered)
Frecuencia: Muy común Dificultad: Media
14. ¿Qué es Jetpack Compose?
Respuesta: Jetpack Compose es el moderno kit de herramientas de UI declarativa de Android.
- Declarativo: Describe cómo debería verse la UI, no cómo construirla
- Beneficios: Menos código, intuitivo, potente, acelera el desarrollo
- Composable Functions: Bloques de construcción de la UI de Compose
Frecuencia: Muy común Dificultad: Fácil
15. ¿Cuál es la diferencia entre match_parent y wrap_content?
Respuesta: Estos son parámetros de diseño que definen las dimensiones de la vista:
match_parent: La vista se expande para llenar el tamaño del padrewrap_content: La vista se dimensiona para ajustarse a su contenido- Tamaño fijo: Valor dp específico (por ejemplo,
100dp)
Frecuencia: Muy común Dificultad: Fácil
Datos y Redes (5 preguntas)
16. ¿Cómo se realiza una solicitud de red en Android?
Respuesta:
Usa bibliotecas como Retrofit u OkHttp para las redes. Evita usar HttpURLConnection directamente.
Frecuencia: Muy común Dificultad: Media
17. ¿Qué es Room y cómo se usa?
Respuesta: Room es una capa de abstracción sobre SQLite para facilitar el acceso a la base de datos.
- Componentes:
- Entity: Representa una tabla
- DAO (Data Access Object): Define las operaciones de la base de datos
- Database: Contenedor de la base de datos
Frecuencia: Muy común Dificultad: Media
18. ¿Qué es SharedPreferences?
Respuesta: SharedPreferences almacena pequeñas cantidades de datos primitivos como pares clave-valor.
- Casos de uso: Ajustes de usuario, preferencias, flags simples
- No para: Grandes cantidades de datos, objetos complejos (usa Room en su lugar)
Frecuencia: Muy común Dificultad: Fácil
19. ¿Cuál es la diferencia entre apply() y commit() en SharedPreferences?
Respuesta: Ambos guardan los cambios en SharedPreferences, pero difieren en el comportamiento:
apply(): Asíncrono. Regresa inmediatamente. Los cambios se escriben en el disco en segundo plano. Sin valor de retorno.commit(): Síncrono. Se bloquea hasta que se escriben los cambios. Devuelve un booleano (éxito/fracaso).- Mejor práctica: Usa
apply()a menos que necesites el valor de retorno.
Frecuencia: Común Dificultad: Fácil
20. ¿Qué son las Coroutines en Kotlin?
Respuesta: Las Coroutines proporcionan una forma de escribir código asíncrono secuencialmente, lo que facilita su lectura y mantenimiento.
- Beneficios: Ligeras, concurrencia estructurada, manejo de excepciones
- Conceptos clave:
suspend: Función que se puede pausar y reanudarlaunch: Inicia una coroutine (dispara y olvida)async: Inicia una coroutine y devuelve un resultado- Dispatchers: Controla en qué hilo se ejecuta la coroutine
Frecuencia: Muy común Dificultad: Media


