Evite a estampida com single flight: a primeira requisição que der miss pega um lock curto e recalcula enquanto as outras esperam um instante ou servem o valor antigo. Combine isso com stale while revalidate, para que uma entrada expirada ainda seja servida enquanto uma atualização roda em segundo plano, e adicione jitter aos tempos de vida para que chaves criadas juntas não expirem juntas. Para chaves quentes conhecidas, atualize proativamente antes da expiração.
Por que os entrevistadores perguntam isso
Perguntas sobre cache separam quem já adicionou um cache de quem já operou um. O entrevistador quer o modo de falha específico, uma manada de requisições na expiração, e as mitigações padrão. Isso também abre a discussão mais difícil sobre invalidação, tolerância a dados desatualizados e o que acontece quando o próprio cache cai, que é onde um banco subdimensionado normalmente vai ao chão.
Como estruturar sua resposta
- Nomeie o mecanismo: muitos misses concorrentes numa chave quente.
- Dê o lock de single flight e o que os que esperam fazem.
- Acrescente stale while revalidate e expiração com jitter.
- Mencione o cenário de cache frio e o planejamento de capacidade.
Exemplo de resposta
O padrão é uma manada: uma chave quente expira e todas as requisições concorrentes dão miss no mesmo instante, então todas rodam a mesma query cara. A correção central é single flight, em que o primeiro miss adquire um lock de vida curta na chave e faz o trabalho, e todos os outros ou esperam pelo resultado ou recebem o valor antigo por um momento. Eu combino isso com expiração suave: guardo um tempo lógico de atualização dentro do valor e mantenho o tempo de vida rígido mais longo, então uma entrada passada do tempo de atualização ainda é servida enquanto um worker recalcula em segundo plano. Os usuários nunca sentem a latência. Depois o jitter, porque se um deploy aquece mil chaves com o mesmo tempo de vida de cinco minutos, elas expiram juntas e eu recebo a estampida no cache inteiro de uma vez. A pergunta maior que vem depois é o que acontece quando o cache está completamente vazio, depois de um restart ou um failover. Eu quero que o banco sobreviva a isso, então faço teste de carga com o cache desligado pelo menos uma vez.
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
- Como você implementaria o lock de single flight com segurança entre várias instâncias?
- Como você invalida um valor em cache quando o dado de origem muda?
- O que acontece com o seu serviço se o cluster de cache falhar por completo?
Mais perguntas para Desenvolvedor Backend
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