Preguntas para Entrevistas de Desarrollador Mobile Junior (Android): Guía Completa

Milad Bonakdar
Autor
Domina los fundamentos del desarrollo de Android con preguntas esenciales para entrevistas que cubren Kotlin, Activities, Fragments, Jetpack Compose, persistencia de datos y las mejores prácticas de Android para desarrolladores junior.
Introducción
El desarrollo de Android impulsa miles de millones de dispositivos en todo el mundo, lo que la convierte en una de las plataformas móviles más importantes. Con Kotlin como lenguaje preferido y herramientas modernas como Jetpack Compose, los desarrolladores de Android crean aplicaciones ricas y de alto rendimiento para diversos usuarios.
Esta guía cubre preguntas esenciales de entrevista para Desarrolladores Android Junior. Exploramos los fundamentos de Kotlin, los componentes de Android, el desarrollo de UI, la persistencia de datos, las redes y las mejores prácticas para ayudarte a prepararte para tu primer puesto de desarrollador de Android.
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


