Go

รูปแบบ Concurrency

Worker pool, pipeline, fan-out/fan-in, การยกเลิก, context, errgroup, semaphore

24 คำถามสัมภาษณ์·
Mid-Level
1

Worker pool ใน Go คืออะไร?

คำตอบ

Worker pool คือรูปแบบ concurrency ที่ใช้ goroutine (worker) จำนวนคงที่เพื่อประมวลผล task จาก channel ที่ใช้ร่วมกัน รูปแบบนี้ช่วยจำกัดจำนวน goroutine ที่ทำงานอยู่และควบคุมการใช้ทรัพยากรของระบบ ต่างจากการสร้าง goroutine หนึ่งตัวต่อหนึ่ง task ตรงที่ worker pool จะนำชุด worker กลับมาใช้ซ้ำเพื่อประมวลผล task จำนวนมากอย่างมีประสิทธิภาพ

2

ข้อได้เปรียบหลักของการใช้ worker pool แทนการสร้าง goroutine หนึ่งตัวต่อหนึ่ง task คืออะไร?

คำตอบ

การจำกัดจำนวน goroutine ที่ทำงานอยู่ช่วยควบคุมการใช้ทรัพยากรของระบบ (หน่วยความจำและ CPU) และหลีกเลี่ยงภาระเกิน การสร้าง goroutine หนึ่งตัวต่อหนึ่ง task อาจทำให้เกิด goroutine พร้อมกันหลายพันหรือหลายล้านตัว ทำให้ scheduler อิ่มตัวและหน่วยความจำหมด Worker pool รักษาจำนวน worker ที่เหมาะสมที่สุดซึ่งประมวลผล task ตามลำดับ จึงรับประกันประสิทธิภาพที่คาดการณ์ได้แม้ภายใต้ภาระสูง

3

Pipeline ในบริบทของ concurrency ใน Go คืออะไร?

คำตอบ

Pipeline คือชุดของขั้นตอน (stage) ที่เชื่อมต่อกันด้วย channel โดยแต่ละขั้นตอนเป็นกลุ่มของ goroutine ที่รันฟังก์ชันเดียวกัน แต่ละขั้นตอนรับข้อมูลผ่าน channel ขาเข้า ทำการประมวลผล แล้วส่งผลลัพธ์ผ่าน channel ขาออก รูปแบบนี้ช่วยแบ่งการประมวลผลที่ซับซ้อนออกเป็นขั้นตอนที่เรียบง่ายและนำกลับมาใช้ใหม่ได้ ทำให้ประกอบและทดสอบแต่ละองค์ประกอบได้อย่างอิสระ

4

จะปิด channel ใน worker pool อย่างถูกต้องเพื่อส่งสัญญาณสิ้นสุดการประมวลผลได้อย่างไร?

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 คำถาม

เชี่ยวชาญ Go สำหรับการสัมภาษณ์ครั้งถัดไป

เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์

เริ่มใช้ฟรี