評価設計

AIに対応できるコーディング面接問題の設計方法

ClarityHire Team(Editorial)14 min read

前提条件が変わった

2026年半ばの現在、焦点は候補者がChatGPTを使っているかどうかではなく、AIが目の前にある状態で、あなたの面接が何を測定できるかにあります。ほとんどのチームは検出技術の強化で対応しました。キーストローク生体認証、ペースト検出フラグ、コード一貫性スコアリングなどです。検出は有用ですが、問題の設計の方がはるかに効果的です。LLMが8秒で解く問題は、ペースト検出がいくら正確でも、キーボード操作者の実力についてはほぼ何も教えてくれません。

本ガイドは、AI支援が利用可能な状態でも有効なシグナルを得られるコーディング面接問題の書き方についての実践ガイドです。

LLMが問題を簡単に感じる理由

3つの要素があなたを不利にしています。

  1. 訓練データに含まれている。 LeetCode、HackerRank、Codeforces、GitHubの流行リポジトリ—すべてがモデルの学習データに含まれています。質問がWikipediaのような標準名を持つ場合(Two Sum、Word Ladder、Longest Increasing Subsequence)、答えはモデルに暗記されていると思ってください。
  2. 完全な仕様が事前に提示される。 明確で曖昧性のないプロンプトは、LLMが学習した形式そのものです。モデルは候補者からの創意工夫や追加入力を必要としません。
  3. 出力が確定的である。 1つの入力に対して1つの出力、1つの正解を持つ関数は、採点も生成も容易です。

LeetCode #1はこれら3つすべてに当てはまります。あなたが受け継いだ質問ライブラリのほとんども同様です。

設計原則1: 仕様を隠して、症状を表面化する

「重複しない最長部分文字列を返す関数を実装してください」 という代わりに、候補者にテスト失敗ケースと曖昧なバグレポートを渡します。「このエンドポイント実行後、顧客がショッピングカートに重複したアイテムを見ています。以下は失敗例です。これを直してください。」

候補者は必ず以下をしなければなりません。

  • 既存のコードを読む
  • 何が間違っているのか仮説を立てる
  • 「正しい」とは何か、誰がそれを定義するのかを判断する

LLMは候補者を支援できます。ただし、候補者が問題を自分で枠付けた後だけです。問題の枠付けはあなたが測定したかったスキルそのものです。

設計原則2: プロンプトではなくコードベースを渡す

スタンドアロンのパズルを小さなリポジトリに置き換えます。100~300行、複数ファイル、1~2個の意図的なバグ、簡潔なREADME。「POST /ordersで500エラーが出ている根本原因のバグを見つけて修正してください。」

あなたのリポジトリを見たことのないモデルは、候補者より優れていません。答えがプロンプトではなくコード内にあるため、モデルは見当違いな推測をしてしまい、自信満々に間違えます。

このフォーマットは、チームが速度ではなく実践的エンジニアリングを測定したいという場合のLeetCodeなし面接としても機能します。

設計原則3: 質問の途中で要件を変える

途中で要件を追加します。「今、顧客は部分払い戻しをサポートしたいと言っています。あなたのソリューションを拡張してください。」 または、「このエンドポイントはべき等である必要があります。何を変更しますか?」

この方向転換は3つのことを実現します。

  • 候補者が自分のコードを本当に理解していることを示すように強制します(チャットから貼り付けた新しいコードではできません)。
  • 最初の一発ソリューションでは隠れているアーキテクチャ上の判断が露呈します。
  • 面接の途中でモデルを使うことが明白になります。候補者は停止するか、数分間を求めるか、最初のコードとは全く異なる2番目のクリーンペーストを生成するかのいずれかです。すべてがインテグリティレポートのシグナルになります。

設計原則4: 出力ではなく判断を求める

最も信号価値の高い質問の中には、コードを書かせないものもあります。

  • コードレビュー演習。 60行のdiffを候補者に渡します。PR作成者のレビュアーになって、コメントを残すよう求めます。LLMは一般的で無難なコードレビューを出します(「ここにコメントを追加することをお考えください」)。一方、シニアエンジニアは具体的で優先順位のある指摘をします(「このロックはネットワーク呼び出しをまたいで保持されます—負荷時にデッドロックします」)。
  • トレードオフの判断。 「このキャッシュ無効化には2つのオプションがあります。どちらを選びますか、そしてなぜ?」 候補者は自分の選択を正当化する必要があります。モデルは立場がないため、どうしても曖昧に答えます。
  • 未知のPRを読む。 「この変更が何をしていて、何がおかしくなる可能性があるか説明してください。」

これらはシステム設計ルーブリックの方がアルゴリズムスコアシートより相応しいです。理由づけで採点し、結論で採点しない。

設計原則5: 新しい問題ではなく新しい制約

新しい問題クラスを発明する必要はありません。よくある問題に、珍しい制約をつけるだけです。

  • 「レート制限機構を実装してください。ただし、NTP相違により時刻が最大30秒戻ることがあります。」
  • 「キューを構築してください。ただし、enqueueがO(1)最悪ケースの計算量でなければなりません。アモーティゼード時間ではなく。ハード・リアルタイム・コントロール・ループで動作するため。」
  • 「このコンフィグファイルを解析してください。ただし、仕様が進化します。3バージョン先の後方互換性をどう設計しますか?」

LLMでもこれらは解けます。ただし、制約を見落とすことがよくあります。制約に気付き、質問し、それを中心に設計する候補者が、あなたが雇いたい人です。

やってはいけないこと

問題設計を変えずにAIだけを禁止すると、すでにAIを上手に使う優秀な候補者を失い、ルールを無視するカンニング者は残し、新しいシグナルは何も得られません。

いくつかの一般的な反応が裏目に出ます。

  • AIを禁止するが問題設計は変えない。 すでにAIを上手に活用している優秀な候補者を失い、ルール破りの候補者は残り、何も新しい情報は得られません。
  • 問題を「モデルより速く解けるレベル」に不必要に難しくする。 対抗的な難易度は、圧力下で頑張れる人を選別し、実務でできる人を選別しません。合格率が激減し、採用ファネルが詰まります。
  • すべてホワイトボード/ノートパソコンなし面接に変える。 これは確かに一つの選択肢ですが、独自のトレードオフがあります。アクセシビリティ、候補者のストレス、そして実務でエンジニアは決してそのように書かないという事実です。
  • ベンダーの「AI対応」ラベルを信じる。 ベンダーの中には、今日のGPT-4で一定スコア以下になることを確認する会社もあります。明日のモデルは別の結果を出すかもしれません。ラベルは出発点であって、保証ではありません。

質問設計を測定層と組み合わせる

よく設計された質問でも、インテグリティレイヤーでシグナルの第二軸を得ることで強化されます。ClarityHireのコード一貫性AIは、最終コードだけでなく、提出物の軌跡を読みます。候補者がイテレート、テスト、リファクタリングしたのか、それとも1つの大きなコヒーレントなペーストで完成させたのか。キーストローク生体認証ペースト・タブスイッチイベントと組み合わせると、上記の設計選択に加えて信頼スコアが得られます。

我々が最も効果的に見るパターン:非同期段階のAI対応質問の後に、30分のライブフォローアップ説明があり、候補者が数時間前に下した判断を説明する必要があります。この組み合わせは、どちらか片方だけより、はるかに偽装が難しいです。

次に何をするか

最も頻繁に使う3つの質問を、上記の原則に照らして採点してください。

  1. 各質問は、候補者が引き出す必要がある仕様の一部を隠していますか?
  2. その質問は、候補者が初めて見るコードを読むことが必要ですか?
  3. 方向転換または判断が必要で、既成品のモデルが簡単に対応できないですか?

スコアが低い各質問については、新バージョンを書き、5人の実際の候補者でパイロットしてからロールアウトしてください。2つの指標を測定します。上位4分の1からの平均提出品質と、次ラウンドへの進出率。品質が上がり進出率が安定していれば、より良い質問です。進出率が低下した場合、新バージョンは対抗的であり、選別的ではありません。修正して再度試してください。

コーディング面接のAIは問題ではありません。AI型の質問が問題です。質問を修正すれば、残りのインテグリティスタックは本来の役割を果たし始めます。シグナルを生み出すのではなく、確認するために。

ai対応質問面接設計chatgptコーディング評価

関連記事