Perguntas para Entrevista de Desenvolvedor React Native Sênior: Guia Completo

Milad Bonakdar
Autor
Domine o desenvolvimento React Native avançado com perguntas essenciais para entrevistas, abrangendo otimização de desempenho, módulos nativos, gerenciamento de estado, testes, padrões de arquitetura e melhores práticas multiplataforma para desenvolvedores seniores.
Introdução
Espera-se que desenvolvedores React Native sênior arquitetem aplicativos multiplataforma escaláveis, otimizem o desempenho, integrem módulos nativos e tomem decisões arquitetônicas informadas. Essa função exige profundo conhecimento em React Native, gerenciamento de estado, desenvolvimento nativo e a capacidade de resolver desafios complexos de desenvolvimento móvel.
Este guia abrangente cobre as principais perguntas de entrevistas para desenvolvedores React Native sênior, abrangendo conceitos avançados de React, otimização de desempenho, gerenciamento de estado, módulos nativos, testes e padrões arquitetônicos. Cada pergunta inclui respostas detalhadas, avaliação de raridade e classificações de dificuldade.
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.


