
Go Nâng cao
Cấu trúc bên trong của compiler, runtime, scheduler, cgo, package unsafe, assembly, build tags
1Công cụ nào trong toolchain Go cho phép kiểm tra mã assembly do compiler tạo ra?
Công cụ nào trong toolchain Go cho phép kiểm tra mã assembly do compiler tạo ra?
Câu trả lời
Lệnh go tool compile -S hiển thị mã assembly do compiler Go tạo ra. Công cụ này rất cần thiết để hiểu các tối ưu hóa của compiler và phân tích mã quan trọng về hiệu năng. Cũng có thể sử dụng go build -gcflags=-S để đạt được kết quả tương tự trong quá trình build tiêu chuẩn.
2Mục đích chính của package unsafe trong Go là gì?
Mục đích chính của package unsafe trong Go là gì?
Câu trả lời
Package unsafe cho phép bỏ qua hệ thống kiểu của Go để thực hiện các thao tác bộ nhớ ở mức thấp. Nó cung cấp các hàm như Pointer, Sizeof, Alignof và Offsetof cho phép thao tác trực tiếp với địa chỉ bộ nhớ. Việc sử dụng nó không được khuyến khích trừ các trường hợp cụ thể như khả năng tương tác với mã C hoặc các tối ưu hóa quan trọng.
3Scheduler của Go (GPM) tổ chức việc thực thi goroutine như thế nào?
Scheduler của Go (GPM) tổ chức việc thực thi goroutine như thế nào?
Câu trả lời
Scheduler của Go sử dụng mô hình GPM: G đại diện cho goroutine, P đại diện cho bộ xử lý logic (GOMAXPROCS), và M đại diện cho thread hệ thống. Mỗi P có một run queue cục bộ chứa các goroutine. Khi một M bị chặn trên một syscall, P có thể được tách ra và liên kết với một M khác để tiếp tục thực thi goroutine. Thiết kế này cho phép lập lịch hiệu quả với số lần context switch tối thiểu.
cgo là gì và nên được sử dụng trong ngữ cảnh nào?
Chỉ thị nào cho phép biên dịch mã có điều kiện dựa trên OS hoặc kiến trúc đích?
+17 câu hỏi phỏng vấn
Các chủ đề phỏng vấn Go khác
Kiến thức cơ bản về Go
Cấu trúc dữ liệu Go
Interface trong Go
Xử lý lỗi
Cơ bản về Goroutine
Channels
Go Modules
Máy chủ HTTP
HTTP Client
Mã hóa JSON
Database/SQL
Gói context
Testing
Các mẫu Concurrency
Primitive đồng bộ hóa
Framework web Go
Thiết kế API REST
gRPC
Reflection
Quản lý bộ nhớ
Tối ưu hóa hiệu năng
Generics
Go Design Patterns
Microservices
Bảo mật và Xác thực
Docker & Containerization
Kubernetes Basics
Phát triển CLI
Nắm vững Go cho lần phỏng vấn tiếp theo
Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.
Bắt đầu miễn phí