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、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める