useMemo cachea un valor calculado entre renders; useCallback cachea una referencia a una función. Son el mismo mecanismo, ya que useCallback(fn, deps) es useMemo(() => fn, deps). Úsalos cuando un valor sea de verdad caro de calcular, o cuando una referencia sea dependencia de un efecto o una prop hacia un hijo memoizado. Sáltatelos con valores baratos, porque llevar esa contabilidad no es gratis.
Por qué lo preguntan los entrevistadores
La memoización por reflejo es uno de los olores más comunes en código React, así que el entrevistador busca criterio y no costumbre. Comprueba que entiendes la identidad referencial, que sabes que memoizar una prop solo ayuda si el hijo está memoizado, y que abrirías el profiler antes de repartir hooks a discreción. En 2026 puede que también quiera oír dónde el React Compiler elimina la necesidad por completo.
Cómo estructurar tu respuesta
- Enuncia la diferencia en una línea: valor frente a referencia de función.
- Da los dos casos en los que de verdad compensa.
- Di qué mides antes de añadirlo.
- Menciona el React Compiler y hacia dónde va la memoización manual.
Ejemplo de respuesta
Son la misma herramienta con dos disfraces. useMemo cachea un valor, useCallback cachea una función, y por debajo useCallback no es más que useMemo devolviendo esa función. Solo recurro a cualquiera de los dos por dos motivos. Uno, que el cálculo sea de verdad caro, como ordenar y agrupar unos cuantos miles de filas. Dos, que la identidad importe, porque es dependencia de un efecto o una prop que entra en un componente envuelto en React.memo. Si no se cumple ninguno, lo dejo estar, porque cada llamada a memo sigue costando una comparación y algo de memoria, y ensucia la lectura del código. Lo primero que hago en realidad es abrir el React Profiler y ver si ese re-render cuesta algo. La mayoría de las veces el arreglo real no es un memo, es mover el estado más cerca de donde se usa para que medio árbol deje de renderizarse. Y en proyectos nuevos con el React Compiler activado, buena parte de esa memoización manual desaparece, cosa que agradezco; el código se lee mejor sin ella.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Qué compara React.memo por defecto y cómo cambias ese comportamiento?
- ¿Por qué una prop de objeto en línea anula React.memo?
- ¿Cómo memoizarías algo que depende de un valor que viene de un contexto?
Más preguntas para Desarrollador React
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas