P
prepair.app
Começar entrevista →
EnglishУкраїнськаРусскийDeutsch
🦫

Senior Go BackendPerguntas de entrevista Golang

Senior · 5+ anos de experiência

Entrevistas de Go focam em goroutines, channels, interfaces e tratamento de erros — a linguagem é pequena, então as perguntas vão fundo em vez de largo. Abaixo estão as mais comuns com respostas modelo. Senior: arquitetura, trade-offs, mentoria e tomada de decisão.

Experimente — sem necessidade de conta
Preparando sua pergunta…

Temas para se preparar

Goroutines e o scheduler
Channels e select
Interfaces e composição
Tratamento de erros
Slices e maps
Context e cancelamento

6 perguntas de nível Senior com respostas

1

Como você limitaria a concorrência ao processar uma fila grande?

Resposta

Um worker pool: um número fixo de goroutines lendo de um channel, então o paralelismo é um número que você escolheu em vez de um decidido pelo input. Um channel semáforo também funciona para um controle mais fino. A falha a evitar é gerar uma goroutine por item — parece elegante e derruba o que estiver depois na cadeia, que geralmente é um pool de conexões de banco de dados.

2

O que causa um vazamento de memória numa linguagem com garbage collection como o Go?

Resposta

Uma referência que continua alcançável: um map que cresce usado como cache sem eviction, uma goroutine estacionada para sempre segurando sua stack, um slice de um array enorme mantendo vivo todo o storage subjacente. O último surpreende as pessoas — fazer reslice de um buffer grande para três bytes retém tudo até você copiar.

3

Como você faz profile de um serviço Go que ficou mais lento?

Resposta

pprof sobre o processo em execução em vez de suposições: profile de CPU para onde o tempo vai, profile de heap para alocação, e o profile de goroutines se tiver cheiro de bloqueio. Alocação é o culpado frequente em Go — reduzir o lixo costuma superar otimizar o algoritmo, porque o trabalho do coletor é proporcional ao que você cria.

4

Como você desliga um serviço sem derrubar trabalho em andamento?

Resposta

Capture SIGTERM, pare de aceitar novas conexões, cancele o context raiz para que os workers se desenrolem, espere num WaitGroup com um timeout, e então saia. O timeout importa: um desligamento que espera para sempre por um request travado é uma queda por si só. O probe de readiness deve falhar antes de qualquer coisa disso começar, para que o load balancer pare de enviar tráfego primeiro.

5

Quando generics são a ferramenta certa, e quando não são?

Resposta

Eles se justificam quando a mesma lógica genuinamente se repete entre tipos — um container, um map ou filter sobre slices, uma constraint sobre tipos numéricos. São a ferramenta errada quando uma interface já expressa o requisito, porque uma interface é mais simples de ler e mudar. O Go passou uma década sem eles por um motivo, e a maior parte do código ainda não precisa deles.

6

Como você estrutura um projeto Go conforme ele cresce?

Resposta

Pelo que o código faz em vez do que ele é: um pacote por concern de domínio, não um pacote chamado models que tem tudo. Mantenha a direção de dependência voltada para dentro, coloque qualquer coisa que não seja para importar sob internal/, e resista a um pacote utils, que é onde a coesão vai morrer. A biblioteca padrão é o guia de estilo que vale a pena copiar.

🦎

Só ler as respostas não basta

Numa entrevista de verdade você fala sob pressão. O Cam faz essas mesmas perguntas, avalia cada resposta e mostra exatamente o que melhorar.

Praticar entrevista de Senior Go Backend →
Grátis · 3 entrevistas por mês

Outros níveis — Go Backend

Junior Go BackendMiddle Go BackendTodas as perguntas de Go Backend

Outras especializações

🔍Senior QA Manual🤖Senior QA AutomationSenior Java Backend🐍Senior Python Backend🐘Senior PHP Backend🟢Senior Node.js Backend💎Senior Ruby on Rails🔷Senior C++🟨Senior JavaScript⚛️Senior React Frontend