Go

Channels

Channels, buffered và unbuffered, close, select, range trên channels, nil channels

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

Channel trong Go là gì?

Câu trả lời

Channel là một kiểu dữ liệu cho phép giao tiếp và đồng bộ hóa giữa các goroutine. Nó hoạt động như một đường dẫn có kiểu, cho phép gửi và nhận giá trị theo cách thread-safe. Hãy dùng channel để chia sẻ dữ liệu giữa các goroutine thay vì chia sẻ bộ nhớ trực tiếp.

2

Làm thế nào để tạo một unbuffered channel kiểu integer trong Go?

Câu trả lời

Một unbuffered channel được tạo bằng make(chan T) mà không chỉ định dung lượng. Nó chặn bên gửi cho đến khi bên nhận sẵn sàng, đảm bảo sự đồng bộ hóa nghiêm ngặt. Hãy dùng unbuffered channel cho các giao tiếp one-to-one cần đồng bộ hóa rõ ràng.

3

Sự khác biệt chính giữa buffered và unbuffered channel là gì?

Câu trả lời

Một unbuffered channel chặn bên gửi cho đến khi bên nhận sẵn sàng (đồng bộ hóa nghiêm ngặt), trong khi một buffered channel có thể lưu trữ giá trị tới dung lượng của nó trước khi chặn. Buffered channel tách rời các goroutine và cải thiện hiệu năng trong một số trường hợp, nhưng có thể che giấu các vấn đề về tương tranh. Dùng unbuffered để đồng bộ hóa, buffered để tăng thông lượng.

4

Làm thế nào để tạo một buffered channel với dung lượng 10 phần tử?

5

Làm thế nào để gửi một giá trị vào channel?

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