Rust

Smart Pointers

Box<T>, Rc<T>, Arc<T>, RefCell<T>, interior mutability, Deref 및 Drop trait

22 면접 질문·
Mid-Level
1

Rust에서 Box<T>의 주요 사용 사례는 무엇입니까?

답변

Box<T>는 데이터를 stack이 아닌 heap에 할당합니다. 이는 컴파일 시점에 크기를 알 수 없는 타입(재귀적 타입), 큰 데이터의 ownership을 복사 없이 이전하는 경우, 또는 trait object를 생성하는 경우에 유용합니다. Box 포인터 자체는 stack에서 고정 크기를 가집니다.

2

Rust에서 연결 리스트와 같은 재귀적 타입을 어떻게 정의합니까?

답변

enum List { Cons(i32, List), Nil }와 같은 직접적인 재귀적 타입은 컴파일러가 크기를 결정할 수 없기 때문에 컴파일되지 않습니다. Box<List>를 사용하면 고정 크기(포인터)의 간접 참조가 생성되어 컴파일러가 타입의 크기를 계산할 수 있습니다.

3

Rc<T>와 Arc<T>의 주요 차이점은 무엇입니까?

답변

Rc(Reference Counted)는 비atomic 참조 카운터를 사용하므로 성능이 더 좋지만 단일 스레드로 제한됩니다. Arc(Atomically Reference Counted)는 카운터에 atomic 연산을 사용하여 스레드 간 공유가 가능하지만 약간의 성능 오버헤드가 있습니다.

4

Rust에서 Deref trait는 무엇을 가능하게 합니까?

5

Rust에서 interior mutability(내부 가변성)란 무엇입니까?

+19 면접 질문

다음 면접을 위해 Rust을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기