Go

Go Nâng cao

Cấu trúc bên trong của compiler, runtime, scheduler, cgo, package unsafe, assembly, build tags

20 câu hỏi phỏng vấn·
Senior
1

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.

2

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.

3

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.

4

cgo là gì và nên được sử dụng trong ngữ cảnh nào?

5

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

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í