
Memory Management
Stack a heap, allocator, Drop trait, RAII, wycieki pamięci spowodowane cyklami Rc, Pin<T>
1Gdzie w Rust przechowywane są zmienne lokalne typów prymitywnych, takich jak i32 czy bool?
Gdzie w Rust przechowywane są zmienne lokalne typów prymitywnych, takich jak i32 czy bool?
Odpowiedź
Zmienne lokalne typów prymitywnych są przechowywane na stosie (stack). Stack zapewnia bardzo szybką alokację i zwalnianie, ponieważ działa zgodnie z zasadą LIFO (Last In, First Out). Typy prymitywne mają rozmiar znany w czasie kompilacji, co pozwala kompilatorowi zarezerwować potrzebne miejsce w stack frame bieżącej funkcji.
2Którego smart pointera należy użyć, aby zaalokować wartość na stercie (heap) z jednym właścicielem?
Którego smart pointera należy użyć, aby zaalokować wartość na stercie (heap) z jednym właścicielem?
Odpowiedź
Box<T> to najprostszy smart pointer do alokacji na stercie (heap). Gwarantuje pojedynczego właściciela i automatycznie zwalnia pamięć, gdy Box opuszcza scope. Box jest przydatny dla typów o nieznanym w czasie kompilacji rozmiarze, dla dużych struktur, których nie chcemy kopiować na stosie, lub dla typów rekurencyjnych.
3Czym jest wzorzec RAII (Resource Acquisition Is Initialization) w Rust?
Czym jest wzorzec RAII (Resource Acquisition Is Initialization) w Rust?
Odpowiedź
RAII to wzorzec, w którym zasoby (pamięć, pliki, połączenia) są pozyskiwane podczas tworzenia obiektu i automatycznie zwalniane przy jego niszczeniu. W Rust odbywa się to poprzez trait Drop, który jest automatycznie wywoływany, gdy wartość wychodzi poza scope. Ten wzorzec gwarantuje, że żaden zasób nie zostanie zapomniany, i zapobiega wyciekom pamięci.
Kiedy trait Drop jest automatycznie wywoływany w Rust?
Jak można utworzyć wyciek pamięci (memory leak) za pomocą Rc<T> w Rust?
+17 pytań z rozmów
Inne tematy rekrutacyjne Rust
Podstawy Rusta
Ownership & Borrowing
Structs & Enums
Obsługa błędów
Kolekcje
Moduły i pakiety
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Makra
Serde i serializacja
Unsafe Rust
Zaawansowane traity
Zaawansowane Lifetime
Type System
Tokio & Async I/O
Optymalizacja Wydajności
Web Frameworks
Database Integration
Wzorce projektowe w Rust
Opanuj Rust na następną rozmowę
Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.
Zacznij za darmo