Pergunta de entrevista para Desenvolvedor Frontend

Como você pensa a diferença entre estado de servidor e estado de cliente numa aplicação frontend?

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

Resposta rápida

Estado de servidor é dado que não é seu: vive num banco de dados, pode estar desatualizado no instante em que chega, e precisa de cache, revalidação, retentativas e deduplicação. Estado de cliente é dado que é seu, como qual aba está aberta ou o que foi digitado num formulário, e é síncrono e sempre correto. Trate os dois de forma diferente: um cache de queries para estado de servidor, estado local de componente ou um store pequeno para estado de cliente.

Por que os entrevistadores perguntam isso

O entrevistador quer saber se você ainda empurraria respostas de API para um store global e escreveria flags de carregamento na mão. Separar os dois é a sacada por trás das bibliotecas modernas de dados, e prevê quanta complexidade acidental seu código carrega. Também abre perguntas de acompanhamento sobre invalidação de cache, atualizações otimistas e o que acontece quando dois componentes precisam do mesmo dado.

Como estruturar sua resposta

  • Defina as duas categorias em termos de propriedade do dado.
  • Liste o que estado de servidor precisa e estado de cliente não.
  • Nomeie a ferramenta que você usa para cada um e por quê.
  • Dê um sintoma de errar isso.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Estado de servidor é uma cópia em cache de algo que não controlo. Chega de forma assíncrona, pode estar desatualizado, dois componentes podem querer ao mesmo tempo, e precisa de revalidação, retentativas e deduplicação. Estado de cliente é meu: o acordeão aberto, o rascunho num formulário, o filtro selecionado antes de eu aplicar. É síncrono e nunca está desatualizado. Quando comecei a tratar os dois como problemas diferentes, muito código sumiu. Dado de servidor vai para um cache de queries chaveado pelos seus parâmetros, que cuida dos estados de carregamento e erro, deduplica requisições concorrentes e refaz o fetch ao focar a janela. Estado de cliente fica como estado local do componente até mais de um componente precisar, e só então vai para um store compartilhado pequeno. O sintoma de errar isso é bem reconhecível: um store global cheio de entidades, booleanos de carregamento escritos na mão em cada tela, e um bug em que dois componentes buscam o mesmo usuário e discordam sobre ele. Já mantive essa aplicação e não a construiria de novo.

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ê lida com uma atualização otimista que o servidor rejeita?
  • Qual é a sua estratégia de invalidação depois de uma mutação?
  • Quando o estado de cliente genuinamente precisa ser global?

Mais perguntas para Desenvolvedor Frontend

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