Pergunta de entrevista para Desenvolvedor Backend

Sua fila de mensagens garante entrega pelo menos uma vez. O que isso significa para o consumidor que você escreve?

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

Resposta rápida

Significa que duplicatas são normais, não excepcionais, então o seu consumidor precisa ser idempotente. Derive uma chave estável da mensagem, registre as chaves processadas na mesma transação do efeito, e trate uma repetição como um no op. Espere também entrega fora de ordem e reentrega após uma queda entre fazer o trabalho e confirmar. Exatamente uma vez de ponta a ponta não existe entre sistemas; o que você tem é pelo menos uma vez mais tratamento idempotente.

Por que os entrevistadores perguntam isso

Essa é a origem mais comum de cobranças duplicadas e e-mails duplicados em sistemas orientados a eventos. O entrevistador quer saber se você projeta consumidores de forma defensiva ou supõe que o broker vai te proteger. Mencionar a janela de confirmação, uma tabela de deduplicação gravada na mesma transação e uma dead letter queue mostra que você já operou um consumidor, e não apenas escreveu um.

Como estruturar sua resposta

  • Diga com clareza que duplicatas vão acontecer e por quê.
  • Dê o mecanismo de idempotência, incluindo onde o registro é gravado.
  • Cubra ordenação e a janela de confirmação.
  • Acrescente tratamento de falhas: retries com backoff e uma dead letter queue.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Significa que eu vou receber a mesma mensagem duas vezes, normalmente porque o consumidor fez o trabalho e morreu antes de confirmar, então o broker reentrega. Então o consumidor precisa ser seguro de rodar duas vezes com a mesma entrada. Na prática eu pego um id estável da mensagem e, quando gravo o efeito, gravo o id processado na mesma transação de banco, com uma constraint de unicidade. Se o insert conflitar, eu sei que já tratei aquilo e confirmo sem refazer o trabalho. A parte crítica é que o registro de deduplicação e o efeito comitam juntos; se eu gravar separado, existe uma janela em que posso duplicar. Eu também assumo que a ordem não é garantida, então os handlers são escritos para tolerar um update chegando antes do create, normalmente usando a entidade como chave e checando uma versão. Para falhas eu uso retry limitado com backoff exponencial e jitter, depois uma dead letter queue com alerta, porque tentar de novo uma mensagem envenenada para sempre e em silêncio é como uma fila entope durante a noite.

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

  • Onde exatamente você guardaria a chave de deduplicação, e por quanto tempo?
  • Como você preserva a ordenação quando precisa dela?
  • Qual é o seu processo para esvaziar uma dead letter queue?

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