Go

gRPC

Protocol Buffers, บริการ gRPC, streaming, interceptor, การจัดการข้อผิดพลาด, metadata

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

gRPC คืออะไร?

คำตอบ

gRPC เป็น framework RPC (Remote Procedure Call) แบบโอเพนซอร์สที่พัฒนาโดย Google ซึ่งใช้ HTTP/2 เป็นโปรโตคอลการรับส่งข้อมูลและ Protocol Buffers เป็นรูปแบบ serialization เริ่มต้น ต่างจาก REST ที่ใช้ JSON และ HTTP/1.1 gRPC ให้ประสิทธิภาพที่ดีกว่าด้วยรูปแบบไบนารีของ Protocol Buffers และฟีเจอร์ขั้นสูงของ HTTP/2 (multiplexing, การบีบอัด header, server push) gRPC ถูกใช้อย่างแพร่หลายในการสื่อสารระหว่าง microservice เพราะรองรับ streaming แบบสองทิศทาง การสร้างโค้ด client/server และการใช้ type ที่เข้มงวดได้แบบเนทีฟ

2

บทบาทหลักของ Protocol Buffers ใน gRPC คืออะไร?

คำตอบ

Protocol Buffers (protobuf) คือภาษาสำหรับนิยามอินเทอร์เฟซ (IDL) และรูปแบบ serialization แบบไบนารีที่ใช้เป็นค่าเริ่มต้นใน gRPC โดยช่วยให้กำหนดโครงสร้างของ message และบริการในไฟล์ .proto ซึ่งจะถูกคอมไพล์เพื่อสร้างโค้ด client และ server โดยอัตโนมัติในหลายภาษา รูปแบบไบนารีของ protobuf กระชับกว่า JSON ถึง 3 ถึง 10 เท่า และให้ประสิทธิภาพการ serialization/deserialization ที่เหนือกว่าอย่างเห็นได้ชัด (เร็วกว่าถึง 20 เท่า) สิ่งนี้ทำให้ gRPC เหมาะอย่างยิ่งสำหรับการสื่อสารความถี่สูงระหว่าง microservice

3

ความแตกต่างระหว่างการเรียก gRPC แบบ Unary กับการเรียกแบบ Server Streaming คืออะไร?

คำตอบ

การเรียกแบบ Unary เป็นการเรียก gRPC ที่ง่ายที่สุด: ไคลเอนต์ส่งคำขอเดียวและได้รับการตอบกลับเดียว คล้ายกับคำขอ HTTP REST แบบดั้งเดิม การเรียกแบบ Server Streaming ช่วยให้ไคลเอนต์ส่งคำขอเดียวแต่ได้รับสตรีม (stream) ของการตอบกลับหลายรายการจากเซิร์ฟเวอร์ ตัวอย่างเช่น API การแจ้งเตือนสามารถใช้ Server Streaming เพื่อส่งการอัปเดตหลายรายการไปยังไคลเอนต์โดยไคลเอนต์ไม่ต้อง polling สิ่งนี้ลด latency และภาระเครือข่ายเมื่อเทียบกับการเรียก Unary ซ้ำ ๆ

4

package Go ใดที่ใช้ในการสร้างเซิร์ฟเวอร์ gRPC?

5

จะนิยามบริการ gRPC ในไฟล์ .proto ได้อย่างไร?

+19 คำถามสัมภาษณ์

หัวข้อสัมภาษณ์ 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 คำถาม

รูปแบบ Concurrency

Mid-Level
24 คำถาม

ไพรมิทีฟการซิงโครไนซ์

Mid-Level
22 คำถาม

เฟรมเวิร์กเว็บ Go

Mid-Level
20 คำถาม

การออกแบบ REST API

Mid-Level
20 คำถาม

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 และตัวจำลองสัมภาษณ์

เริ่มใช้ฟรี