Pergunta de entrevista para Desenvolvedor Full Stack

Explique como você faria cache de uma resposta de API JSON na camada HTTP.

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

Resposta rápida

Configure o Cache-Control com um max-age explícito e um escopo: public para cache compartilhado em CDN, private para dados por usuário. Adicione stale-while-revalidate para os clientes servirem dados um pouco antigos enquanto atualizam em segundo plano. Inclua um ETag ou Last-Modified para a revalidação ser um 304 barato em vez do corpo inteiro. Para qualquer coisa específica de usuário, configure o Vary em Authorization ou Cookie para os caches nunca cruzarem os fios entre contas.

Por que os entrevistadores perguntam isso

Cache é onde desenvolvedores full stack ou economizam dinheiro de verdade ou vazam dados de outras pessoas, então o entrevistador está sondando tanto o instinto de performance quanto o de segurança. Ele quer ver que você conhece a diferença entre caches de navegador, de CDN e de origem, que você consegue nomear os headers em vez de gesticular sobre eles, e que você pensa de imediato no modo de falha de dados privados sem ser cutucado.

Como estruturar sua resposta

  • Cite o header que define a política e as diretivas principais dele.
  • Explique a revalidação com ETag e a resposta 304.
  • Cubra o caso de dado privado e o Vary.
  • Mencione como você invalida quando os dados mudam.

Exemplo de resposta

Exemplo falado, em primeira pessoa

A primeira pergunta que eu faço é quem pode guardar esta resposta. Se ela é a mesma para todo mundo, public com um max-age de verdade deixa a CDN absorver o tráfego e a origem quase não vê nada. Se é por conta, tem que ser private, e eu configuro o Vary em Authorization para um cache compartilhado não conseguir servir o payload de um usuário para outro. Esse erro é silencioso e catastrófico, então eu checo explicitamente. Depois eu adiciono um ETag, porque um 304 custa algumas centenas de bytes em vez do corpo inteiro, e stale-while-revalidate para um usuário nunca esperar por uma atualização. Para qualquer coisa que precisa estar atual, eu troco para um max-age curto mais revalidação em vez de no-store, já que no-store joga fora o ganho barato. Na última API em que eu trabalhei, mover um endpoint público de preços de no-cache para sessenta segundos public com stale-while-revalidate cortou as requisições à origem em uns 90 por cento, e ninguém notou um minuto de desatualização.

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ê limparia o cache da CDN quando os dados de base mudam?
  • Qual é a diferença entre no-cache e no-store?
  • Como você faz cache de assets estáticos com hash de forma diferente das respostas de API?

Mais perguntas para Desenvolvedor Full Stack

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