Pergunta de entrevista para Engenheiro de Software

Como você decide o que colocar em cache, e como você lida com invalidação?

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

Resposta rápida

Faça cache de dados que são lidos muito mais do que mudam e que são caros de produzir. Para invalidação, prefira um tempo de vida curto para qualquer coisa que pode estar levemente desatualizada, e invalidação explícita na escrita para qualquer coisa que não pode. Indexe o cache por tudo que varia o resultado, incluindo tenant e permissões, e trate o cache como descartável: o sistema precisa continuar correto quando ele está vazio.

Por que os entrevistadores perguntam isso

Cache é de onde vêm tanto bugs de correção quanto quedas, então o entrevistador está sondando discernimento e não conhecimento de comandos do Redis. Eles querem a razão entre leituras e escritas como critério de seleção, uma estratégia explícita de invalidação, consciência de que chaves de cache podem vazar dados entre usuários, e a disciplina de tratar o cache como uma otimização sem a qual o sistema sobrevive.

Como estruturar sua resposta

  • Dê o critério: muita leitura, caro, tolerável estar desatualizado.
  • Escolha entre tempo de vida curto e invalidação na escrita.
  • Alerte sobre chaves de cache vazando dados entre usuários.
  • Diga que o sistema tem que funcionar com o cache frio.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Eu procuro três propriedades: lido muito mais do que escrito, caro de computar, e tolerante a estar levemente desatualizado. Se falha na última, tipo um saldo de conta, eu prefiro que seja lento e certo. Para invalidação meu padrão é um tempo de vida curto, porque ele se cura sozinho; se um bug faz eu perder uma invalidação, o problema se resolve em sessenta segundos em vez de viver para sempre. Onde estar desatualizado genuinamente não é aceitável, eu invalido no mesmo caminho de código da escrita e aceito o acoplamento extra. O que eu tomo mais cuidado é com a chave. Tudo que varia o resultado entra nela, especialmente o id de tenant ou de usuário, porque o pior bug de cache que eu já vi foi uma resposta cacheada no CDN que incluía um header personalizado, e um cliente viu brevemente o nome de outro cliente. E eu sempre testo com o cache limpo, porque se o sistema cai frio, aquilo não é cache, é dependência.

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ê evitaria uma estampida quando uma chave quente expira?
  • Onde você colocaria o cache: em processo, Redis ou CDN?
  • Como você mede se um cache está de fato ajudando?

Mais perguntas para Engenheiro de Software

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