Rust

async/await

hàm async, trait Future, runtime tokio, khối async, cú pháp .await, Streams, Pin<T>, hủy bỏ, mẫu executor

22 câu hỏi phỏng vấn·
Mid-Level
1

Một hàm được khai báo với từ khóa async trong Rust trả về gì?

Câu trả lời

Một hàm async tự động trả về một kiểu implement trait Future. Trình biên dịch chuyển đổi thân hàm thành một máy trạng thái (state machine) implement Future. Giá trị trả về không được tính toán ngay lập tức: nó chỉ được tính khi Future được chờ bằng .await hoặc được thực thi bởi một runtime.

2

Vai trò chính của trait Future trong Rust là gì?

Câu trả lời

Trait Future đại diện cho một phép tính bất đồng bộ có thể chưa hoàn thành. Phương thức poll của nó cho phép executor kiểm tra xem Future đã sẵn sàng (Poll::Ready) hay cần phải chờ (Poll::Pending). Đây là cơ chế nền tảng của tính bất đồng bộ trong Rust, cho phép thực thi non-blocking và hiệu quả.

3

Tại sao cần một runtime như tokio để thực thi code async trong Rust?

Câu trả lời

Rust không bao gồm runtime bất đồng bộ trong thư viện chuẩn để giữ ngôn ngữ tối giản và cho phép chọn runtime theo nhu cầu. Một runtime như tokio cung cấp executor để poll các Future, scheduler để quản lý các task, và I/O bất đồng bộ. Không có runtime, các Future sẽ không bao giờ được thực thi.

4

Sự khác biệt giữa async block và async function trong Rust là gì?

5

Điều gì xảy ra khi sử dụng .await trên một Future trong Rust?

+19 câu hỏi phỏng vấn

Nắm vững Rust 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í