面接質問と回答の解説 — ページ 46 / 52
Offer.ccの面接質問と回答解説の46ページ目を閲覧。思考プロセス、実装の詳細、深掘り質問、公開情報ソースを確認できます。
新プロダクト機能の成功指標をどのように定義しますか?
ユーザー価値から出発し、1つの主要指標に加えて診断指標とガードレール指標を定義し、機能の利用がインパクトと混同されないよう、監査可能な定義と実験ルールを用います。
OS面接:ファイルディスクリプタとは何か、そして「Too Many Open Files」をどうデバッグするか?
LinuxのFDテーブル、オープンファイル記述、EMFILEとENFILEの違い、/proc診断、リーク検出、キャパシティプランニング、修正の検証についての本番環境を意識した解説。
安定した有界優先度付きキューをどのように実装しますか?
二分ヒープを使用して、FIFOによる同順位解決、受付、退出、明確な計算量のトレードオフを備えた固定容量の優先度付きキューを構築します。
システムデザイン面接:サービスディスカバリシステムの設計
コントロールプレーンとデータプレーンの分離、鮮度(staleness)の上限、ローリングデプロイ、障害検証に重点を置き、動的なマルチリージョンサービスにおける登録、ヘルス判定、エンドポイント伝播を設計します。
バックエンド面接:長時間実行オペレーション(Long-Running Operations)のAPIをどう設計するか?
HTTP 202、オペレーションリソース、明示的な状態マシンから始め、冪等な送信、制御されたポーリング、キャンセル、永続化されたエラー、結果の保持、障害復旧を備えた長時間実行APIを設計します。
データエンジニアリング面接:パーティショニング戦略の選び方とパーティションプルーニングの有効性を証明する方法
クエリ述語、データ量、データスキュー、メンテナンス要件から分析テーブルのパーティション戦略を導き出し、実行計画、スキャンバイト数、整合性チェックによってプルーニングを検証します。
ネットワーク面接:TLS 1.3 ハンドシェイクの仕組みと 0-RTT が安全な条件
フルハンドシェイク、証明書認証、HKDF 鍵スケジュール、セッション再開、および 0-RTT が安全かどうかを決定する HTTP リプレイ境界について解説します。
コーディング面接:依存関係を考慮したタスクスケジューラをどのように設計・構築しますか?
実行可能ノード、失敗の伝播、循環の診断、並行性制限、およびキャンセルセマンティクスを備えた、依存関係を考慮したスケジューラを実装します。
システムデザイン面接:検索オートコンプリートサービスをどのように設計するか?
キャパシティの算出、オフラインランキングとオンライン検索の分離、インデックスの公開・モデレーション・障害復旧の明示化を通じて、低レイテンシの検索オートコンプリートサービスを設計します。
バックエンド面接:データベースとキャッシュの整合性をどのように維持するか?
Cache-Asideの無効化(Invalidation)から始め、無効化の欠落、遅延した古いデータの書き込み(Late Stale Fill)、レプリカラグを、有界な古さ(Bounded-Staleness)のバジェット、Transactional Outbox、障害下でテスト可能なバージョンフェンスを用いて対処します。
SQL面接:24時間以内の順序付きコンバージョンファネルの計算
正確なコホートアンカー、段階的なイベントマッチング、24時間ウィンドウ、決定論的なタイブレーク、転換率の計算、および敵対的テストを用いて、PostgreSQLの順序付きファネル面接問題を解決します。
TCP接続のライフサイクル:ハンドシェイク、切断、およびTIME_WAIT
シーケンス番号の同期、ソケット状態、アクティブクローズ側の観点からTCPの確立と切断を説明し、エフェメラルポートの容量、エラーの種類、パケット証拠を用いてTIME_WAITと接続障害を診断します。
コーディング面接:削除機能を備えた Cuckoo Filter の実装
近似メンバーシップクエリを実装し、フィンガープリント、2 つの候補バケット、有界なキック(relocation)、偽陽性、リサイズについて説明します。
システム設計面接:リアルタイム決済不正検知プラットフォームの設計
判定コントラクト、冪等なベロシティ(頻度)状態、オンラインおよびオフライン特徴量、ルールとモデルによるスコアリング、段階的なアクション、遅延ラベル、リプレイ可能な監査ログ、および明示的な縮退ポリシーから、リアルタイム決済不正検知プラットフォームを導出します。
バックエンド面接:認証の停止を引き起こさずにJWT署名鍵をローテーションするにはどうすればよいか?
キャッシュ、未知のkid、Issuerの障害、および鍵の漏洩を処理し、有効な新旧トークンを拒否しない、検証可能なJWKSローテーションプロトコルを設計します。
データエンジニアリング面接:忘れられる権利(データ削除)パイプラインをどう設計するか?
本番、派生、イミュータブル、バックアップデータ全体から対象者を特定し、データの復活を防止し、完了を証明する、永続的で監査可能なワークフローを設計します。
OS面接:仮想メモリとページフォルトはどのように機能するか?
20 GiBの読み取り専用インデックスをマップするLinuxサービスを題材に、ページテーブル、TLB、マイナー/メジャーフォルト、RSSとPSSを説明し、コールドスタート時のレイテンシを診断・改善します。
コーディング面接:ハッシュドタイミングホイール(Hashed Timing Wheel)タイマーの実装
キャンセル、周回、長期遅延、並行性、およびクロック精度を処理しながら、タイミングホイールを用いて多数の近似タイマーを管理します。
システム設計面接:分散トレーシングプラットフォームをどのように設計しますか?
コンテキスト伝播、スパン取り込みからトレース組み立て、サンプリング、インデックス作成、障害復旧に至るマルチテナント分散トレーシングプラットフォームを、再計算可能なキャパシティモデルとテールサンプリングの詳細な分析とともに設計します。
バックエンド面接:セキュアなファイルアップロードAPIをどのように設計するか?
悪意のあるファイル、不正なダウンロード、スキャン時の競合状態、リソース枯渇を防ぐ、隔離されたアップロードライフサイクルを設計します。
データサイエンス面接:ネットワーク干渉(Network Interference)が存在する環境下でA/Bテストをどのように設計するか?
必要なロールアウト効果を定義し、波及効果(spillover)と持ち越し効果(carryover)をマッピングした上で、クラスター、スイッチバック、飽和抽出(saturation)、または隔離ユニバース(isolated-universe)によるランダム化を選択し、設計と整合した検出力および分析を実施します。
デッドロックの防止・検知・復旧はどのように行うか?
4つの必要条件と待機グラフ(wait-for graph)からデッドロックを診断し、グローバルなロック順序付けがサイクルを防ぐ理由を証明した上で、ランタイム検知、トランザクション復旧、決定論的テストを定義します。
コーディング面接:UTF-8 バイトシーケンスの検証
残余バイトカウンタとビットマスクを使用して、途切れ(切り捨て)や不正な後続バイトを含め、1〜4 バイトの UTF-8 シーケンスをオンラインで検証します。
システム設計面接:リアルタイムゲームリーダーボードの設計方法
ランキングの契約、信頼できるスコアの取り込み、順序付きインデックス、バージョン管理されたスナップショットを出発点として、正確な個人順位と安全なシーズン集計を備えた5000万人規模のリアルタイムゲームリーダーボードを設計します。