Pergunta de entrevista para Desenvolvedor Backend

Um fluxo de pedido passa por pagamentos, estoque e envio, cada um com o próprio banco de dados. Como você mantém a coisa toda consistente?

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

Resposta rápida

Você abre mão de uma transação distribuída única e usa uma saga: uma sequência de transações locais em que cada passo publica um evento que dispara o seguinte, e cada passo tem uma ação compensatória para desfazê-lo. A consistência vira eventual, então o trabalho de projeto é decidir o que compensar, o que repetir e o que escalar para um humano. Modele o fluxo explicitamente, por coreografia com eventos ou coordenado por um orquestrador.

Por que os entrevistadores perguntam isso

O entrevistador testa se você recorre a two phase commit ou se entende por que quase ninguém roda isso entre serviços. Ele quer ouvir sobre ações compensatórias, idempotência, a diferença semântica entre rollback e estorno, e como você mantém a máquina de estados visível. Isso também sonda se você questionaria as fronteiras dos serviços em primeiro lugar, já que alguns desses passos talvez devessem estar juntos.

Como estruturar sua resposta

  • Explique por que uma transação distribuída não é a resposta.
  • Defina a saga: transações locais mais compensações.
  • Contraste coreografia com orquestração e escolha uma.
  • Cubra as partes sujas: falha parcial, retries, escalonamento humano.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Um two phase commit entre três serviços e três bancos significa segurar locks através da rede e ter um coordenador que pode travar tudo se cair, então eu não faria isso. Em vez disso o fluxo vira uma saga. Cada serviço faz a própria transação local e emite um evento, e cada passo tem uma compensação definida: se o envio não conseguir alocar, liberamos a reserva de estoque e estornamos ou cancelamos o pagamento. O importante é que compensação é uma ação de negócio, não um rollback; um estorno deixa um registro visível, e isso está correto. Para qualquer coisa com mais de uns três passos eu uso um orquestrador em vez de coreografia pura, porque com coreografia o fluxo real não mora em lugar nenhum e ninguém consegue responder onde um pedido travou. Um orquestrador me dá uma máquina de estados, timeouts por passo e um status consultável. Cada passo é idempotente e repetido com backoff, e tudo que esgota os retries cai numa fila de operações com o id do pedido, porque algumas falhas realmente precisam de uma pessoa.

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ê faz quando a própria ação compensatória falha?
  • Como você mostraria a um cliente o estado de um pedido em andamento?
  • Quando você juntaria dois serviços em vez de rodar uma saga entre eles?

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

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