Pergunta de entrevista para Desenvolvedor Full Stack

Como você adicionaria uma camada de cache na frente de um endpoint pesado de leitura sem servir dados muito desatualizados?

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

Resposta rápida

Escolha o TTL mais curto que ainda faça diferença, depois invalide na escrita apagando ou sobrescrevendo a chave no mesmo caminho que altera a linha. Componha a chave com toda entrada que muda o resultado, incluindo tenant e uma versão de schema. Adicione um lock de execução única para um miss não causar estouro de manada no banco. Aceite desatualização explícita onde ela é inofensiva, e acompanhe a taxa de acerto para saber que aquilo está funcionando.

Por que os entrevistadores perguntam isso

Cache é fácil de adicionar e difícil de manter correto, então o entrevistador quer ver você pensar em invalidação e desenho de chave em vez de só citar o Redis. Ele também está checando os modos de falha: estouro de manada na expiração, chaves que vazam dados entre tenants, e caches que silenciosamente param de acertar depois de um deploy. Medir a taxa de acerto mostra que você notaria quando o cache para de ajudar em silêncio.

Como estruturar sua resposta

  • Confirme que o endpoint é pesado de leitura e tolera alguma desatualização.
  • Desenhe a chave de cache, incluindo tenant e versão.
  • Explique a estratégia de invalidação na escrita.
  • Cubra estouro de manada e como você monitoraria a taxa de acerto.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Antes de adicionar qualquer coisa, eu checo se a query não pode simplesmente ficar rápida, porque um cache na frente de uma query ruim esconde o problema até o cache dar miss no pior momento. Supondo que seja genuinamente pesado de leitura, eu vou de cache aside no Redis. A chave inclui o id do tenant, os parâmetros reais da query, e um prefixo de versão que eu consigo incrementar no deploy para um formato de resposta alterado nunca ser servido de entradas antigas. O TTL é a rede de segurança e não o mecanismo: eu invalido explicitamente na escrita, no mesmo caminho de código que atualiza a linha, então a janela de desatualização é de milissegundos no caso normal. O modo de falha para o qual eu me preparo é o estouro de manada, em que uma chave quente expira e duzentas requisições dão miss e batem no banco de uma vez, então eu uso um lock de execução única e deixo os perdedores esperarem o vencedor. Depois eu exporto a taxa de acerto como métrica, porque um cache que caiu de 95 por cento para 10 depois de uma refatoração passa despercebido até o banco cair.

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

  • O que você guardaria no Redis versus na CDN?
  • Como você lidaria com um cache que sai do ar por completo?
  • Quando write through é melhor que cache aside aqui?

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