Pular para o conteúdo

Desafios de entrevista em Go · parte 1 de 11

Desafios de entrevista em Go: índice e como se preparar

intermediárioPublicada em · 7 min de leitura

Tamanho da fonte:
Largura da coluna:

Este diretório reúne os desafios práticos de código (take-home tests, testes ao vivo e exercícios de pair-programming) mais cobrados por grandes empresas de tecnologia e fintechs de classe mundial para vagas internacionais de Go Developer / Backend Systems Engineer.

Cada desafio foi documentado em sua própria subpasta com a descrição completa da empresa, detalhes e faixas salariais da vaga, regras de negócio formais, exemplos de entrada e saída em JSON, arquitetura recomendada em Go e os critérios de avaliação utilizados pelos avaliadores técnicos.


Tabela comparativa dos desafios

EmpresaDesafio técnicoTipo de sistemaConceitos centrais avaliadosNota detalhada
NubankCapital Gains (Ganho de Capital)CLI / Stream stdin/stdoutPreço Médio Ponderado, regras fiscais, compensação de prejuízo, arquitetura limpaNubank - Capital Gains
NubankAuthorizer (Autorizador de Cartão)Streaming / Validação em Tempo RealRegras de negócio desacopladas, janela móvel de tempo, detecção de fraudeNubank - Authorizer
Mercado LibreMutantes DNAAPI REST / Microserviço com DBAlgoritmo $O(N^2)$ com early return, endpoints HTTP, persistência SQL, testes > 80%Mercado Libre - Mutantes DNA
StoneFinancial Transfer & Anti-DeadlockAPI Transacional / Core BankingPrevenção de deadlock em transferências cruzadas, ordenação determinística de travas, idempotênciaStone - Financial Transfer & Deadlock Prevention
PicPayDigital Wallet & Payment GatewayAPI REST / MicrosserviçosPapéis de carteira (PF vs PJ), autorizador externo mock, resiliência e notificação assíncronaPicPay - Digital Wallet & Payment Gateway
UberHigh-Throughput Rate LimiterConcorrência / Middleware de PlataformaLeaky/Token Bucket, multi-tenant por IP, eliminação de vazamento de memória (Janitor)Uber - High-Throughput Rate Limiter
CloudflareIn-Memory KV Store com TTLSistemas / Edge StorageParticionamento de travas (Lock Sharding), expiração passiva e ativa, pprofCloudflare - In-Memory KV Store com TTL
CoinbaseOrder Book & Matching EngineCore Trading / Baixa LatênciaPrioridade Preço-Tempo (FIFO), listas ligadas duplas, determinação Maker/TakerCoinbase - Order Book & Matching Engine
GitLabConcurrent Job Queue & Runner PoolOrquestrador de CI/CD / PlataformaLimites de concorrência global e por projeto, Fair Scheduling, cancelamento de contexto, Graceful DrainGitLab - Concurrent Job Queue & Runner Pool
DatadogHigh-Throughput Metric AggregatorDaemon de Telemetria / Alta VazãoIngestão com 0 allocs/op, rotação atômica de baldes (atomic.Pointer), reciclagem com sync.PoolDatadog - High-Throughput Metric Aggregator Daemon

Como se preparar para resolver esses desafios

  1. Priorize clareza idiomática sobre frameworks pesados: As empresas que contratam para Go valorizam a biblioteca padrão (net/http, sync, bufio, time, encoding/json). Evite adicionar dezenas de dependências externas para tarefas que Go resolve nativamente.
  2. Execute sempre o detector de condições de corrida:
    go test -race -v ./...
    Qualquer submissão técnica com falhas reportadas pelo -race é desqualificada sumariamente em empresas como Uber, Cloudflare e Coinbase.
  3. Escreva testes orientados por tabelas (Table-Driven Tests): Teste não apenas os casos felizes, mas especialmente os limites: valores nulos, strings vazias, matrizes mínimas, concorrência extrema e divisões por zero.
  4. Evite vazamento de recursos e goroutines: Sempre que inicializar um ticker ou goroutine de segundo plano, garanta que ela escute o cancelamento de um canal ou de context.Context e chame defer ticker.Stop().

  • Currículo e Requisitos do Mercado: Curriculo de um Desenvolvedor Go
  • Tópicos Técnicos Conectados:
    • Concorrência e canais: Goroutine, Channels, sync, waitGroup
    • Ciclo de vida e prazos: Context, deadlock, Race Condition
    • Performance e memória: Ponteiros, Structs, Profiling
    • Comunicação de rede: WebSocket, SQLX, Idempotência

Desafios de algoritmos e estruturas de dados

As tarefas da tabela acima misturam arquitetura, APIs e regras de negócio. Esta seção é outra coisa: problemas curtos de algoritmos e estruturas de dados, do tipo que aparece em entrevistas de código ao vivo e que se resolve em Go com a biblioteca padrão. Eles treinam o raciocínio sobre complexidade de tempo e espaço, que as tarefas grandes exigem mas exercitam pouco.

onde praticar

  • LeetCode (https://leetcode.com): o maior banco de problemas de entrevista. Aceita Go em todos os problemas e tem casos de teste públicos e ocultos. Use o filtro por tag (array, hash table, graph, heap) para estudar um assunto de cada vez.
  • Exercism, trilha de Go (https://exercism.org/tracks/go): exercícios pequenos com feedback de mentores. Não são problemas de entrevista, mas ensinam o idioma passo a passo e servem de preparação antes do LeetCode.
  • Codewars (https://www.codewars.com): desafios de poucas linhas, ordenados por dificuldade (kyu). Bom para treinar sintaxe e manipulação de strings em Go.
  • Advent of Code (https://adventofcode.com): um desafio por dia, em dezembro, com entrada diferente para cada pessoa. Como a resposta é um número, dá para comparar a sua solução com a de outras pessoas.

repositórios com soluções em Go

Comparar a sua solução com outra é uma das formas mais rápidas de aprender. Estes repositórios têm código em Go:

problemas sugeridos

Cada problema treina uma estrutura de dados específica. Dentro de cada grupo, a ordem vai do mais fácil para o mais difícil.

roteiro de estudo

  1. Tente resolver sem olhar a solução por pelo menos 30 minutos. Quem pula essa etapa aprende menos, porque não percebe onde travou.
  2. Antes de codar, escreva a complexidade esperada em tempo e espaço. Assim você sabe se a solução que escreveu é boa o suficiente.
  3. Teste os casos de borda: slice vazio, valor zero, números negativos e entradas repetidas.
  4. Rode go test -race em qualquer solução que use goroutines. Em problemas de algoritmos é raro, mas o hábito vale para o trabalho real.
  5. Depois de resolver, leia outra solução em Go e compare. A diferença entre as duas costuma ensinar mais do que a solução em si.

↑ Voltar ao topo

Atalhos de teclado

Abrir busca
/
Alternar tema claro/escuro
t
Aula anterior na série
←
Próxima aula na série
→
Lista de atalhos
?