
동시성 패턴
Worker pool, pipeline, fan-out/fan-in, 취소, context, errgroup, 세마포어
24 면접 질문·
Mid-Level
1Go에서 worker pool이란 무엇인가요?
1
Go에서 worker pool이란 무엇인가요?
답변
worker pool은 고정된 수의 goroutine(worker)을 사용하여 공유 channel에서 오는 작업을 처리하는 동시성 패턴입니다. 이 패턴을 사용하면 활성 goroutine 수를 제한하고 시스템 리소스 소비를 제어할 수 있습니다. 작업마다 goroutine을 하나씩 생성하는 것과 달리, worker pool은 일련의 worker를 재사용하여 대량의 작업을 효율적으로 처리합니다.
2작업마다 goroutine을 생성하는 대신 worker pool을 사용하는 주된 이점은 무엇인가요?
2
작업마다 goroutine을 생성하는 대신 worker pool을 사용하는 주된 이점은 무엇인가요?
답변
활성 goroutine 수를 제한하면 시스템 리소스(메모리와 CPU) 소비를 제어하고 과부하를 방지할 수 있습니다. 작업마다 goroutine을 생성하면 수천 또는 수백만 개의 동시 goroutine이 발생하여 scheduler를 포화시키고 메모리를 고갈시킬 수 있습니다. worker pool은 최적의 worker 수를 유지하며 작업을 순차적으로 처리하여 높은 부하에서도 예측 가능한 성능을 보장합니다.
3Go의 동시성 맥락에서 pipeline이란 무엇인가요?
3
Go의 동시성 맥락에서 pipeline이란 무엇인가요?
답변
pipeline은 channel로 연결된 일련의 단계(stage)이며, 각 단계는 동일한 함수를 실행하는 goroutine 그룹입니다. 각 단계는 입력 channel을 통해 데이터를 받고, 처리를 수행한 후 출력 channel을 통해 결과를 보냅니다. 이 패턴을 사용하면 복잡한 처리를 단순하고 재사용 가능한 단계로 분해할 수 있어 각 구성 요소를 독립적으로 조합하고 테스트하기 쉬워집니다.
4
처리 종료를 알리기 위해 worker pool에서 channel을 올바르게 닫으려면 어떻게 해야 하나요?
5
fan-out과 fan-in의 차이는 무엇인가요?
+21 면접 질문
기타 Go 면접 주제
Go 기초
Junior
25개 질문Go 데이터 구조
Junior
20개 질문Go 인터페이스
Junior
18개 질문에러 처리
Junior
20개 질문Goroutine 기초
Junior
20개 질문Channels
Junior
22개 질문Go Modules
Mid-Level
18개 질문HTTP 서버
Mid-Level
24개 질문HTTP 클라이언트
Mid-Level
18개 질문JSON 인코딩
Mid-Level
20개 질문Database/SQL
Mid-Level
22개 질문context 패키지
Mid-Level
20개 질문Testing
Mid-Level
22개 질문동기화 프리미티브
Mid-Level
22개 질문Go 웹 프레임워크
Mid-Level
20개 질문REST API 설계
Mid-Level
20개 질문gRPC
Mid-Level
22개 질문Reflection
Senior
20개 질문메모리 관리
Senior
24개 질문성능 최적화
Senior
22개 질문Generics
Senior
20개 질문Go Design Patterns
Senior
24개 질문Microservices
Senior
24개 질문보안 및 인증
Senior
24개 질문Docker & Containerization
Senior
20개 질문Kubernetes Basics
Senior
22개 질문고급 Go
Senior
20개 질문CLI 개발
Senior
20개 질문