
Async/await とパターン
async/await、Task、ValueTask、ConfigureAwait、cancellation token、並列実行、deadlock
26 面接問題·
Senior
1非同期メソッドにおける 'await' キーワードの主な役割は何ですか?
1
非同期メソッドにおける 'await' キーワードの主な役割は何ですか?
回答
await キーワードは Task が完了するまで非同期メソッドの実行を中断し、その間、呼び出し元の thread を解放して他のタスクを処理できるようにします。これにより thread のブロックを回避し、アプリケーションのスケーラビリティを向上させます。thread をブロックする Task.Wait() や Task.Result とは異なり、await は thread pool リソースを効率的に利用できます。
2イベントハンドラーを除いて async void を避けるべきなのはなぜですか?
2
イベントハンドラーを除いて async void を避けるべきなのはなぜですか?
回答
async void メソッドは await できず、内部でスローされた例外は呼び出し元のコードでキャッチできないため、アプリケーションがクラッシュします。さらに、await すべき Task がないため、async void メソッドの単体テストは不可能です。イベントハンドラーは framework から呼び出され Task を返せないため、例外となります。
3どのようなユースケースで Task<T> よりも ValueTask<T> を優先すべきですか?
3
どのようなユースケースで Task<T> よりも ValueTask<T> を優先すべきですか?
回答
ValueTask は value type であり、結果が cache のように既に同期的に利用可能な場合に heap 割り当てを回避します。これにより高パフォーマンスのシナリオで garbage collector への負荷を軽減します。Task は結果が同期的であっても常に heap に割り当てられます。誤った使用はパフォーマンスを低下させる可能性があるため、パフォーマンスの向上が測定可能な場合のみ ValueTask を使用してください。
4
Task<T> と比較して ValueTask<T> に適用される重要な制約は何ですか?
5
.NET ライブラリにおける ConfigureAwait(false) の主な目的は何ですか?
+23 面接問題
その他の.NET面接トピック
C# の基礎
Junior
25問LINQ & Delegates
Junior
20問C#言語の基礎
Junior
15問ASP.NET Core の基礎
Junior
18問ASP.NET Core のリクエストライフサイクル
Junior
20問Configuration & Settings
Junior
20問アプリケーションのライフサイクル
Junior
20問Dependency Injection
Mid-Level
24問Entity Framework Core
Mid-Level
25問Minimal APIs
Mid-Level
18問Web API開発
Mid-Level
22問ASP.NET Core における Async
Mid-Level
20問Authentication & Authorization
Mid-Level
18問HttpClient & ネットワーキング
Mid-Level
20問JSONシリアライズ
Mid-Level
20問Entity Framework Core 応用
Mid-Level
25問C# の高度な機能
Mid-Level
20問Clean Architecture
Mid-Level
20問Logging, Monitoring & Observability
Mid-Level
22問ユニットテストとxUnit
Mid-Level
20問統合テスト
Mid-Level
18問Docker & Containerization
Mid-Level
16問NuGet パッケージ管理
Mid-Level
16問Memory Management & GC
Senior
22問リアクティブプログラミング
Senior
24問.NET デザインパターン
Senior
24問パフォーマンス最適化
Senior
22問セキュリティとベストプラクティス
Senior
24問SignalR とリアルタイム
Senior
22問マイクロサービスアーキテクチャ
Senior
25問