Skip to content

Preguntas de Pruebas técnicas para móvil

🔹 1. Fundamentos de Programación

❓ ¿Cuál es la diferencia entre programación orientada a objetos (POO) y programación funcional?

  • POO se basa en clases y objetos. Se centra en encapsulación, herencia y polimorfismo.
  • Programación funcional se basa en funciones como ciudadanos de primera clase, evita estados mutables y usa conceptos como funciones puras, inmutabilidad y composición.

❓ ¿Qué es SOLID y cómo se aplica en el desarrollo móvil?

Es un conjunto de 5 principios para escribir código limpio y mantenible:

  • Single Responsibility: Una clase debe tener una sola razón para cambiar.
  • Open/Closed: Debe ser abierta a extensión, pero cerrada a modificaciones.
  • Liskov Substitution: Un subtipo debe poder reemplazar su supertipo sin alterar el comportamiento.
  • Interface Segregation: Evita interfaces grandes, usa interfaces más específicas.
  • Dependency Inversion: Depende de abstracciones, no de implementaciones concretas.

🔹 2. Plataforma Específica

Android (Kotlin/Java)

❓ ¿Cómo funciona el ciclo de vida de una actividad?

El ciclo de vida de una Activity tiene los siguientes estados:

  1. onCreate(): Se inicializa la UI.
  2. onStart(): La actividad se vuelve visible.
  3. onResume(): La actividad está en primer plano y el usuario puede interactuar.
  4. onPause(): Otra actividad está en primer plano, pero esta aún es visible.
  5. onStop(): La actividad ya no es visible.
  6. onDestroy(): Se libera la memoria asociada con la actividad.

❓ ¿Qué es una Coroutine en Kotlin?

Las Coroutines son una forma de manejar código asíncrono sin bloquear el hilo principal. Se utilizan con suspend functions y permiten estructurar código de manera más sencilla en comparación con Callbacks o RxJava.

iOS (Swift)

❓ Explica el ciclo de vida de un UIViewController.

  1. viewDidLoad(): Se inicializa la vista.
  2. viewWillAppear(): La vista está a punto de mostrarse.
  3. viewDidAppear(): La vista ya es visible.
  4. viewWillDisappear(): La vista está a punto de cerrarse.
  5. viewDidDisappear(): La vista ya no es visible.

❓ ¿Qué es Combine y cómo se diferencia de RxSwift?

Combine es un framework de Apple para manejar programación reactiva, similar a RxSwift, pero integrado en el ecosistema de Swift.

Multiplataforma (Flutter, React Native)

❓ ¿Cómo funciona el State Management en Flutter?

Flutter permite manejar el estado de varias formas:

  • Provider (recomendado por Google)
  • Riverpod (mejora de Provider)
  • Bloc (arquitectura más estructurada)
  • Redux (similar a React Redux)

🔹 3. Arquitectura y Buenas Prácticas

❓ Explica la diferencia entre MVC, MVP y MVVM.

  • MVC (Model-View-Controller): Separación básica donde el controlador maneja la lógica.
  • MVP (Model-View-Presenter): Similar a MVC, pero el Presenter maneja toda la lógica y es independiente de la vista.
  • MVVM (Model-View-ViewModel): Usa un ViewModel para manejar la lógica de presentación y la vista solo observa cambios.

❓ ¿Qué es una arquitectura limpia (Clean Architecture)?

Es un enfoque modular donde las capas de la app están bien definidas:

  • Capa de dominio (Reglas de negocio)
  • Capa de datos (Repositorios, APIs)
  • Capa de presentación (UI, ViewModels)

Esto facilita pruebas y mantenimiento.


🔹 4. Optimización y Rendimiento

❓ ¿Cómo optimizarías el rendimiento de una aplicación móvil?

  • Usar Lazy Loading para cargar datos bajo demanda.
  • Evitar operaciones en el hilo principal (usar Coroutines o AsyncTasks).
  • Optimizar el uso de memoria con estructuras eficientes.
  • Minimizar llamadas a la red y utilizar caching.

❓ ¿Cómo manejarías la carga eficiente de imágenes?

  • Usar librerías como Glide (Android) o SDWebImage (iOS).
  • Reducir el tamaño de imágenes con WebP o compresión.
  • Usar caching para evitar descargas repetitivas.

🔹 5. Conectividad y Seguridad

❓ ¿Cómo manejarías autenticación en una app móvil?

  • Usar OAuth 2.0 para autenticar con terceros.
  • Implementar JWT (JSON Web Token) para sesiones seguras.
  • Usar Firebase Authentication si la app es pequeña.

❓ ¿Qué prácticas sigues para garantizar la seguridad en una app móvil?

  • No almacenar credenciales en texto plano.
  • Usar HTTPS y certificados SSL.
  • Ofuscar código para evitar ingeniería inversa.
  • Habilitar biometría (Face ID, Touch ID).

🔹 6. Pruebas y Despliegue

❓ ¿Cómo escribirías pruebas unitarias para una aplicación móvil?

  • Android: Usar JUnit, Mockito y Espresso para UI.
  • iOS: Usar XCTest para unit testing.
  • Flutter: Usar flutter_test con mocks.

❓ ¿Qué es CI/CD y cómo lo aplicarías en un proyecto móvil?

CI/CD (Integración y Despliegue Continuo) automatiza pruebas y distribución:

  • Usar GitHub Actions o Jenkins para pruebas.
  • Configurar Fastlane para generar builds y publicarlas.
  • Distribuir con Firebase App Distribution o TestFlight.

❓ ¿Cómo publicarías una app en la App Store / Play Store?

  1. Generar un APK (Android) o IPA (iOS) con firmas digitales.
  2. Configurar permisos y políticas de privacidad.
  3. Subir la app a Google Play Console o App Store Connect.
  4. Pasar las revisiones de Google/Apple.

Preguntas orientados mas a Flutter y React Native