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

Junior Go BackendPerguntas de entrevista Golang

Junior · sem experiência / menos de 1 ano

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. Junior: teoria básica, definições e casos práticos simples.

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

7 perguntas de nível Junior com respostas

1

Qual é a diferença entre um array e um slice?

Resposta

Um array tem um comprimento fixo que faz parte do seu tipo — [3]int e [4]int são tipos diferentes. Um slice é uma visão sobre um array: um ponteiro, um comprimento e uma capacidade. Você vai usar slices para quase tudo; arrays aparecem principalmente como o storage subjacente que você nunca nomeia.

2

O que acontece quando você dá append num slice passando da sua capacidade?

Resposta

O Go aloca um novo array subjacente maior, copia os elementos e retorna um slice apontando para o novo. O slice antigo continua apontando para o array antigo — por isso o append retorna um valor que você precisa atribuir. Ignorar o retorno é o bug clássico de iniciante, e funciona até a capacidade estourar.

3

O que é o zero value, e por que o Go tem um?

Resposta

Todo tipo tem um valor zero utilizável: 0 para números, "" para strings, nil para ponteiros, maps e slices. Isso significa que uma variável declarada sempre está inicializada, então não há estado indefinido para ler por acidente. A consequência prática é que um struct com zero values sensatos muitas vezes não precisa de construtor.

4

Qual é a diferença entre um value receiver e um pointer receiver?

Resposta

Um value receiver recebe uma cópia, então mutações não sobrevivem à chamada; um pointer receiver opera sobre o original. Use um ponteiro quando o método muta, ou quando o struct é grande o bastante para que copiá-lo custe caro. Misturar os dois num tipo é onde as pessoas se confundem, porque o method set de T e *T então divergem.

5

Como funciona o tratamento de erros, e por que não existem exceções?

Resposta

Erros são valores comuns retornados junto ao resultado e checados no call site. É verboso de propósito: o caminho onde algo falha fica visível no código em vez de escondido num stack unwind. panic existe para situações genuinamente irrecuperáveis, e usá-lo para controle de fluxo é um code smell que qualquer revisor vai apontar.

6

O que é uma goroutine, e como ela se diferencia de uma thread?

Resposta

Uma goroutine é uma função escalonada pelo runtime do Go em vez do sistema operacional. Ela começa em poucos kilobytes e cresce, então centenas de milhares delas são algo comum, quando a mesma quantidade de threads do SO não seria. O runtime as multiplexa sobre um pool pequeno de threads reais.

7

O que o `defer` faz, e quando roda?

Resposta

Agenda uma chamada para quando a função ao redor retorna, de qualquer forma que ela retorne. Isso o torna o lugar certo para fechar um arquivo ou liberar um mutex, logo ao lado da linha que o abriu ou travou. Os argumentos são avaliados no statement defer, não na execução — o que surpreende quem adia algo usando uma variável de loop.

🦎

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 Junior Go Backend →
Grátis · 3 entrevistas por mês

Outros níveis — Go Backend

Middle Go BackendSenior Go BackendTodas as perguntas de Go Backend

Outras especializações

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