Pergunta de entrevista para Desenvolvedor React

Várias telas precisam dos mesmos dados de servidor e eles ficam sendo buscados de novo. Como você lidaria com isso?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Coloque os dados numa camada de cache chaveada por requisição em vez de no estado de componente. Uma biblioteca de query deduplica requisições concorrentes para a mesma chave, serve dados do cache na hora enquanto revalida em segundo plano, e te dá um lugar só para invalidar depois de uma mutação. Do lado do servidor, cache por requisição mais prefetch na rota significa que o cliente muitas vezes já tem os dados antes de o componente montar.

Por que os entrevistadores perguntam isso

O entrevistador está testando se você distingue estado de servidor de estado de UI, que é a maior decisão de arquitetura na maioria das aplicações React. Ele quer ouvir sobre chaves de cache, obsolescência e invalidação em vez de uma store global entupida de respostas de API. Mencionar prefetch e deduplicação de requisições mostra que você já lidou com o problema do waterfall numa aplicação real e não num tutorial.

Como estruturar sua resposta

  • Nomeie o erro de categoria: dado de servidor é cache, não estado.
  • Explique deduplicação, stale time e revalidação em segundo plano.
  • Cubra invalidação depois de mutações e quem é dono das chaves.
  • Acrescente prefetch ou busca no servidor para matar o waterfall.

Exemplo de resposta

Exemplo falado, em primeira pessoa

A causa raiz normalmente é que o dado está sendo tratado como estado de componente, então cada tela tem a própria cópia e o próprio fetch. Eu movo para um cache de query chaveado por algo com significado, tipo o nome do recurso mais o id. Uma vez chaveado, três componentes pedindo a mesma coisa numa mesma passada de render produzem uma requisição de rede, e a segunda tela ganha um paint instantâneo do cache enquanto uma revalidação acontece quietinha atrás. Eu defino o stale time por recurso e não globalmente, porque um perfil de usuário pode ficar obsoleto por minutos e um status de pedido ao vivo não pode. As mutações então invalidam chaves específicas em vez de tudo, e eu mantenho os construtores de chave num módulo só para ninguém inventar uma chave levemente diferente e quebrar o cache em silêncio. Se o framework suportar, eu faço prefetch na rota ou busco no servidor, para o dado já estar a caminho antes de o componente montar, que é o que de fato remove o waterfall em vez de só escondê-lo atrás de um spinner.

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 funciona

Perguntas de acompanhamento que você pode esperar

  • Como você decide o stale time de um determinado recurso?
  • Como você lidaria com uma mutação que afeta várias listas em cache?
  • Qual é a sua abordagem quando duas telas precisam de formatos diferentes do mesmo dado?

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

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot