Go

Padrões de concorrência

Worker pools, pipelines, fan-out/fan-in, cancelamento, context, errgroup, semáforos

24 perguntas de entrevista·
Mid-Level
1

O que é um worker pool em Go?

Resposta

Um worker pool é um padrão de concorrência que usa um número fixo de goroutines (workers) para processar tarefas vindas de um canal compartilhado. Esse padrão permite limitar o número de goroutines ativas e controlar o consumo de recursos do sistema. Diferentemente de criar uma goroutine por tarefa, o worker pool reutiliza um conjunto de workers para processar um grande volume de tarefas de forma eficiente.

2

Qual é a principal vantagem de usar um worker pool em vez de criar uma goroutine por tarefa?

Resposta

Limitar o número de goroutines ativas permite controlar o consumo de recursos do sistema (memória e CPU) e evitar a sobrecarga. Criar uma goroutine por tarefa pode resultar em milhares ou milhões de goroutines simultâneas, saturando o scheduler e esgotando a memória. O worker pool mantém um número ótimo de workers que processam as tarefas sequencialmente, garantindo desempenho previsível mesmo sob carga alta.

3

O que é um pipeline no contexto da concorrência em Go?

Resposta

Um pipeline é uma série de estágios conectados por canais, onde cada estágio é um grupo de goroutines que executam a mesma função. Cada estágio recebe dados por canais de entrada, realiza um processamento e depois envia os resultados por canais de saída. Esse padrão permite decompor processamentos complexos em estágios simples e reutilizáveis, facilitando a composição e o teste de cada componente de forma independente.

4

Como fechar corretamente um canal em um worker pool para sinalizar o fim do processamento?

5

Qual é a diferença entre fan-out e fan-in?

+21 perguntas de entrevista

Domine Go para sua proxima entrevista

Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.

Comece gratis