Rust

Smart Pointers

Box<T>, Rc<T>, Arc<T>, RefCell<T>, interior mutability, traity Deref i Drop

22 pytań z rozmów·
Mid-Level
1

Jakie jest podstawowe zastosowanie Box<T> w Rust?

Odpowiedź

Box<T> alokuje dane na stercie (heap) zamiast na stosie (stack). Jest to przydatne dla typów o nieznanym rozmiarze w czasie kompilacji (typy rekurencyjne), do przekazywania ownership dużych danych bez kopiowania lub do tworzenia trait objects. Sam wskaźnik Box ma stały rozmiar na stosie.

2

Jak zdefiniować typ rekurencyjny, taki jak lista wiązana, w Rust?

Odpowiedź

Bezpośredni typ rekurencyjny taki jak enum List { Cons(i32, List), Nil } nie kompiluje się, ponieważ kompilator nie może ustalić rozmiaru. Użycie Box<List> tworzy pośredniość o stałym rozmiarze (wskaźnik), co pozwala kompilatorowi obliczyć rozmiar typu.

3

Jaka jest główna różnica między Rc<T> a Arc<T>?

Odpowiedź

Rc (Reference Counted) używa nieatomowego licznika referencji, co czyni go wydajniejszym, ale ogranicza do jednego wątku. Arc (Atomically Reference Counted) używa operacji atomowych dla licznika, umożliwiając współdzielenie między wątkami, ale z niewielkim narzutem wydajnościowym.

4

Co umożliwia trait Deref w Rust?

5

Czym jest interior mutability (mutowalność wewnętrzna) w Rust?

+19 pytań z rozmów

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