Rust

Smart Pointers

Box<T>, Rc<T>, Arc<T>, RefCell<T>, interior mutability, trait Deref và Drop

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

Trường hợp sử dụng chính của Box<T> trong Rust là gì?

Câu trả lời

Box<T> cấp phát dữ liệu trên heap thay vì stack. Điều này hữu ích cho các kiểu có kích thước không xác định tại thời điểm biên dịch (kiểu đệ quy), để chuyển ownership của dữ liệu lớn mà không cần sao chép, hoặc để tạo trait object. Bản thân con trỏ Box có kích thước cố định trên stack.

2

Làm thế nào để định nghĩa một kiểu đệ quy như danh sách liên kết trong Rust?

Câu trả lời

Một kiểu đệ quy trực tiếp như enum List { Cons(i32, List), Nil } không biên dịch được vì trình biên dịch không thể xác định kích thước. Sử dụng Box<List> tạo ra một mức gián tiếp với kích thước cố định (con trỏ), cho phép trình biên dịch tính được kích thước của kiểu.

3

Sự khác biệt chính giữa Rc<T> và Arc<T> là gì?

Câu trả lời

Rc (Reference Counted) sử dụng bộ đếm tham chiếu không atomic, giúp nó hiệu năng cao hơn nhưng chỉ giới hạn trong một luồng. Arc (Atomically Reference Counted) sử dụng các thao tác atomic cho bộ đếm, cho phép chia sẻ giữa các luồng nhưng có một chút overhead về hiệu năng.

4

Trait Deref cho phép làm gì trong Rust?

5

Interior mutability (tính khả biến nội tại) trong Rust là gì?

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