Pergunta de entrevista para Engenheiro de Software

Quando você faz rebase e quando você faz merge?

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

Resposta rápida

Faça rebase da sua própria branch de feature sobre a branch principal para manter o histórico linear e resolver conflitos em doses pequenas antes do review. Faça merge ao integrar essa branch numa branch compartilhada, e nunca faça rebase de uma branch que outras pessoas já baixaram, porque reescrever histórico compartilhado força todo mundo a uma recuperação. Em resumo: rebase em trabalho privado, merge em trabalho público, e squash quando o histórico de commits não acrescenta nada para quem ler depois.

Por que os entrevistadores perguntam isso

O uso de Git conta ao entrevistador como você trabalha com outras pessoas. Eles querem a regra de histórico privado versus compartilhado, o entendimento de que rebase reescreve commits em vez de movê-los, e pragmatismo sobre convenção de time. Quem insiste numa estratégia única em todo lugar, ou não consegue explicar por que um force push numa branch compartilhada causa dano, tende a criar atrito num time.

Como estruturar sua resposta

  • Diga a regra de branch privada versus compartilhada.
  • Explique o que o rebase de fato faz com os ids de commit.
  • Diga quando você faria squash em vez disso.
  • Ceda à convenção do time onde ela existir.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Minha regra é rebase em histórico privado, merge em histórico compartilhado. Enquanto uma branch de feature é minha, eu faço rebase dela sobre a main com frequência, porque isso mantém o diff honesto e eu prefiro bater em conflitos em três doses pequenas do que numa enorme no fim. Quando ela entra na main eu faço merge, geralmente com squash, porque ninguém lendo o log daqui a seis meses quer os meus commits de corrigir typo. O que eu não vou fazer é rebase numa branch que outra pessoa já baixou, já que o rebase não move commits, ele cria novos com hashes novos, e a cópia dos originais de todo mundo fica órfã. Isso significa um force push e alguém perdendo trabalho. Já tive que guiar um colega pelo reflog para se recuperar exatamente disso. Além da regra, eu sigo o que o time já faz, porque um histórico consistente que todo mundo entende vale mais que a minha preferência pessoal, e essa não é uma briga que valha a pena comprar em code review.

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ê recuperaria um commit perdido depois de um rebase ruim?
  • O que um rebase interativo te deixa limpar?
  • Como você lida com uma branch de vida longa que ficou muito defasada?

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