Rust

Smart Pointers

Box<T>, Rc<T>, Arc<T>, RefCell<T>, interior mutability, трейти Deref та Drop

22 питань зі співбесід·
Mid-Level
1

Яке основне застосування Box<T> у Rust?

Відповідь

Box<T> розміщує дані в heap, а не в stack. Це корисно для типів з невідомим під час компіляції розміром (рекурсивні типи), для передачі ownership великих даних без копіювання або для створення trait object. Сам вказівник Box має фіксований розмір у stack.

2

Як визначити рекурсивний тип, такий як зв'язаний список, у Rust?

Відповідь

Прямий рекурсивний тип на кшталт enum List { Cons(i32, List), Nil } не компілюється, бо компілятор не може визначити розмір. Використання Box<List> створює непряме посилання з фіксованим розміром (вказівник), що дозволяє компілятору обчислити розмір типу.

3

Яка основна різниця між Rc<T> та Arc<T>?

Відповідь

Rc (Reference Counted) використовує неатомарний лічильник посилань, що робить його продуктивнішим, але обмежує одним потоком. Arc (Atomically Reference Counted) використовує атомарні операції для лічильника, що дозволяє спільний доступ між потоками, але з невеликими накладними витратами на продуктивність.

4

Що дозволяє трейт Deref у Rust?

5

Що таке interior mutability (внутрішня змінюваність) у Rust?

+19 питань зі співбесід

Опануй Rust для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно