Pergunta de entrevista para Desenvolvedor Backend

Como você impede que uma mudança de backend quebre os clientes que consomem sua API?

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

Resposta rápida

Torne o contrato verificável por máquina. Mantenha um schema, um documento OpenAPI ou definições protobuf, gerados a partir do código ou validados contra ele, e rode uma checagem de compatibilidade no CI que falhe em qualquer mudança que quebre, como um campo removido ou um tipo restringido. Adicione testes de contrato guiados pelo consumidor para clientes internos, e versione eventos do mesmo jeito que você versiona endpoints.

Por que os entrevistadores perguntam isso

O entrevistador quer saber se a compatibilidade é garantida por ferramenta ou pela esperança de que alguém perceba. Ele presta atenção a um schema versionado, um portão automatizado de diff, e como você cobre payloads de mensagens além de HTTP. Isso também toca na realidade organizacional: como você descobre quem realmente consome um endpoint antes de mudá-lo.

Como estruturar sua resposta

  • Coloque o contrato no controle de versão e mantenha em sincronia com o código.
  • Adicione um diff automatizado de compatibilidade como portão no CI.
  • Cubra consumidores internos com testes de contrato.
  • Explique como você encontra os consumidores reais antes de mudar qualquer coisa.

Exemplo de resposta

Exemplo falado, em primeira pessoa

O contrato precisa ser um arquivo que o CI consiga comparar, senão a compatibilidade depende de quem revisa o pull request. Então o documento OpenAPI mora no repositório e é gerado a partir dos handlers, o que impede que ele vire ficção, e existe um job que faz o diff contra a versão da branch principal e falha em qualquer coisa que quebre: um campo removido, um novo parâmetro obrigatório, um tipo estreitado. Adicionar coisas é sempre permitido. Para consumidores internos eu gosto de contratos guiados pelo consumidor, em que cada cliente publica o subconjunto do qual realmente depende e meu build verifica que continuo satisfazendo todos, então eu descubro no build e não pelo plantão deles. Eventos recebem o mesmo tratamento por um registro de schemas com um modo de compatibilidade definido, já que um payload de evento quebrado é pior que um endpoint quebrado, porque os consumidores falham de forma assíncrona. E antes de mudar qualquer coisa eu olho as métricas de requisição por cliente, porque o contrato me diz o que é possível e as métricas me dizem quem realmente notaria.

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 conta como mudança que quebra numa resposta JSON?
  • Como você trataria um cliente que depende de comportamento não documentado?
  • Como você gerencia a evolução de schema de eventos ao longo de anos?

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