# Concurrency Patterns (Go) > Worker pools, pipelines, fan-out/fan-in, cancellation, context, errgroup, semaphores - 24 interview questions - Mid-Level - [Interview Questions: Go](https://sharpskill.dev/en/technologies/go/interview-questions.md) ## 1. What is a worker pool in Go? **Answer** A worker pool is a concurrency pattern that uses a fixed number of goroutines (workers) to process tasks from a shared channel. This pattern allows limiting the number of active goroutines and controlling system resource consumption. Unlike creating one goroutine per task, the worker pool reuses a set of workers to process a large volume of tasks efficiently. ## 2. What is the main advantage of using a worker pool instead of creating one goroutine per task? **Answer** Limiting the number of active goroutines allows controlling system resource consumption (memory and CPU) and avoiding overload. Creating one goroutine per task can result in thousands or millions of concurrent goroutines, saturating the scheduler and exhausting memory. The worker pool maintains an optimal number of workers that process tasks sequentially, ensuring predictable performance even under high load. ## 3. What is a pipeline in the context of concurrency in Go? **Answer** A pipeline is a series of stages connected by channels, where each stage is a group of goroutines executing the same function. Each stage receives data via input channels, performs processing, then sends results via output channels. This pattern allows decomposing complex processing into simple and reusable stages, facilitating composition and testing of each component independently. ## 21 more questions available - How to properly close a channel in a worker pool to signal the end of processing? - What is the difference between fan-out and fan-in? Sign up for free: https://sharpskill.dev/en/login ## Other Go interview topics - [Go Basics](https://sharpskill.dev/en/technologies/go/interview-questions/go-basics.md): 25 questions, Junior - [Go Data Structures](https://sharpskill.dev/en/technologies/go/interview-questions/go-data-structures.md): 20 questions, Junior - [Go Interfaces](https://sharpskill.dev/en/technologies/go/interview-questions/go-interfaces.md): 18 questions, Junior - [Error Handling](https://sharpskill.dev/en/technologies/go/interview-questions/error-handling.md): 20 questions, Junior - [Goroutines Basics](https://sharpskill.dev/en/technologies/go/interview-questions/goroutines-basics.md): 20 questions, Junior - [Channels](https://sharpskill.dev/en/technologies/go/interview-questions/channels.md): 22 questions, Junior - [Go Modules](https://sharpskill.dev/en/technologies/go/interview-questions/go-modules.md): 18 questions, Mid-Level - [HTTP Server](https://sharpskill.dev/en/technologies/go/interview-questions/http-server.md): 24 questions, Mid-Level - [HTTP Client](https://sharpskill.dev/en/technologies/go/interview-questions/http-client.md): 18 questions, Mid-Level - [JSON Encoding](https://sharpskill.dev/en/technologies/go/interview-questions/json-encoding.md): 20 questions, Mid-Level - [Database/SQL](https://sharpskill.dev/en/technologies/go/interview-questions/database-sql.md): 22 questions, Mid-Level - [Context Package](https://sharpskill.dev/en/technologies/go/interview-questions/context-package.md): 20 questions, Mid-Level - [Testing](https://sharpskill.dev/en/technologies/go/interview-questions/testing.md): 22 questions, Mid-Level - [Sync Primitives](https://sharpskill.dev/en/technologies/go/interview-questions/sync-primitives.md): 22 questions, Mid-Level - [Go Web Frameworks](https://sharpskill.dev/en/technologies/go/interview-questions/go-web-frameworks.md): 20 questions, Mid-Level - [REST API Design](https://sharpskill.dev/en/technologies/go/interview-questions/rest-api-design.md): 20 questions, Mid-Level - [gRPC](https://sharpskill.dev/en/technologies/go/interview-questions/grpc.md): 22 questions, Mid-Level - [Reflection](https://sharpskill.dev/en/technologies/go/interview-questions/reflection.md): 20 questions, Senior - [Memory Management](https://sharpskill.dev/en/technologies/go/interview-questions/memory-management.md): 24 questions, Senior - [Performance Optimization](https://sharpskill.dev/en/technologies/go/interview-questions/performance-optimization.md): 22 questions, Senior - [Generics](https://sharpskill.dev/en/technologies/go/interview-questions/generics.md): 20 questions, Senior - [Go Design Patterns](https://sharpskill.dev/en/technologies/go/interview-questions/design-patterns.md): 24 questions, Senior - [Microservices](https://sharpskill.dev/en/technologies/go/interview-questions/microservices.md): 24 questions, Senior - [Security & Authentication](https://sharpskill.dev/en/technologies/go/interview-questions/security-authentication.md): 24 questions, Senior - [Docker & Containerization](https://sharpskill.dev/en/technologies/go/interview-questions/docker-containerization.md): 20 questions, Senior - [Kubernetes Basics](https://sharpskill.dev/en/technologies/go/interview-questions/kubernetes-basics.md): 22 questions, Senior - [Advanced Go](https://sharpskill.dev/en/technologies/go/interview-questions/advanced-go.md): 20 questions, Senior - [CLI Development](https://sharpskill.dev/en/technologies/go/interview-questions/cli-development.md): 20 questions, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/en/technologies/go/interview-questions/concurrency-patterns