Pergunta de entrevista para Engenheiro de Software

Explique o que ACID significa e o que cada propriedade realmente garante.

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

Resposta rápida

ACID descreve as garantias que uma transação te dá. Atomicidade significa que todas as escritas entram ou nenhuma entra. Consistência significa que a transação move o banco de um estado válido para outro, respeitando as restrições dele. Isolamento significa que transações concorrentes não veem o trabalho parcial umas das outras, no grau que o nível de isolamento promete. Durabilidade significa que, uma vez que o commit retorna, o dado sobrevive a uma queda.

Por que os entrevistadores perguntam isso

Quase todo bug de produção envolvendo dinheiro, estoque ou escritas duplicadas remonta a um mal-entendido aqui. O entrevistador quer checar se você trata isso como garantias que o banco te dá em vez de mágica, e especificamente se você sabe que isolamento é ajustável e que o padrão na maioria dos sistemas não é serializabilidade completa. Definições precisas sinalizam que você consegue raciocinar sobre correção sob concorrência.

Como estruturar sua resposta

  • Defina cada uma das quatro letras em uma frase.
  • Enfatize que isolamento é um botão, não uma configuração única.
  • Conecte uma propriedade a um bug real que você viu.
  • Mencione o que muda quando você fica distribuído.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Atomicidade é tudo ou nada: se eu debito de uma conta e credito em outra, ou as duas escritas dão commit ou nenhuma dá. Consistência significa que a transação deixa o banco satisfazendo as restrições dele, então chaves estrangeiras e check constraints valem dos dois lados. Isolamento é o interessante, porque é um botão e não uma promessa. A maioria dos bancos usa read committed por padrão, que ainda permite leituras não repetíveis e linhas fantasma, então se você assume comportamento serializable você vai acabar subindo uma corrida. Durabilidade significa que, uma vez que o commit retorna, a escrita sobrevive a uma queda de energia, geralmente porque bateu no write ahead log e foi sincronizada. O lugar onde isso me mordeu foi um endpoint de resgate de cupom. A gente checava os usos restantes e depois decrementava em dois comandos separados sob read committed, e dois requests concorrentes viram um uso sobrando. A correção foi um único update condicional com um where na contagem restante, o que tornou a checagem e a escrita atômicas.

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

  • Qual nível de isolamento seu banco está rodando por padrão?
  • O que é uma leitura fantasma e qual nível evita isso?
  • Como essas garantias mudam quando você faz sharding entre nós?

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