tema
Debugging
Entrevistas de debugging não querem que você adivinhe a causa — querem ver o método: como você reproduz de forma confiável, reduz a superfície do problema, lê um stack trace de trás pra frente, e usa git bisect ou binary search pra localizar a regressão. Corrigir sem confirmar a hipótese é o anti-padrão que reprova.
Simuladores de Debugging
Principais perguntas de Debugging
ver todas →O método pra caçar um bug (em vez de adivinhar)
Reproduzir → isolar → ler os sinais → hipótese falsificável → confirmar antes de corrigir → teste de regressão. Nunca 'corrige e vê se some'.
MédioPlenogit bisect: achar o commit que introduziu a regressão
Busca binária no histórico: marca good/bad, testa o commit do meio, repete. ~log2(N) passos. `git bisect run` automatiza com um script.
MédioPlenoCenário: o bug some quando você adiciona um log
Sinal de race condition — o log muda o timing e esconde a corrida. Investigue com logging que não altera timing e delays forçados; corrija removendo a dependência de ordem.
DifícilSêniorLer um stack trace sem se perder
Mensagem no topo = o quê. Desça até o primeiro frame do SEU código = quase sempre a causa. Anote arquivo:linha; cuidado com async 'caused by'.
FácilJúniorRubber duck debugging: por que explicar em voz alta funciona
Explicar força verbalizar cada suposição em vez de ler no automático — a suposição falsa que você nunca verificou fica óbvia ao dizê-la em voz alta.
FácilJúniorBusca binária pra localizar onde o estado corrompe
Cheque o valor no meio do fluxo: errado ali → primeira metade; certo → segunda. Repita bisseccionando. ~9 checagens pra centenas de linhas. Mesmo princípio de git bisect.
MédioPlenoCenário: o bug só acontece em produção
Reduza a diferença dev↔prod (dados reais, config, versões, concorrência, timezone). Instrumente com log + id de correlação e capture o input que falhou. Reproduza antes de corrigir.
DifícilSêniorPrint debugging x debugger interativo
Print: fluxo ao longo do tempo, async, ambientes sem debugger, comparar execuções. Debugger: inspecionar estado rico num ponto, passo a passo, breakpoints condicionais. Logpoints unem os dois.
FácilJúniorCenário: consumo de memória cresce sem parar
Heap sobe monotônico mesmo pós-GC. Compare dois heap snapshots (o que acumulou por retained size). Suspeitos: listeners não removidos, caches sem limite, timers não limpos, globais que só crescem.
DifícilSêniorO que torna um log útil na hora do incidente
Útil: estruturado, com trace id, nível certo, contexto acionável (sem PII), timestamp com tz. Volume: 'entrei na função', dumps sem rótulo, mensagens ambíguas, dados sensíveis.
MédioPleno"O bug está na biblioteca" — como investigar sem assumir isso
Assuma que é seu código. Faça um repro mínimo usando só a lib; se não reproduz isolado, é o seu uso. Leia changelog e issues, leia o fonte em node_modules, confirme a versão. Só então abra issue com o repro.
MédioPleno
Perguntas frequentes
O que os entrevistadores mais avaliam em debugging?
Entrevistas de debugging não querem que você adivinhe a causa — querem ver o método: como você reproduz de forma confiável, reduz a superfície do problema, lê um stack trace de trás pra frente, e usa git bisect ou binary search pra localizar a regressão. Corrigir sem confirmar a hipótese é o anti-padrão que reprova.
Quanto tempo leva pra treinar debugging até me sentir pronto?
Depende do seu ponto de partida, mas a maioria sente diferença depois de 2-3 simulações completas com revisão das perguntas erradas — é aí que os padrões que se repetem em entrevista real ficam visíveis.