
Go ขั้นสูง
ภายในของ compiler, runtime, scheduler, cgo, แพ็กเกจ unsafe, assembly, build tags
1เครื่องมือใดใน toolchain ของ Go ที่ใช้ตรวจสอบโค้ด assembly ที่ compiler สร้างขึ้น?
เครื่องมือใดใน toolchain ของ Go ที่ใช้ตรวจสอบโค้ด assembly ที่ compiler สร้างขึ้น?
คำตอบ
คำสั่ง go tool compile -S แสดงโค้ด assembly ที่ compiler ของ Go สร้างขึ้น เครื่องมือนี้จำเป็นต่อการทำความเข้าใจการ optimize ของ compiler และการวิเคราะห์โค้ดที่สำคัญต่อประสิทธิภาพ นอกจากนี้ยังสามารถใช้ go build -gcflags=-S เพื่อให้ได้ผลลัพธ์เดียวกันระหว่างการ build แบบมาตรฐาน
2วัตถุประสงค์หลักของแพ็กเกจ unsafe ใน Go คืออะไร?
วัตถุประสงค์หลักของแพ็กเกจ unsafe ใน Go คืออะไร?
คำตอบ
แพ็กเกจ unsafe ช่วยให้สามารถข้ามระบบ type ของ Go เพื่อทำการดำเนินการกับหน่วยความจำในระดับต่ำ โดยเปิดเผยฟังก์ชันเช่น Pointer, Sizeof, Alignof และ Offsetof ที่ช่วยให้จัดการ address ของหน่วยความจำได้โดยตรง ไม่แนะนำให้ใช้ ยกเว้นในกรณีเฉพาะเช่นการทำงานร่วมกับโค้ด C หรือการ optimize ที่สำคัญ
3scheduler ของ Go (GPM) จัดระเบียบการทำงานของ goroutine อย่างไร?
scheduler ของ Go (GPM) จัดระเบียบการทำงานของ goroutine อย่างไร?
คำตอบ
scheduler ของ Go ใช้โมเดล GPM: G แทน goroutine, P แทนโปรเซสเซอร์เชิงตรรกะ (GOMAXPROCS) และ M แทน thread ของระบบ แต่ละ P มี run queue ในเครื่องของ goroutine เมื่อ M ถูกบล็อกที่ syscall ตัว P สามารถถูกแยกออกและเชื่อมโยงกับ M อื่นเพื่อดำเนินการ goroutine ต่อไปได้ การออกแบบนี้ช่วยให้การจัดตารางงานมีประสิทธิภาพโดยมี context switch น้อยที่สุด
cgo คืออะไรและควรใช้ในบริบทใด?
directive ใดที่ช่วยให้คอมไพล์โค้ดแบบมีเงื่อนไขตาม OS หรือสถาปัตยกรรมเป้าหมาย?
+17 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Go อื่นๆ
พื้นฐาน Go
โครงสร้างข้อมูล Go
อินเทอร์เฟซใน Go
การจัดการข้อผิดพลาด
พื้นฐาน Goroutine
Channels
Go Modules
เซิร์ฟเวอร์ HTTP
ไคลเอนต์ HTTP
การเข้ารหัส JSON
Database/SQL
แพ็กเกจ context
Testing
รูปแบบ Concurrency
ไพรมิทีฟการซิงโครไนซ์
เฟรมเวิร์กเว็บ Go
การออกแบบ REST API
gRPC
Reflection
การจัดการหน่วยความจำ
การเพิ่มประสิทธิภาพการทำงาน
Generics
Go Design Patterns
Microservices
ความปลอดภัยและการยืนยันตัวตน
Docker & Containerization
Kubernetes Basics
การพัฒนา CLI
เชี่ยวชาญ Go สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี