Pergunta de entrevista para Engenheiro de Software

Como funciona a coleta de lixo, e quando ela vira um problema?

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

Resposta rápida

Um coletor de lixo acha objetos ainda alcançáveis a partir de raízes como a pilha e os globais, e recupera todo o resto. A maioria dos coletores modernos é geracional, construída sobre a observação de que a maioria dos objetos morre jovem, então eles coletam um berçário pequeno com frequência e a geração velha raramente. Vira problema quando os tempos de pausa comem seu orçamento de latência, quando a alocação supera a coleta, ou quando você vaza segurando referências que esqueceu.

Por que os entrevistadores perguntam isso

Runtimes gerenciados escondem memória até não esconderem mais, e o entrevistador quer saber se você consegue lidar com esse dia. Eles estão checando se você entende alcançabilidade em vez de folclore de contagem de referências, se você sabe que coleta geracional é por que alocação de vida curta é barata, e se você consegue nomear os sintomas de pressão de GC: pausas crescendo, ocupação de heap subindo depois de cada coleta, throughput caindo sob carga.

Como estruturar sua resposta

  • Explique alcançabilidade a partir das raízes, não contagem de referências.
  • Descreva a coleta geracional e por que a premissa se sustenta.
  • Cite os modos de falha: pausas, taxa de alocação, vazamentos.
  • Diga como você diagnosticaria com ferramental real.

Exemplo de resposta

Exemplo falado, em primeira pessoa

O modelo mental é alcançabilidade. O coletor começa nas raízes, a pilha, os registradores e os globais, percorre tudo que é alcançável, e o que ele nunca alcançou é lixo. A maioria dos coletores é geracional porque a esmagadora maioria dos objetos morre quase imediatamente, então você varre um espaço jovem pequeno com frequência e toca o espaço velho raramente. É por isso que alocar um objeto de vida curta é quase de graça, e por que um cache de vida longa é o que sai caro. Isso vira problema de três jeitos. Pausas, se uma coleta stop the world cai dentro do seu orçamento de p99. Taxa de alocação, quando você produz lixo mais rápido do que o coletor recupera e o throughput desaba. E vazamentos, que num runtime gerenciado sempre significam que algo ainda segura uma referência, geralmente um mapa estático ou um listener que ninguém removeu. Quando fui atrás disso eu começo pelos logs de GC e observo a ocupação de heap depois de cada coleta. Se essa linha sobe ao longo de horas é vazamento, e aí é um heap dump para achar quem segura.

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

  • Qual é a diferença entre um vazamento e simplesmente uso alto de memória?
  • Como você reduziria alocação num caminho quente?
  • Quando você ajustaria o tamanho do heap em vez do código?

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