クイズの説明
Month 7「パフォーマンスエンジニアリングを極めよう」の総合理解度を確認します。全10問、80%(8問)以上正解で合格です。
Q1. リトルの法則 L = λ × W について、同時接続数200、平均レスポンス時間25msのサーバーの最大スループットは?
- A) 2,000 RPS
- B) 5,000 RPS
- C) 8,000 RPS
- D) 10,000 RPS
答えを見る
正解: C
λ = L / W = 200 / 0.025 = 8,000 RPS。
Q2. Amdahlの法則で、プログラムの80%が並列化可能な場合、4コアでの理論上の最大高速化率は?
- A) 約2.0倍
- B) 約2.5倍
- C) 約3.2倍
- D) 約4.0倍
答えを見る
正解: B
S = 1 / ((1 - P) + P/N) = 1 / (0.2 + 0.8/4) = 1 / (0.2 + 0.2) = 1 / 0.4 = 2.5倍。
Q3. Cache-Asideパターンで「サンダリングハード問題」を防ぐ最も効果的な手法は?
- A) キャッシュを使わない
- B) TTLを非常に長く設定する
- C) TTLにランダムなジッターを追加する
- D) キャッシュサーバーを増やす
答えを見る
正解: C
TTLにジッター(ランダムな揺らぎ)を追加することで、大量のキャッシュエントリが同時に期限切れになるのを防ぎ、DBへの一斉アクセスを分散させる。
Q4. PostgreSQLのEXPLAIN ANALYZEで「Rows Removed by Filter: 95000」が表示された場合の最適な対応は?
- A) shared_buffersを増やす
- B) フィルタ条件のカラムにインデックスを追加する
- C) work_memを増やす
- D) VACUUM FULLを実行する
答えを見る
正解: B
Rows Removed by Filterが大きい場合、Seq Scanで大量行を読み込んだ後に大半を除去している。インデックスを追加すれば、必要な行だけを効率的に取得できる。
Q5. k6のramping-arrival-rate executor(Open Model)が適しているテストケースは?
- A) 一定数のVUでの定常負荷テスト
- B) サーバーの限界を超える負荷を掛けるスパイクテスト
- C) 長時間のSoakテスト
- D) 単一ユーザーのスモークテスト
答えを見る
正解: B
Open Model(arrival-rate)はサーバーのレスポンス時間に関係なく指定レートでリクエストを送り続ける。サーバーが遅くなってもリクエストレートが下がらないため、スパイクテストやストレステストでサーバーの限界を正確に測定できる。
Q6. オートスケーリングで「スケールインのクールダウン」をスケールアウトより長く設定する理由は?
- A) スケールインの方がコストがかかるから
- B) 早すぎるスケールインで再び負荷が上がりフラッピングが発生するのを防ぐため
- C) スケールインはAWS側の処理が遅いから
- D) ログの収集に時間がかかるから
答えを見る
正解: B
スケールインを急ぎすぎると、縮小後に再び負荷が上がりスケールアウト→スケールイン→スケールアウトのフラッピングが発生する。慎重にスケールインすることで安定した運用を維持する。
Q7. Core Web VitalsのINP(Interaction to Next Paint)が200msを超える主な原因は?
- A) 画像のサイズが大きい
- B) メインスレッドでの長いJavaScript処理がフレーム描画をブロックしている
- C) CSSファイルが大きい
- D) サーバーのレスポンスが遅い
答えを見る
正解: B
INPはユーザー操作から次のフレームが描画されるまでの時間。メインスレッドで長いJavaScript処理(Long Task)が実行されていると、ユーザー操作のイベントハンドラの実行やレンダリングがブロックされ、INPが悪化する。
Q8. ISR(Incremental Static Regeneration)とSSR(Server Side Rendering)の主な違いは?
- A) ISRはクライアントサイドで動作する
- B) ISRは一度生成したページをキャッシュし、バックグラウンドで再生成する
- C) SSRの方が常に高速
- D) ISRはJavaScriptが不要
答えを見る
正解: B
ISRはSSGのようにページを事前生成してキャッシュするが、revalidate間隔でバックグラウンドで再生成する。SSRは毎リクエストごとにサーバーでHTMLを生成するため、ISRの方がレスポンスが速い。
Q9. バンドルサイズ削減で最もインパクトが大きい施策は?
- A) コメントを削除する
- B) 変数名を短くする(minify)
- C) 不要なライブラリの除去とTree Shaking
- D) TypeScriptの型定義を削除する
答えを見る
正解: C
minifyは数%の削減に留まるが、不要なライブラリの除去(例: moment.js→dayjs)やTree Shakingは50-80%の削減が可能。最もインパクトが大きい。型定義はビルド時に自動的に除去される。
Q10. PgBouncerのtransactionモードでのコネクションプーリングの制限は?
- A) トランザクションが使えない
- B) PREPARED STATEMENTに制限がある
- C) SELECTクエリのみ実行可能
- D) コネクション数が物理コネクション数に制限される
答えを見る
正解: B
transactionモードでは、トランザクション完了後にコネクションが他のクライアントに再割り当てされるため、セッション固有のPREPARED STATEMENTが利用できない。PgBouncer 1.21以降ではmax_prepared_statements設定で緩和可能。
結果
8問以上正解の場合
合格です。 Month 8「クラウドネイティブアーキテクチャを構築しよう」に進みましょう。
7問以下の場合
もう少し復習しましょう。 パフォーマンス分析、キャッシュ戦略、DB最適化、負荷テスト、フロントエンドパフォーマンスを復習してください。