Domande colloquio React Native senior con risposte

Milad Bonakdar
Autore
Preparati a colloqui senior React Native con domande su architettura, performance FlatList, moduli nativi, stato, test e decisioni di produzione.
Introduzione
I colloqui senior React Native valutano quasi sempre più della sintassi. Aspettati domande su architettura dell’app, profiling delle performance, integrazione nativa, confini tra stato e dati, strategia di test, qualità dei release e capacità di spiegare trade-off dentro vincoli reali di prodotto.
Usa questa guida per esercitarti con risposte concise da senior. Parti dalla decisione che prenderesti, poi spiega ragionamento, rischio e fallback. Per esempio, non dire solo che FlatList si può ottimizzare; spiega come profileresti aree vuote, batch di rendering, righe memoizzate, chiavi stabili e cambi di design quando il vero problema sono altezze fisse o immagini pesanti.
React & Hooks Avanzati (5 Domande)
1. Spiega useMemo e useCallback. Quando dovresti usarli?
Risposta: Entrambi gli hook ottimizzano le prestazioni memorizzando valori/funzioni.
- useMemo: Memorizza valori computati (calcoli costosi)
- useCallback: Memorizza riferimenti a funzioni (previene la ricreazione)
- Quando usarli: Solo quando hai problemi di prestazioni. L'ottimizzazione prematura può rendere il codice più difficile da leggere.
Rarità: Molto Comune Difficoltà: Media
2. Cos'è useRef e quali sono i suoi casi d'uso?
Risposta:
useRef crea un riferimento mutabile che persiste tra i rendering senza causare re-rendering.
- Casi d'uso:
- Accesso a elementi DOM/nativi
- Memorizzazione di valori mutabili senza attivare il re-rendering
- Conservazione dei valori precedenti
- Memorizzazione di timer/intervalli
Rarità: Comune Difficoltà: Media
3. Spiega gli Hook Personalizzati e quando crearli.
Risposta: Gli hook personalizzati estraggono la logica stateful riutilizzabile in funzioni separate.
- Vantaggi: Riutilizzo del codice, separazione delle preoccupazioni, testing più semplice
- Convenzione: Deve iniziare con "use"
Rarità: Comune Difficoltà: Media
4. Cos'è React Context e quando dovresti usarlo?
Risposta: Context fornisce un modo per passare dati attraverso l'albero dei componenti senza prop drilling.
- Casi d'uso: Tema, autenticazione, preferenze di lingua
- Attenzione: Può causare re-rendering non necessari se non usato con attenzione
Rarità: Molto Comune Difficoltà: Media
5. Spiega la differenza tra useEffect e useLayoutEffect.
Risposta: Entrambi eseguono side effect, ma in momenti diversi:
- useEffect: Viene eseguito asincronamente dopo che il rendering è stato disegnato sullo schermo
- useLayoutEffect: Viene eseguito sincronicamente prima del paint (blocca gli aggiornamenti visivi)
- Usa useLayoutEffect quando: Devi misurare il DOM o prevenire sfarfallii visivi
Rarità: Media Difficoltà: Alta
Gestione dello Stato (4 Domande)
6. Spiega Redux e i suoi principi fondamentali.
Risposta: Redux è un contenitore di stato prevedibile per app JavaScript.
- Principi fondamentali:
- Unica fonte di verità (un solo store)
- Lo stato è di sola lettura (invia azioni per cambiare)
- Modifiche apportate con funzioni pure (reducer)
Rarità: Molto Comune Difficoltà: Alta
7. Cos'è Redux Toolkit e come semplifica Redux?
Risposta: Redux Toolkit è il modo ufficiale raccomandato per scrivere la logica Redux.
- Vantaggi:
- Meno boilerplate
- Immer integrato per aggiornamenti immutabili
- Include Redux Thunk
- Migliore supporto TypeScript
Rarità: Comune Difficoltà: Media
8. Quali sono le alternative a Redux per la gestione dello stato?
Risposta: Esistono diverse soluzioni per la gestione dello stato:
- Context API + useReducer: Integrato, buono per app semplici
- MobX: Basato su osservabili, meno boilerplate
- Zustand: Minimo, basato su hook
- Recoil: Basato su atomi, di Facebook
- Jotai: Atomi primitivi
Rarità: Comune Difficoltà: Media
9. Come gestisci gli effetti collaterali in Redux?
Risposta: Usa middleware per operazioni asincrone:
- Redux Thunk: Funzioni che restituiscono funzioni
- Redux Saga: Basato su generatori, più potente
- Redux Observable: Basato su RxJS
Rarità: Comune Difficoltà: Alta
Ottimizzazione delle Prestazioni (5 Domande)
10. Come ottimizzi le prestazioni di FlatList?
Risposta: Molteplici strategie migliorano lo scrolling di FlatList:
- Usa
keyExtractor: Fornisci chiavi univoche getItemLayout: Salta la misurazione per elementi ad altezza fissaremoveClippedSubviews: Smonta le viste fuori dallo schermo (Android)maxToRenderPerBatch: Controlla la dimensione del batchwindowSize: Controlla la finestra renderizzatainitialNumToRender: Elementi da renderizzare inizialmente- Memorizza
renderItem: Previene re-rendering non necessari
Rarità: Molto Comune Difficoltà: Media
11. Cos'è il bridge di React Native e come influisce sulle prestazioni?
Risposta: Il bridge è il livello di comunicazione tra JavaScript e il codice nativo.
- Come funziona:
- JavaScript viene eseguito in un thread separato
- I moduli nativi vengono eseguiti in thread nativi
- Il bridge serializza i dati tra loro (JSON)
- Impatto sulle prestazioni:
- La comunicazione del bridge è asincrona
- Overhead di serializzazione
- Può diventare un collo di bottiglia con comunicazioni frequenti
- Soluzioni:
- Minimizzare gli attraversamenti del bridge
- Operazioni batch
- Usa animazioni native (bypass del bridge)
- Nuova Architettura (JSI) rimuove il bridge
Rarità: Comune Difficoltà: Alta
12. Come previeni re-rendering non necessari?
Risposta: Molteplici tecniche prevengono rendering sprecati:
- React.memo: Memorizza i componenti
- useMemo/useCallback: Memorizza valori/funzioni
- Prop key appropriate: Aiuta React a identificare i cambiamenti
- Evita oggetti/array inline: Crea nuovi riferimenti
- Dividi i componenti: Componenti più piccoli e focalizzati
Rarità: Molto Comune Difficoltà: Media
13. Come ottimizzi le immagini in React Native?
Risposta: L'ottimizzazione delle immagini è fondamentale per le prestazioni:
- Ridimensiona le immagini: Usa dimensioni appropriate
- Memorizza le immagini nella cache: Usa librerie come react-native-fast-image
- Lazy loading: Carica le immagini su richiesta
- Caricamento progressivo: Mostra prima un segnaposto
- Usa il formato WebP: Migliore compressione
Rarità: Comune Difficoltà: Media
14. Quali strumenti usi per il performance profiling?
Risposta: Molti strumenti aiutano a identificare i problemi di prestazioni:
- React DevTools Profiler: Tempi di rendering dei componenti
- Flipper: Strumento di debug e profiling
- Performance Monitor: Monitor FPS integrato
- Systrace: Tracciamento delle prestazioni di Android
- Instruments: Profiling delle prestazioni di iOS
Rarità: Comune Difficoltà: Media
Moduli Nativi & Specifico per Piattaforma (4 Domande)
15. Come crei un Modulo Nativo in React Native?
Risposta: I moduli nativi ti permettono di usare codice specifico per la piattaforma.
Rarità: Media Difficoltà: Alta
16. Come gestisci codice specifico per la piattaforma?
Risposta: Molteplici approcci per codice specifico per la piattaforma:
- Modulo Platform: Controlla la piattaforma a runtime
- File specifici per la piattaforma:
.ios.jse.android.js - Platform.select: Seleziona valori basati sulla piattaforma
Rarità: Molto Comune Difficoltà: Facile
17. Cos'è la Nuova Architettura (Fabric e TurboModules)?
Risposta: La Nuova Architettura migliora le prestazioni di React Native:
- Fabric: Nuovo sistema di rendering
- Layout sincrono
- Migliore interoperabilità con le viste native
- Type safety
- TurboModules: Nuovo sistema di moduli nativi
- Lazy loading
- JSI (JavaScript Interface) - comunicazione C++ diretta
- Nessuna serializzazione del bridge
Vantaggi:
- Avvio più veloce
- Minore utilizzo di memoria
- Chiamate native sincrone
- Migliore type safety
Rarità: Media Difficoltà: Alta
18. Come gestisci il deep linking in React Native?
Risposta: Il deep linking permette di aprire schermate specifiche da URL.
Rarità: Comune Difficoltà: Media
Testing (3 Domande)
19. Come testi i componenti React Native?
Risposta: Usa librerie di testing come Jest e React Native Testing Library.


