useMemo guarda em cache um valor calculado entre renders; useCallback guarda em cache a referência de uma função. São o mesmo mecanismo, já que useCallback(fn, deps) é useMemo(() => fn, deps). Use quando um valor for realmente caro de calcular, ou quando a referência for dependência de um efeito ou prop de um filho memoizado. Pule os dois para valores baratos, porque a contabilidade não sai de graça.
Por que os entrevistadores perguntam isso
Memoizar por reflexo é um dos cheiros mais comuns em código React, então o entrevistador quer julgamento em vez de hábito. Ele está checando se você entende identidade referencial, se você sabe que memoizar uma prop só ajuda quando o filho também é memoizado, e se você abriria o profiler antes de sair espalhando hooks. Em 2026 ele também pode querer ouvir onde o React Compiler elimina a necessidade por completo.
Como estruturar sua resposta
- Diga a diferença em uma linha: valor versus referência de função.
- Dê os dois casos em que isso realmente compensa.
- Diga o que você mede antes de adicionar.
- Mencione o React Compiler e para onde a memoização manual está indo.
Exemplo de resposta
São a mesma ferramenta com chapéus diferentes. useMemo guarda um valor, useCallback guarda uma função, e por baixo dos panos useCallback é só um useMemo devolvendo aquela função. Eu só uso um dos dois por dois motivos. Um, o cálculo é realmente caro, tipo ordenar e agrupar alguns milhares de linhas. Dois, a identidade da coisa importa, porque ela é dependência de um efeito ou prop indo para um componente embrulhado em React.memo. Se nenhum dos dois for verdade, eu deixo quieto, porque toda chamada de memo ainda custa uma comparação e um pouco de memória, e deixa o código mais barulhento de ler. O que eu de fato faço primeiro é abrir o React Profiler e checar se aquele re-render custa alguma coisa. Na maioria das vezes o conserto real não é um memo, é mover o estado para mais perto de onde ele é usado, aí metade da árvore para de renderizar. E em projetos mais novos com o React Compiler ligado, boa parte dessa memoização manual some, o que me deixa feliz; o código lê melhor sem ela.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- O que o React.memo compara por padrão e como você muda isso?
- Por que uma prop de objeto inline derrota o React.memo?
- Como você memoizaria algo que depende de um valor vindo de um context?
Mais perguntas para Desenvolvedor React
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas