Microsoft / GitHubLevel 3

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

GitHub Copilot(GH-300)のサンプル問題(本番形式・解説付き)

GitHub Copilot(GH-300)(Microsoft / GitHub・GitHub Copilot 認定試験 GH-300(2026年8月7日現在のスキル))の出題形式を、実際の問題で確かめられます。ここに掲載する5問は、無料の会員登録で解ける模試 第1回(65問)の冒頭から抜粋したオリジナル問題です。当サイトは全856問を本番CBT準拠の形式で収録しており、この5問はそのごく一部にあたります。

設問1

Copilot Enterprise の説明として正しいものはどれか。

  • GitHub Enterprise Cloud を使う Enterprise の製品で、GitHub Enterprise Server では使えない(正解)
  • 認定された学生が、無料で使えるプランである
  • 個人で契約する個人向けのプランで、個人で最大の割り当てを持つ
  • GitHub Enterprise Server を使う会社でも、Enterprise のシートを購入すれば Copilot が使える

解説

Copilot Enterprise は GitHub Enterprise Cloud を使う Enterprise の製品で、GitHub Enterprise Server では Copilot が使えません。個人で最大の割り当てを持つのは Max で、認定された学生が無料で使うのは Student です。どちらも Enterprise の説明ではありません。

設問2

次のコードで、name に `x' OR '1'='1` を渡すと、users テーブルの全件の 2 行が返りました。理由として適切なものはどれですか。 ```python c.execute("select * from users where name='%s'" % name).fetchall() ```

  • テーブルに 2 行しかないので、どの検索でも 2 行返るから
  • `fetchall()` が条件に関係なく、全件を返す関数だから
  • name の値が長すぎて、データベースが条件を無視したから
  • 入力が SQL の一部として解釈され、条件が常に真になったから(正解)

解説

文字列の連結では、入力が SQL の一部として解釈されます。`x' OR '1'='1` を入れると、条件が常に真になり、全件が返ります。 「テーブルに 2 行しかないので、どの検索でも 2…」:条件に合う行だけが返ります。入力が条件を常に真にしたため、全件が返りました。 「fetchall() が条件に関係なく、全件を返…」:`fetchall()` は、実行した SQL の結果をすべて取り出すだけです。条件が常に真になったことが原因です。 「name の値が長すぎて、データベースが条件を無…」:長さは原因ではありません。入力の引用符と OR が、SQL の一部として解釈されました。

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

  • 「テーブルに 2 行しかないので、どの検索でも 2 行返るから」条件に合う行だけが返ります。入力が条件を常に真にしたため、全件が返りました。
  • 「`fetchall()` が条件に関係なく、全件を返す関数だから」`fetchall()` は、実行した SQL の結果をすべて取り出すだけです。条件が常に真になったことが原因です。
  • 「name の値が長すぎて、データベースが条件を無視したから」長さは原因ではありません。入力の引用符と OR が、SQL の一部として解釈されました。

設問3

Copilot Business の開発者がモバイルから Copilot Chat を使った。入力と出力、およびエンゲージメントデータの扱いの組み合わせとして正しいものはどれか。

  • 入力と出力もエンゲージメントデータも、最長 28 日保持される
  • 入力と出力は 2 年、エンゲージメントデータは最長 28 日保持される
  • 入力と出力は既定で最長 28 日、エンゲージメントデータは 2 年保持される(正解)
  • 入力と出力は既定では保持されず、エンゲージメントデータは 2 年保持される

解説

IDE と CLI 以外の場所であるモバイルでは、入力と出力は既定で最長 28 日、エンゲージメントデータは 2 年です。保持されないのは IDE と CLI の入力と出力です。入力と出力もエンゲージメントデータも最長 28 日保持される、という説明は、エンゲージメントの 2 年を落としています。入力と出力は 2 年、エンゲージメントデータは最長 28 日とする説明は、期間を取り違えています。

設問4

「これを直して」とだけ書いたプロンプトで、質の低い答えが返りやすい理由はどれか。

  • プロンプトが短いと、プロキシのフィルターが破棄するから
  • 指示語を使うと、文脈の収集が止まるから
  • 「直して」という語は、Copilot が処理できないから
  • 「これ」が、今のファイルか、直前の応答か、特定のコードブロックかが決まらない(正解)

解説

「これ」が何を指すかが決まらないのが、文脈の足りない依頼の問題です。対象を示せば、答えは変わります。「直して」という語自体は処理できます。短いからといって破棄されるわけではなく、指示語で文脈の収集が止まるわけでもありません。

設問5

`grade` 関数をリファクタリングした。頼む前は、境界の値を含むテストがすべて通っていた。頼んだ後、入力 80 のテストだけが失敗した。適切な対応はどれか。

  • リファクタリングの目的は読みやすさなので、80 の結果は見ない
  • テストの期待値を新しい結果に書き換えて、テストを通す
  • 失敗したテストを外し、残りが通ったので受け入れる
  • 振る舞いが変わった可能性が高いので、80 の判定条件を Copilot の変更と照らして直す(正解)

解説

頼む前に通っていたテストが、頼んだ後に失敗したのは、振る舞いが変わった合図です。境界の「以上」と「より大きい」の取り違えが混ざりやすいので、80 の判定条件を変更と照らして直します。期待値を書き換えると、変わった動きを正しいものとして固めてしまいます。失敗したテストを外すと、比べる手段を捨てます。目的は動きを変えずに読みやすくすることなので、動きを見ない理由にはなりません。

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

登録なしで50問解く