Go

Cơ bản về Goroutine

Goroutine, từ khóa go, sync.WaitGroup, runtime.GOMAXPROCS, goroutine leak

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

Goroutine trong Go là gì?

Câu trả lời

Goroutine là một hàm chạy đồng thời với các hàm khác, được quản lý bởi Go runtime thay vì OS. Nó cực kỳ nhẹ (vài KB stack ban đầu) so với một thread OS (vài MB). Go scheduler có thể ghép kênh hàng nghìn thậm chí hàng triệu goroutine trên một số lượng thread OS hạn chế, khiến tính đồng thời trở nên rất dễ tiếp cận trong Go.

2

Làm thế nào để khởi động một goroutine mới trong Go?

Câu trả lời

Từ khóa go theo sau bởi một lời gọi hàm sẽ khởi động một goroutine mới. Ví dụ, 'go myFunction()' hoặc 'go func() { ... }()' cho một hàm ẩn danh. Goroutine thực thi ngay lập tức song song với mã gọi. Cảnh báo: hàm main không tự động chờ các goroutine đã khởi chạy hoàn thành.

3

Sự khác biệt chính giữa một goroutine và một thread OS là gì?

Câu trả lời

Một goroutine tiêu thụ khoảng 2 KB stack ban đầu, trong khi một thread OS thường cần 1-2 MB. Go runtime quản lý việc scheduling các goroutine trong không gian người dùng (M:N scheduling), ghép kênh hàng nghìn goroutine trên một vài thread OS. Điều này cho phép tạo hàng triệu goroutine mà không làm quá tải hệ thống, không giống như các thread OS vốn bị giới hạn bởi tài nguyên.

4

Điều gì xảy ra nếu chương trình chính kết thúc trước khi một goroutine hoàn thành?

5

Go runtime quản lý việc thực thi goroutine như thế nào?

+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í