
Memory Management
Stack so với heap, allocator, Drop trait, RAII, rò rỉ bộ nhớ do chu trình Rc, Pin<T>
1Trong Rust, các biến cục bộ thuộc kiểu nguyên thủy như i32 hoặc bool được lưu trữ ở đâu?
Trong Rust, các biến cục bộ thuộc kiểu nguyên thủy như i32 hoặc bool được lưu trữ ở đâu?
Câu trả lời
Các biến cục bộ thuộc kiểu nguyên thủy được lưu trên stack. Stack cung cấp việc cấp phát và giải phóng rất nhanh vì nó hoạt động theo nguyên tắc LIFO (Last In, First Out). Các kiểu nguyên thủy có kích thước được biết tại thời điểm biên dịch, cho phép trình biên dịch dành sẵn không gian cần thiết trên stack frame của hàm hiện tại.
2Nên dùng smart pointer nào để cấp phát một giá trị trên heap với một chủ sở hữu duy nhất?
Nên dùng smart pointer nào để cấp phát một giá trị trên heap với một chủ sở hữu duy nhất?
Câu trả lời
Box<T> là smart pointer đơn giản nhất để cấp phát trên heap. Nó đảm bảo quyền sở hữu duy nhất và tự động giải phóng bộ nhớ khi Box ra khỏi scope. Box 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, cho các cấu trúc lớn không muốn sao chép trên stack, hoặc cho các kiểu đệ quy.
3Mẫu RAII (Resource Acquisition Is Initialization) trong Rust là gì?
Mẫu RAII (Resource Acquisition Is Initialization) trong Rust là gì?
Câu trả lời
RAII là một mẫu trong đó tài nguyên (bộ nhớ, tệp, kết nối) được thu nhận khi tạo đối tượng và được giải phóng tự động khi đối tượng bị hủy. Trong Rust, điều này được thực hiện thông qua trait Drop, được gọi tự động khi một giá trị ra khỏi scope. Mẫu này đảm bảo không có tài nguyên nào bị bỏ quên và ngăn chặn rò rỉ bộ nhớ.
Khi nào trait Drop được gọi tự động trong Rust?
Làm thế nào để tạo ra rò rỉ bộ nhớ (memory leak) với Rc<T> trong Rust?
+17 câu hỏi phỏng vấn
Các chủ đề phỏng vấn Rust khác
Cơ bản về Rust
Ownership & Borrowing
Structs & Enums
Xử lý lỗi
Collections
Modules & Packages
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macro
Serde & Serialization
Unsafe Rust
Trait nâng cao
Lifetime Nâng Cao
Type System
Tokio & Async I/O
Tối ưu hóa Hiệu suất
Web Frameworks
Database Integration
Design Pattern trong Rust
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í