資格道場
記事法人
MicrosoftLevel 3

難易度は Level 1(やさしめ)〜Level 5(難関) の5段階です。

AI-200のサンプル問題(本番形式・解説付き)

AI-200(Microsoft・Azure Developer 相当(AZ-204 後継))の出題形式を、実際の問題で確かめられます。ここに掲載する5問は、無料の会員登録で解ける模試 第1回(50問)の冒頭から抜粋したオリジナル問題です。当サイトは全500問を本番CBT準拠の形式で収録しており、この5問はそのごく一部にあたります。

設問1

Python(redis-py)で、Azure Managed Redis をキャッシュアサイドのキャッシュとして使います。要件は次のとおりです。 ・キャッシュに無い時だけデータベースから読む。 ・キャッシュの値は 1 時間で消えるようにする。 ・データベースを更新したら、古い値を返さないようにする。 コードを完成させるために、回答領域のプルダウンから適切な選択肢を選んでください。正しい選択 1 つにつき 1 点です。

    解説

    キャッシュアサイドでは、まずキャッシュを読み、無ければデータベースから読んでキャッシュに入れます。有効期限で古い値が残り続ける時間に上限を付け、更新時は削除して無効化します。

    設問2

    Service Bus で、トピック orders のサブスクリプション audit に届いたメッセージを、キュー audit-q へ自動転送させたい。audit-q はまだ無い。作業の順序として正しいものはどれか。

    • 転送先を audit-q にしてサブスクリプションを作り、その後で audit-q を作る
    • 先に audit-q を作り、その後で転送先を audit-q にしてサブスクリプションを作る(正解)
    • 別の名前空間に audit-q を作り、その名前空間の audit-q を転送先にする
    • 転送先を指定せずに両方を作り、受信側のコードで audit-q へ送り直させる

    解説

    自動転送の転送先は、転送元を作る時点で存在している必要があり、無いと転送元の作成が例外で失敗します。転送先は、同じ名前空間のキューかトピックです。「転送先を指定せずに両方を作り、受信側のコードで audit-q へ送り直させる」は誤りです。受信側のコードで送り直すのは自動転送ではなく、処理を自分で書くことになります。

    他の選択肢が誤りである理由

    • 「転送先を audit-q にしてサブスクリプションを作り、その後で audit-q を作る」転送先が無い状態で転送元を作ると、作成が例外で失敗します。
    • 「別の名前空間に audit-q を作り、その名前空間の audit-q を転送先にする」自動転送の転送先は、同じ名前空間のキューかトピックです。
    • 「転送先を指定せずに両方を作り、受信側のコードで audit-q へ送り直させる」受信側のコードで送り直すのは自動転送ではなく、処理を自分で書くことになります。

    設問3

    あなたは、外部の API キーを Key Vault のシークレットとして管理している。キーは 90 日で失効するため、期限が近づいたことを検知して、新しいキーへの差し替えの処理を自動で起動する必要がある。定期的にポーリングする処理は作りたくない。組み合わせとして適切なものはどれか。

    • シークレットへ期限のタグを付けておき、タイマートリガーの関数から短い間隔でそのタグを読み直し続ける
    • シークレットに有効期限を設定し、期限接近のイベントを Event Grid のサブスクリプションへ配信させる(正解)
    • シークレットのバージョンを参照側で固定し、取得に失敗した時点で人手により差し替える
    • アクセス ポリシーで読み取りを止め、監査ログに現れる失敗を手掛かりに差し替える

    解説

    Key Vault はシークレット・キー・証明書の期限接近や更新をイベントとして発行でき、Event Grid のサブスクリプションで Functions や Logic Apps へ配信できます。有効期限を設定しておけば、期限が近づいた時点で差し替えの処理を起動できます。「シークレットへ期限のタグを付けておき、タイマートリガーの関数から短い間隔でそのタグを読み直し続ける」は誤りです。読み直しを繰り返す構成は要求数と費用が増え、通知の仕組みが用意されている場面では遠回りです。「シークレットのバージョンを参照側で固定し、取得に失敗した時点で人手により差し替える」は誤りです。失敗が起きてから動く構成で、期限が来る前に差し替えるという目的を満たしません。「アクセス ポリシーで読み取りを止め、監査ログに現れる失敗を手掛かりに差し替える」は誤りです。読み取りを止める運用は稼働中のアプリを壊すうえ、期限の接近を知る手段にもなりません。

    他の選択肢が誤りである理由

    • 「シークレットへ期限のタグを付けておき、タイマートリガーの関数から短い間隔でそのタグを読み直し続ける」読み直しを繰り返す構成は要求数と費用が増え、通知の仕組みが用意されている場面では遠回りです。
    • 「シークレットのバージョンを参照側で固定し、取得に失敗した時点で人手により差し替える」失敗が起きてから動く構成で、期限が来る前に差し替えるという目的を満たしません。
    • 「アクセス ポリシーで読み取りを止め、監査ログに現れる失敗を手掛かりに差し替える」読み取りを止める運用は稼働中のアプリを壊すうえ、期限の接近を知る手段にもなりません。

    設問4

    開発者がローカル環境で、Web サーバー・アプリケーション・データベースの 3 つのコンテナーを使う AI アプリを開発している。3 つのサービスの構成を 1 つの YAML ファイルで定義し、手元の PC だけで一括して起動・停止したい。クラウドのリソースは使わない。使う仕組みはどれか。

    • 複数のサービスを1つのコンテナへまとめ、1つのDockerfileで一括してビルドする構成(monolithic 構成)
    • Docker Compose(YAMLファイルで複数コンテナのサービス構成を定義し一括操作する仕組み)(正解)
    • Kubernetes のマニフェスト(YAML)を AKS へ適用し、クラウド上で一括して起動する方法
    • `.dockerignore`ファイルに複数コンテナの起動順序を書き、一括で起動する

    解説

    Docker ComposeはYAMLファイルで複数コンテナのサービス構成(イメージ、ポート、環境変数、依存関係など)をまとめて定義し、一括で起動・停止できるツールで、ローカルでの複数コンテナ構成の開発によく使われます。「複数のサービスを1つのコンテナへまとめ、1つのDockerfileで一括してビルドする構成(monolithic 構成)」は誤りです。複数サービスを1つのコンテナに同居させる設計は、コンテナを役割ごとに分離するというコンテナ設計の基本的な考え方に反し、一般的な手法ではありません。「`.dockerignore`ファイルに複数コンテナの起動順序を書き、一括で起動する」は誤りです。`.dockerignore`はビルドコンテキストの除外ファイルを指定するものであり、起動順序の定義には使いません。「Kubernetes のマニフェスト(YAML)を AKS へ適用し、クラウド上で一括して起動する方法」は誤りです。Kubernetes のマニフェストは AKS などのクラスターで使う定義で、ローカルの Docker だけで複数コンテナを一括操作する基本機能ではありません。

    他の選択肢が誤りである理由

    • 「複数のサービスを1つのコンテナへまとめ、1つのDockerfileで一括してビルドする構成(monolithic 構成)」複数サービスを1つのコンテナに同居させる設計は、コンテナを役割ごとに分離するというコンテナ設計の基本的な考え方に反し、一般的な手法ではありません。
    • 「Kubernetes のマニフェスト(YAML)を AKS へ適用し、クラウド上で一括して起動する方法」Kubernetes のマニフェストは AKS などのクラスターで使う定義で、ローカルの Docker だけで複数コンテナを一括操作する基本機能ではありません。
    • 「`.dockerignore`ファイルに複数コンテナの起動順序を書き、一括で起動する」`.dockerignore`はビルドコンテキストの除外ファイルを指定するものであり、起動順序の定義には使いません。

    設問5

    あなたの RAG アプリでは、検索結果の件数 top-k を 50 に設定している。利用者から、回答が遅く、質問と関係のない内容が混ざると苦情が来ており、トークンの費用も増えている。top-k を見直すため、大きすぎる時に起きる問題をチームに説明する必要がある。起こりうる問題として最も適切なものはどれか。

    • 生成モデルに渡すコンテキストが肥大化し、トークンコストや処理時間が増え、無関係な情報が混ざるリスクも高まる(正解)
    • top-kの設定値を必要以上に大きくしすぎると、埋め込みモデルが出力するベクトルの次元数そのものが自動的に減少する
    • top-kの設定値を必要以上に大きくしすぎると、構築済みのベクトルインデックスが安全装置として自動的に削除されてしまう
    • top-kの設定値を大きくしすぎると、キーワード検索とベクトル検索を組み合わせるハイブリッド検索の機能が強制的に無効化されてしまう

    解説

    top-kを大きくしすぎると、生成モデルに渡すコンテキストの量が増え、トークン消費・処理時間の増加に加えて関連性の低いチャンクが混入しやすくなり、回答の質が下がるリスクがあります。kは精度とコストのバランスを見て調整する必要があります。「top-kの設定値を必要以上に大きくしすぎると、埋め込みモデルが出力するベクトルの次元数そのものが自動的に減少する」は誤りです。top-kの設定値は取得件数を制御するパラメーターであり、埋め込みモデルの次元数を変える仕組みではありません。「top-kの設定値を必要以上に大きくしすぎると、構築済みのベクトルインデックスが安全装置として自動的に削除されてしまう」は誤りです。top-kの設定値を大きくすること自体がインデックスの削除を引き起こすことはありません。「top-kの設定値を大きくしすぎると、キーワード検索とベクトル検索を組み合わせるハイブリッド検索の機能が強制的に無効化されてしまう」は誤りです。top-kの設定とハイブリッド検索の有効・無効は別の設定項目であり、直接連動して強制無効化されるものではありません。

    他の選択肢が誤りである理由

    • 「top-kの設定値を必要以上に大きくしすぎると、埋め込みモデルが出力するベクトルの次元数そのものが自動的に減少する」top-kの設定値は取得件数を制御するパラメーターであり、埋め込みモデルの次元数を変える仕組みではありません。
    • 「top-kの設定値を必要以上に大きくしすぎると、構築済みのベクトルインデックスが安全装置として自動的に削除されてしまう」top-kの設定値を大きくすること自体がインデックスの削除を引き起こすことはありません。
    • 「top-kの設定値を大きくしすぎると、キーワード検索とベクトル検索を組み合わせるハイブリッド検索の機能が強制的に無効化されてしまう」top-kの設定とハイブリッド検索の有効・無効は別の設定項目であり、直接連動して強制無効化されるものではありません。

    続きは、会員登録なしでそのまま50問解けます。採点と解説つきで、上と同じ本物の問題です。

    登録なしで50問解く