Rust

Rust 디자인 패턴

Builder 패턴, newtype, RAII, typestate, 에러 처리 패턴, 내부 가변성 패턴

20 면접 질문·
Senior
1

많은 매개변수를 가진 생성자와 비교했을 때, Rust에서 Builder 패턴의 주요 장점은 무엇입니까?

답변

Builder 패턴은 유창한 메서드를 체이닝하여 읽기 쉽고 유연한 객체 생성을 가능하게 합니다. Rust에서는 매개변수 순서와 관련된 오류를 방지하고, 기본값을 허용하며, 코드를 자체 문서화합니다. 위치 인수가 많은 생성자와 달리, Builder는 메서드 이름을 통해 각 필드를 명시적으로 만듭니다.

2

Newtype 패턴에서, 기본 타입을 tuple struct로 감싸는 것은 어떤 문제를 해결합니까?

답변

Newtype 패턴은 타입 시스템 수준에서 별개의 타입을 생성하여, 동일한 기저 타입을 가지지만 의미적으로 다른 값 간의 혼동을 방지합니다. 예를 들어, UserId(u64)와 ProductId(u64)는 compile-time에 호환되지 않아, 사용자 ID가 기대되는 곳에 제품 ID가 전달되는 버그를 방지합니다. 이 패턴은 동일한 메모리 표현 보장 덕분에 runtime 비용이 전혀 없습니다.

3

RAII 패턴은 Rust에서 어떻게 리소스 해제를 보장합니까?

답변

RAII (Resource Acquisition Is Initialization)는 리소스의 수명 주기를 변수의 scope에 묶습니다. Rust에서는 값이 scope를 벗어날 때 Drop trait가 자동으로 호출되어, garbage collector 없이 결정론적인 리소스 해제를 보장합니다. 이 패턴은 파일, 네트워크 연결, lock, 그리고 명시적인 정리가 필요한 모든 리소스에 근본적입니다.

4

타입 시스템에서 객체의 상태를 인코딩하기 위한 Typestate 패턴의 원리는 무엇입니까?

5

추가 컨텍스트와 함께 에러를 전파하는 데 권장되는 에러 핸들링 패턴은 무엇입니까?

+17 면접 질문

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

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

무료로 시작하기