Preguntas de entrevista React Native senior con respuestas

Milad Bonakdar
Autor
Prepárate para entrevistas senior de React Native con preguntas sobre arquitectura, rendimiento de FlatList, módulos nativos, estado, pruebas y decisiones de producción.
Introducción
Las entrevistas senior de React Native suelen evaluar mucho más que sintaxis. Espera preguntas sobre arquitectura de apps, profiling de rendimiento, integración nativa, límites de estado y datos, estrategia de pruebas, calidad de releases y cómo explicas trade-offs bajo restricciones reales de producto.
Usa esta guía para practicar respuestas claras de nivel senior. Empieza con la decisión que tomarías y luego explica razonamiento, riesgo y plan alternativo. Por ejemplo, no basta con decir que FlatList se puede optimizar; explica cómo analizarías espacios en blanco, lotes de renderizado, filas memorizadas, claves estables y cambios de diseño cuando el problema real son alturas fijas o imágenes pesadas.
React Avanzado & Hooks (5 Preguntas)
1. Explica useMemo y useCallback. ¿Cuándo deberías usarlos?
Respuesta: Ambos hooks optimizan el rendimiento memorizando valores/funciones.
- useMemo: Memoriza valores calculados (cálculos costosos)
- useCallback: Memoriza referencias de funciones (previene la recreación)
- Cuándo usar: Solo cuando tienes problemas de rendimiento. La optimización prematura puede hacer que el código sea más difícil de leer.
Rareza: Muy Común Dificultad: Media
2. ¿Qué es useRef y cuáles son sus casos de uso?
Respuesta:
useRef crea una referencia mutable que persiste a través de los renders sin causar re-renders.
- Casos de uso:
- Acceder a elementos DOM/nativos
- Almacenar valores mutables sin disparar re-render
- Mantener valores previos
- Almacenar timers/intervals
Rareza: Común Dificultad: Media
3. Explica los Custom Hooks y cuándo crearlos.
Respuesta: Los custom hooks extraen la lógica con estado reutilizable en funciones separadas.
- Beneficios: Reutilización de código, separación de responsabilidades, pruebas más fáciles
- Convención: Debe comenzar con "use"
Rareza: Común Dificultad: Media
4. ¿Qué es React Context y cuándo deberías usarlo?
Respuesta: Context proporciona una forma de pasar datos a través del árbol de componentes sin el "prop drilling".
- Casos de uso: Tema, autenticación, preferencias de idioma
- Precaución: Puede causar re-renders innecesarios si no se usa con cuidado
Rareza: Muy Común Dificultad: Media
5. Explica la diferencia entre useEffect y useLayoutEffect.
Respuesta: Ambos ejecutan side effects, pero en diferentes momentos:
- useEffect: Se ejecuta de forma asíncrona después de que el render se pinta en la pantalla
- useLayoutEffect: Se ejecuta sincrónicamente antes de pintar (bloquea las actualizaciones visuales)
- Usa useLayoutEffect cuando: Necesitas medir el DOM o prevenir el parpadeo visual
Rareza: Media Dificultad: Difícil
Gestión de Estado (4 Preguntas)
6. Explica Redux y sus principios básicos.
Respuesta: Redux es un contenedor de estado predecible para aplicaciones de JavaScript.
- Principios básicos:
- Única fuente de verdad (un solo store)
- El estado es de solo lectura (despacha acciones para cambiar)
- Los cambios se realizan con funciones puras (reducers)
Rareza: Muy Común Dificultad: Difícil
7. ¿Qué es Redux Toolkit y cómo simplifica Redux?
Respuesta: Redux Toolkit es la forma oficial recomendada de escribir lógica de Redux.
- Beneficios:
- Menos boilerplate
- Immer incorporado para actualizaciones inmutables
- Incluye Redux Thunk
- Mejor soporte de TypeScript
Rareza: Común Dificultad: Media
8. ¿Cuáles son las alternativas a Redux para la gestión del estado?
Respuesta: Existen múltiples soluciones de gestión de estado:
- Context API + useReducer: Incorporado, bueno para aplicaciones simples
- MobX: Basado en observables, menos boilerplate
- Zustand: Mínimo, basado en hooks
- Recoil: Basado en átomos, por Facebook
- Jotai: Átomos primitivos
Rareza: Común Dificultad: Media
9. ¿Cómo manejas los side effects en Redux?
Respuesta: Usa middleware para operaciones asíncronas:
- Redux Thunk: Funciones que retornan funciones
- Redux Saga: Basado en generadores, más poderoso
- Redux Observable: Basado en RxJS
Rareza: Común Dificultad: Difícil
Optimización del Rendimiento (5 Preguntas)
10. ¿Cómo optimizas el rendimiento de FlatList?
Respuesta: Múltiples estrategias mejoran el desplazamiento de FlatList:
- Usa
keyExtractor: Proporciona claves únicas getItemLayout: Omite la medición para elementos de altura fijaremoveClippedSubviews: Desmonta las vistas fuera de la pantalla (Android)maxToRenderPerBatch: Controla el tamaño del lotewindowSize: Controla la ventana renderizadainitialNumToRender: Elementos a renderizar inicialmente- Memoriza
renderItem: Previene re-renders innecesarios
Rareza: Muy Común Dificultad: Media
11. ¿Qué es el puente de React Native y cómo afecta el rendimiento?
Respuesta: El puente es la capa de comunicación entre JavaScript y el código nativo.
- Cómo funciona:
- JavaScript se ejecuta en un hilo separado
- Los módulos nativos se ejecutan en hilos nativos
- El puente serializa los datos entre ellos (JSON)
- Impacto en el rendimiento:
- La comunicación del puente es asíncrona
- Sobrecarga de serialización
- Puede convertirse en un cuello de botella con la comunicación frecuente
- Soluciones:
- Minimiza los cruces del puente
- Operaciones por lotes
- Usa animaciones nativas (omite el puente)
- Nueva Arquitectura (JSI) elimina el puente
Rareza: Común Dificultad: Difícil
12. ¿Cómo previenes re-renders innecesarios?
Respuesta: Múltiples técnicas previenen renders desperdiciados:
- React.memo: Memoriza componentes
- useMemo/useCallback: Memoriza valores/funciones
- Props de clave apropiadas: Ayuda a React a identificar los cambios
- Evita objetos/arrays inline: Crea nuevas referencias
- Divide los componentes: Componentes más pequeños y enfocados
Rareza: Muy Común Dificultad: Media
13. ¿Cómo optimizas las imágenes en React Native?
Respuesta: La optimización de imágenes es crucial para el rendimiento:
- Redimensiona las imágenes: Usa dimensiones apropiadas
- Cachea las imágenes: Usa librerías como react-native-fast-image
- Carga diferida (Lazy loading): Carga las imágenes bajo demanda
- Carga progresiva: Muestra un placeholder primero
- Usa formato WebP: Mejor compresión
Rareza: Común Dificultad: Media
14. ¿Qué herramientas usas para el performance profiling?
Respuesta: Múltiples herramientas ayudan a identificar problemas de rendimiento:
- React DevTools Profiler: Tiempos de render de componentes
- Flipper: Herramienta de depuración y profiling
- Performance Monitor: Monitor de FPS incorporado
- Systrace: Traza de rendimiento de Android
- Instruments: Perfilado de rendimiento de iOS
Rareza: Común Dificultad: Media
Módulos Nativos y Específicos de la Plataforma (4 Preguntas)
15. ¿Cómo creas un Módulo Nativo en React Native?
Respuesta: Los módulos nativos te permiten usar código específico de la plataforma.
Rareza: Media Dificultad: Difícil
16. ¿Cómo manejas el código específico de la plataforma?
Respuesta: Múltiples enfoques para código específico de la plataforma:
- Módulo de plataforma: Verifica la plataforma en tiempo de ejecución
- Archivos específicos de la plataforma:
.ios.jsy.android.js - Platform.select: Selecciona valores basados en la plataforma
Rareza: Muy Común Dificultad: Fácil
17. ¿Qué es la Nueva Arquitectura (Fabric y TurboModules)?
Respuesta: La Nueva Arquitectura mejora el rendimiento de React Native:
- Fabric: Nuevo sistema de renderizado
- Layout síncrono
- Mejor interop con vistas nativas
- Seguridad de tipos
- TurboModules: Nuevo sistema de módulos nativos
- Carga diferida
- JSI (JavaScript Interface) - comunicación directa en C++
- Sin serialización del puente
Beneficios:
- Inicio más rápido
- Menor uso de memoria
- Llamadas nativas síncronas
- Mejor seguridad de tipos
Rareza: Media Dificultad: Difícil
18. ¿Cómo manejas el deep linking en React Native?
Respuesta: El deep linking permite abrir pantallas específicas desde URLs.
Rareza: Común Dificultad: Media
Pruebas (3 Preguntas)
19. ¿Cómo pruebas los componentes de React Native?
Respuesta: Usa librerías de pruebas como Jest y React Native Testing Library.


