Rust

Smart Pointers

Box<T>, Rc<T>, Arc<T>, RefCell<T>, interior mutability, Deref- und Drop-Traits

22 Interview-Fragen·
Mid-Level
1

Was ist der primäre Anwendungsfall für Box<T> in Rust?

Antwort

Box<T> allokiert Daten auf dem Heap statt auf dem Stack. Das ist nützlich für Typen mit zur Compile-Zeit unbekannter Größe (rekursive Typen), zum Übertragen der Ownership großer Daten ohne Kopieren oder zum Erstellen von Trait Objects. Der Box-Pointer selbst hat eine feste Größe auf dem Stack.

2

Wie definiert man einen rekursiven Typ wie eine verkettete Liste in Rust?

Antwort

Ein direkter rekursiver Typ wie enum List { Cons(i32, List), Nil } lässt sich nicht kompilieren, weil der Compiler die Größe nicht bestimmen kann. Durch die Verwendung von Box<List> entsteht eine Indirektion mit fester Größe (Pointer), wodurch der Compiler die Größe des Typs berechnen kann.

3

Was ist der Hauptunterschied zwischen Rc<T> und Arc<T>?

Antwort

Rc (Reference Counted) verwendet einen nicht-atomaren Referenzzähler, was es performanter macht, aber auf einen einzigen Thread beschränkt. Arc (Atomically Reference Counted) verwendet atomare Operationen für den Zähler, wodurch das Teilen über Threads hinweg möglich wird, allerdings mit einem geringen Performance-Overhead.

4

Was ermöglicht der Deref-Trait in Rust?

5

Was ist interior mutability (innere Veränderbarkeit) in Rust?

+19 Interview-Fragen

Meistere Rust für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten