# Các mẫu Concurrency (Go) > Worker pool, pipeline, fan-out/fan-in, hủy, context, errgroup, semaphore - 24 câu hỏi phỏng vấn - Mid-Level - [Câu hỏi phỏng vấn: Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van.md) ## 1. Worker pool trong Go là gì? **Câu trả lời** Worker pool là một mẫu concurrency sử dụng một số lượng goroutine (worker) cố định để xử lý các task từ một channel dùng chung. Mẫu này cho phép giới hạn số lượng goroutine đang hoạt động và kiểm soát mức tiêu thụ tài nguyên hệ thống. Khác với việc tạo một goroutine cho mỗi task, worker pool tái sử dụng một tập hợp worker để xử lý hiệu quả khối lượng task lớn. ## 2. Lợi ích chính của việc dùng worker pool thay vì tạo một goroutine cho mỗi task là gì? **Câu trả lời** Giới hạn số lượng goroutine đang hoạt động cho phép kiểm soát mức tiêu thụ tài nguyên hệ thống (bộ nhớ và CPU) và tránh quá tải. Tạo một goroutine cho mỗi task có thể dẫn đến hàng nghìn hoặc hàng triệu goroutine đồng thời, làm bão hòa scheduler và cạn kiệt bộ nhớ. Worker pool duy trì số lượng worker tối ưu xử lý task tuần tự, đảm bảo hiệu năng có thể dự đoán được ngay cả khi tải cao. ## 3. Pipeline trong bối cảnh concurrency của Go là gì? **Câu trả lời** Pipeline là một chuỗi các giai đoạn (stage) được kết nối bằng channel, trong đó mỗi giai đoạn là một nhóm goroutine thực thi cùng một hàm. Mỗi giai đoạn nhận dữ liệu qua channel đầu vào, thực hiện xử lý, rồi gửi kết quả qua channel đầu ra. Mẫu này cho phép phân rã quá trình xử lý phức tạp thành các giai đoạn đơn giản và có thể tái sử dụng, giúp dễ dàng kết hợp và kiểm thử từng thành phần một cách độc lập. ## Còn 21 câu hỏi nữa - Làm thế nào để đóng channel đúng cách trong worker pool nhằm báo hiệu kết thúc xử lý? - Sự khác biệt giữa fan-out và fan-in là gì? Đăng ký miễn phí: https://sharpskill.dev/vi/login ## Các chủ đề phỏng vấn Go khác - [Kiến thức cơ bản về Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-basics.md): 25 câu hỏi, Junior - [Cấu trúc dữ liệu Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-data-structures.md): 20 câu hỏi, Junior - [Interface trong Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-interfaces.md): 18 câu hỏi, Junior - [Xử lý lỗi](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/error-handling.md): 20 câu hỏi, Junior - [Cơ bản về Goroutine](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/goroutines-basics.md): 20 câu hỏi, Junior - [Channels](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/channels.md): 22 câu hỏi, Junior - [Go Modules](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-modules.md): 18 câu hỏi, Mid-Level - [Máy chủ HTTP](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/http-server.md): 24 câu hỏi, Mid-Level - [HTTP Client](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/http-client.md): 18 câu hỏi, Mid-Level - [Mã hóa JSON](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/json-encoding.md): 20 câu hỏi, Mid-Level - [Database/SQL](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/database-sql.md): 22 câu hỏi, Mid-Level - [Gói context](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/context-package.md): 20 câu hỏi, Mid-Level - [Testing](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/testing.md): 22 câu hỏi, Mid-Level - [Primitive đồng bộ hóa](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/sync-primitives.md): 22 câu hỏi, Mid-Level - [Framework web Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-web-frameworks.md): 20 câu hỏi, Mid-Level - [Thiết kế API REST](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/rest-api-design.md): 20 câu hỏi, Mid-Level - [gRPC](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/grpc.md): 22 câu hỏi, Mid-Level - [Reflection](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/reflection.md): 20 câu hỏi, Senior - [Quản lý bộ nhớ](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/memory-management.md): 24 câu hỏi, Senior - [Tối ưu hóa hiệu năng](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/performance-optimization.md): 22 câu hỏi, Senior - [Generics](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/generics.md): 20 câu hỏi, Senior - [Go Design Patterns](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/design-patterns.md): 24 câu hỏi, Senior - [Microservices](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/microservices.md): 24 câu hỏi, Senior - [Bảo mật và Xác thực](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/security-authentication.md): 24 câu hỏi, Senior - [Docker & Containerization](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/docker-containerization.md): 20 câu hỏi, Senior - [Kubernetes Basics](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/kubernetes-basics.md): 22 câu hỏi, Senior - [Go Nâng cao](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/advanced-go.md): 20 câu hỏi, Senior - [Phát triển CLI](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/cli-development.md): 20 câu hỏi, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/concurrency-patterns