Perguntas de entrevista React Native sênior com respostas

Milad Bonakdar
Autor
Prepare-se para entrevistas sênior de React Native com perguntas sobre arquitetura, desempenho do FlatList, módulos nativos, estado, testes e decisões de produção.
Introdução
Entrevistas sênior de React Native costumam avaliar muito mais que sintaxe. Espere perguntas sobre arquitetura de app, profiling de desempenho, integração nativa, limites entre estado e dados, estratégia de testes, qualidade de releases e como você explica trade-offs com restrições reais de produto.
Use este guia para praticar respostas claras de nível sênior. Comece com a decisão que você tomaria e depois explique o raciocínio, o risco e o plano alternativo. Por exemplo, não diga apenas que FlatList pode ser otimizado; explique como você investigaria áreas em branco, batches de renderização, linhas memoizadas, chaves estáveis e mudanças de design quando alturas fixas ou imagens pesadas são o problema real.
React e Hooks Avançados (5 Perguntas)
1. Explique useMemo e useCallback. Quando você deve usá-los?
Resposta: Ambos os hooks otimizam o desempenho memorizando valores/funções.
- useMemo: Memoriza valores computados (cálculos caros)
- useCallback: Memoriza referências de função (evita a recriação)
- Quando usar: Apenas quando você tiver problemas de desempenho. A otimização prematura pode tornar o código mais difícil de ler.
Raridade: Muito Comum Dificuldade: Média
2. O que é useRef e quais são seus casos de uso?
Resposta:
useRef cria uma referência mutável que persiste entre renderizações sem causar novas renderizações.
- Casos de Uso:
- Acessar elementos DOM/nativos
- Armazenar valores mutáveis sem disparar nova renderização
- Manter valores anteriores
- Armazenar timers/intervalos
Raridade: Comum Dificuldade: Média
3. Explique Hooks Personalizados e quando criá-los.
Resposta: Hooks personalizados extraem lógica stateful reutilizável em funções separadas.
- Benefícios: Reutilização de código, separação de preocupações, teste mais fácil
- Convenção: Deve começar com "use"
Raridade: Comum Dificuldade: Média
4. O que é React Context e quando você deve usá-lo?
Resposta: O Context fornece uma maneira de passar dados pela árvore de componentes sem prop drilling.
- Casos de Uso: Tema, autenticação, preferências de idioma
- Cuidado: Pode causar renderizações desnecessárias se não for usado com cuidado
Raridade: Muito Comum Dificuldade: Média
5. Explique a diferença entre useEffect e useLayoutEffect.
Resposta: Ambos executam side effects, mas em momentos diferentes:
- useEffect: Executa assincronamente após a renderização ser pintada na tela
- useLayoutEffect: Executa sincronamente antes de pintar (bloqueia atualizações visuais)
- Use useLayoutEffect quando: Você precisa medir o DOM ou evitar flicker visual
Raridade: Média Dificuldade: Difícil
Gerenciamento de Estado (4 Perguntas)
6. Explique Redux e seus princípios básicos.
Resposta: Redux é um contêiner de estado previsível para aplicativos JavaScript.
- Princípios Básicos:
- Única fonte de verdade (um store)
- O estado é somente leitura (despache actions para alterar)
- Alterações feitas com funções puras (reducers)
Raridade: Muito Comum Dificuldade: Difícil
7. O que é Redux Toolkit e como ele simplifica o Redux?
Resposta: Redux Toolkit é a maneira oficial recomendada de escrever lógica Redux.
- Benefícios:
- Menos boilerplate
- Immer integrado para atualizações imutáveis
- Inclui Redux Thunk
- Melhor suporte para TypeScript
Raridade: Comum Dificuldade: Média
8. Quais são as alternativas ao Redux para gerenciamento de estado?
Resposta: Existem várias soluções de gerenciamento de estado:
- Context API + useReducer: Integrado, bom para aplicativos simples
- MobX: Baseado em observable, menos boilerplate
- Zustand: Mínimo, baseado em hooks
- Recoil: Baseado em átomo, pelo Facebook
- Jotai: Átomos primitivos
Raridade: Comum Dificuldade: Média
9. Como você lida com side effects no Redux?
Resposta: Use middleware para operações assíncronas:
- Redux Thunk: Funções que retornam funções
- Redux Saga: Baseado em gerador, mais poderoso
- Redux Observable: Baseado em RxJS
Raridade: Comum Dificuldade: Difícil
Otimização de Desempenho (5 Perguntas)
10. Como você otimiza o desempenho do FlatList?
Resposta: Várias estratégias melhoram a rolagem do FlatList:
- Use
keyExtractor: Forneça chaves exclusivas getItemLayout: Ignore a medição para itens de altura fixaremoveClippedSubviews: Desmonte as visualizações fora da tela (Android)maxToRenderPerBatch: Controle o tamanho do lotewindowSize: Controle a janela renderizadainitialNumToRender: Itens para renderizar inicialmente- Memorize
renderItem: Evite renderizações desnecessárias
Raridade: Muito Comum Dificuldade: Média
11. O que é a ponte React Native e como ela afeta o desempenho?
Resposta: A ponte é a camada de comunicação entre o JavaScript e o código nativo.
- Como funciona:
- JavaScript é executado em uma thread separada
- Módulos nativos são executados em threads nativas
- A ponte serializa dados entre eles (JSON)
- Impacto no Desempenho:
- A comunicação da ponte é assíncrona
- Sobrecarga de serialização
- Pode se tornar um gargalo com comunicação frequente
- Soluções:
- Minimize as travessias da ponte
- Operações em lote
- Use animações nativas (desvie da ponte)
- Nova Arquitetura (JSI) remove a ponte
Raridade: Comum Dificuldade: Difícil
12. Como você evita renderizações desnecessárias?
Resposta: Várias técnicas evitam renderizações desperdiçadas:
- React.memo: Memoriza componentes
- useMemo/useCallback: Memoriza valores/funções
- Props de chave adequadas: Ajuda o React a identificar alterações
- Evite objetos/arrays inline: Crie novas referências
- Divida os componentes: Componentes menores e focados
Raridade: Muito Comum Dificuldade: Média
13. Como você otimiza imagens no React Native?
Resposta: A otimização de imagem é crucial para o desempenho:
- Redimensione as imagens: Use dimensões apropriadas
- Armazene imagens em cache: Use bibliotecas como react-native-fast-image
- Carregamento lento: Carregue imagens sob demanda
- Carregamento progressivo: Mostre o espaço reservado primeiro
- Use o formato WebP: Melhor compressão
Raridade: Comum Dificuldade: Média
14. Quais ferramentas você usa para profiling de desempenho?
Resposta: Várias ferramentas ajudam a identificar problemas de desempenho:
- React DevTools Profiler: Tempos de renderização de componentes
- Flipper: Ferramenta de depuração e profiling
- Monitor de Desempenho: Monitor de FPS integrado
- Systrace: Rastreamento de desempenho do Android
- Instruments: Profiling de desempenho do iOS
Raridade: Comum Dificuldade: Média
Módulos Nativos e Específicos da Plataforma (4 Perguntas)
15. Como você cria um Módulo Nativo no React Native?
Resposta: Módulos nativos permitem que você use código específico da plataforma.
Raridade: Média Dificuldade: Difícil
16. Como você lida com código específico da plataforma?
Resposta: Várias abordagens para código específico da plataforma:
- Módulo de plataforma: Verifique a plataforma em tempo de execução
- Arquivos específicos da plataforma:
.ios.jse.android.js - Platform.select: Selecione valores com base na plataforma
Raridade: Muito Comum Dificuldade: Fácil
17. O que é a Nova Arquitetura (Fabric e TurboModules)?
Resposta: A Nova Arquitetura melhora o desempenho do React Native:
- Fabric: Novo sistema de renderização
- Layout síncrono
- Melhor interoperação com visualizações nativas
- Type safety
- TurboModules: Novo sistema de módulo nativo
- Carregamento lento
- JSI (JavaScript Interface) - comunicação C++ direta
- Sem serialização de ponte
Benefícios:
- Inicialização mais rápida
- Menor uso de memória
- Chamadas nativas síncronas
- Melhor type safety
Raridade: Média Dificuldade: Difícil
18. Como você lida com deep linking no React Native?
Resposta: Deep linking permite abrir telas específicas a partir de URLs.
Raridade: Comum Dificuldade: Média
Testes (3 Perguntas)
19. Como você testa componentes React Native?
Resposta: Use bibliotecas de teste como Jest e React Native Testing Library.


