エンジニア転職のコーディングテスト対策頻出問題と解き方ガイドを徹底解説
最終更新: 2026年4月29日
コーディングテストとは
コーディングテストは、エンジニア採用において候補者のプログラミング能力を評価するための技術試験です。与えられた問題を制限時間内にプログラムで解決する形式が一般的で、アルゴリズムとデータ構造の知識が問われます。
2026年現在、Web系企業やメガベンチャーの約80%がコーディングテストを採用選考に取り入れています。オンラインで実施されることがほとんどで、HackerRank・Codility・自社プラットフォームなどが使用されます。
テストの難易度は企業によって異なりますが、一般的にはLeetCodeのEasy〜Medium程度の問題が中心です。一部の企業ではHard相当の難問も出題されますが、全問正解を求められるわけではなく、部分点が得られるケースも多いです。
コーディングテストは事前に対策をすれば確実にスコアが向上する選考ステップです。アルゴリズムの基礎を学び、練習問題を繰り返し解くことで、パターンを認識する力が身につきます。継続的な準備が成功の鍵です。
コーディングテストの形式
- ✓オンライン形式:自宅で制限時間内に解答(60〜120分が多い)
- ✓問題数:2〜4問が一般的
- ✓使用言語:多くの場合自由に選択可能
- ✓評価基準:正答数・計算量の効率性・コードの品質
- ✓テストケース:公開テストと非公開テストで評価
頻出データ構造の解説
コーディングテストで頻出するデータ構造を理解し、適切に使い分けることが高得点への第一歩です。
配列・文字列
出題頻度: 非常に高い最も基本的なデータ構造。ソート・検索・部分配列の操作が頻出。二分探索・スライディングウィンドウ・Two Pointers手法と組み合わせて出題されることが多い。
ハッシュマップ(辞書)
出題頻度: 非常に高いキーと値のペアを高速に検索・挿入できるデータ構造。出現回数のカウント、重複検出、グルーピングなど幅広く使用される。O(1)の検索速度が特徴。
スタック・キュー
出題頻度: 高いスタックはLIFO(後入れ先出し)、キューはFIFO(先入れ先出し)のデータ構造。括弧の対応確認・BFS・逆ポーランド記法などで使用される。
連結リスト
出題頻度: 高いノードが次のノードへの参照を持つデータ構造。リストの反転・環の検出・マージなどが頻出。Two Pointers手法(fast/slow pointer)と組み合わせることが多い。
二分木・BST
出題頻度: 高い各ノードが最大2つの子を持つ木構造。前順・中順・後順の走査、深さ優先探索(DFS)・幅優先探索(BFS)の実装が求められる。再帰的な解法が基本。
グラフ
出題頻度: 中程度ノードとエッジで構成されるデータ構造。最短経路・連結成分・トポロジカルソートなどが出題される。隣接リストでの表現とBFS/DFSの実装が重要。
ヒープ(優先度付きキュー)
出題頻度: 中程度最大値・最小値を効率的に取得できるデータ構造。Top K問題・中央値の取得・スケジューリング問題などで使用される。
頻出アルゴリズムの解説
コーディングテストで頻出するアルゴリズムのパターンを理解しておくと、初見の問題でも適切なアプローチを見つけやすくなります。
Two Pointers
2つのポインタを使って配列や文字列を効率的に走査する手法。ソート済み配列の合計値検索、回文判定、水量問題などに使用。
スライディングウィンドウ
固定長または可変長のウィンドウを配列上でスライドさせて解く手法。部分配列の最大和、最長部分文字列の検索などに効果的。
二分探索
ソート済み配列で高速に検索する手法。O(log n)の計算量。探索空間を半分に絞り込むことで効率的に解を見つける。
BFS/DFS
グラフや木の探索アルゴリズム。BFSは最短経路、DFSは全探索に適する。再帰またはスタック/キューで実装。
動的計画法(DP)
大きな問題を小さな部分問題に分割し、結果をメモ化して解く手法。最長増加部分列・ナップサック問題・経路数の計算などに使用。
貪欲法
各ステップで局所的に最適な選択を繰り返す手法。区間スケジューリング・コイン問題(特定条件下)などに適用。
バックトラッキング
解の候補を探索し、条件を満たさない場合に戻って別の候補を試す手法。順列・組み合わせの列挙、数独の解法などに使用。
分割統治法
問題を小さな部分問題に分割し、各部分を再帰的に解いて統合する手法。マージソート・クイックソートが代表例。
解法パターン別攻略法
問題を見たときに、どの解法パターンを適用すべきかを判断する力が重要です。以下のキーワードに注目してパターンを見極めましょう。
| 問題のキーワード | 適用パターン | 典型的な問題例 |
|---|---|---|
| 「ソート済み配列」「2つの合計」 | Two Pointers | Two Sum(ソート済み) |
| 「連続部分配列」「最長」 | スライディングウィンドウ | 最長重複なし部分文字列 |
| 「最小・最大を求めよ」「O(log n)」 | 二分探索 | 回転ソート配列の探索 |
| 「最短経路」「レベル順」 | BFS | 迷路の最短距離 |
| 「すべての組み合わせ」「パス列挙」 | DFS/バックトラッキング | N-Queens問題 |
| 「最適解」「部分問題の重複」 | 動的計画法 | コイン問題 |
| 「区間」「局所最適で全体最適」 | 貪欲法 | 会議室の割り当て |
| 「出現回数」「重複検出」 | ハッシュマップ | Anagram検出 |
企業別の出題傾向
企業によってコーディングテストの難易度や形式が異なります。志望企業の傾向を事前に把握し、効率的に対策しましょう。
メガベンチャー
LeetCode Medium〜Hard相当の問題が多い。アルゴリズムの最適化が求められ、計算量の意識が重要。制限時間は60〜90分で2〜3問。
代表企業: サイバーエージェント・メルカリ・LINE・楽天
スタートアップ
実務に近い課題(API設計・データ処理等)が出されることが多い。アルゴリズムよりも実装力とコードの品質が重視される傾向。
代表企業: 各種SaaS企業・フィンテック企業
外資系企業
LeetCode Hard相当の問題も出題される。複数回のコーディング面接があり、ホワイトボードコーディングが実施されることも。
代表企業: Google・Amazon・Microsoft日本法人
ゲーム会社
アルゴリズムに加え、数学的な問題(幾何・確率等)が出されることがある。パフォーマンスへの意識も評価ポイント。
代表企業: Cygames・DeNA・グリー
練習の進め方とスケジュール
基礎固め
配列・文字列・ハッシュマップを使ったEasy問題を毎日2問解きます。LeetCodeのTop Interview Questionsから始めるのがおすすめです。計14問を目標に、各問題の解法を理解することが重要です。
パターン習得
Two Pointers・スライディングウィンドウ・二分探索のパターンをEasy〜Mediumで練習します。各パターンで3〜4問ずつ解き、パターン認識力を養います。計14問を目標。
応用力強化
BFS/DFS・動的計画法・バックトラッキングのMedium問題に挑戦します。解けなかった問題は解説を読んで理解し、翌日に再挑戦します。計10〜14問を目標。
模擬テスト
LeetCodeの模擬面接やAtCoderのバーチャルコンテストを使って、時間制限ありの練習を行います。本番と同じ環境で3〜5回の模擬テストを実施し、時間配分の感覚を身につけます。
おすすめ練習サイト
LeetCode
世界最大のコーディング練習プラットフォーム。2,000問以上の問題を収録。企業別の出題傾向やDiscussionでの解法共有が充実。Premium版では面接で実際に出された問題が確認可能。
AtCoder
日本発の競技プログラミングサイト。日本語の問題文が多く、初心者にも取り組みやすい。ABCコンテストのA〜C問題がコーディングテスト対策に適している。
HackerRank
多言語対応の練習サイト。実際のコーディングテストでも使用されることが多いため、UIに慣れておくメリットがある。Problem Solving分野がおすすめ。
Codility
企業のコーディングテストプラットフォームとしても広く使われている。Lessons機能で体系的にアルゴリズムを学べる。実際のテスト環境に近い形で練習可能。
本番で使えるテクニック
1. まず問題文を丁寧に読む
問題文の制約条件(入力範囲・データ型・計算量の制限)を確認します。制約からどの程度の計算量が許されるかを見積もり、適切なアルゴリズムを選択します。N ≤ 10^5ならO(N log N)以下が目安です。
2. 簡単な問題から着手する
複数問題がある場合、簡単そうな問題から解くのが鉄則です。確実に解ける問題で得点を確保してから、難しい問題に挑戦しましょう。時間配分を意識し、1問に固執しすぎないことが重要です。
3. まず愚直な解法を書く
最適解が思い浮かばない場合、まず計算量が大きくても正しい解法(ブルートフォース)を書きます。部分点が得られるケースも多く、その上で最適化を考えることで冷静に取り組めます。
4. エッジケースを確認する
空配列・1要素・最大値・負の数・重複値などのエッジケースをテストします。本番のテストケースではこれらのエッジケースが含まれることが多いため、見落としがないか最終確認しましょう。
5. コードにコメントを書く
思考プロセスや各処理の意図をコメントとして残します。採点者がコードの意図を理解しやすくなり、正解でなくても部分評価に繋がることがあります。
言語別のポイント
Python
- - 記述量が少なく解答が速い
- - 内蔵のcollections・heapqが便利
- - リスト内包表記で簡潔に書ける
- - 実行速度が遅いのがデメリット
- - 計算量が厳しい問題は注意
JavaScript/TS
- - Web系企業との親和性が高い
- - Mapオブジェクトが高速
- - 配列メソッドが豊富
- - BigIntで大きな数に対応
- - sort()のデフォルト動作に注意
Java
- - 型安全で大規模問題に強い
- - PriorityQueueが標準搭載
- - SIer系企業との親和性が高い
- - コード量がやや多くなる
- - Stream APIで簡潔に書ける場合も
よくある質問
Q.コーディングテストはどの企業で実施されますか?▾
A.Web系企業やメガベンチャーの多くがコーディングテストを実施しています。特にサイバーエージェント・メルカリ・LINE・楽天・DeNAなどの大手は必ずと言っていいほど実施します。SIerでは技術面接はありますが、コーディングテストの実施は企業によって異なります。転職エージェントに事前に確認するのがおすすめです。
Q.コーディングテストの言語は何がおすすめですか?▾
A.Python・JavaScript(TypeScript)・Javaが最もおすすめです。Pythonは記述量が少なく素早く解答できるため、コーディングテストでは特に有利です。多くの企業は使用言語を自由に選べるため、自分が最も得意な言語を使いましょう。
Q.コーディングテストの準備期間はどのくらい必要ですか?▾
A.基本的なアルゴリズムの知識がある場合は2〜3週間、ゼロから始める場合は1〜2ヶ月の準備期間を見込みましょう。毎日1〜2問のペースで練習すれば、2週間で基本的なパターンをカバーできます。重要なのは毎日コンスタントに取り組むことです。
Q.LeetCodeとAtCoderのどちらがおすすめですか?▾
A.転職のコーディングテスト対策にはLeetCodeがおすすめです。実際の面接で出題されるタイプの問題が多く、企業別の出題傾向も確認できます。AtCoderは競技プログラミング寄りですが、アルゴリズムの基礎力を鍛えるのに最適です。両方を並行して活用するのが理想的です。
Q.コーディングテストで落ちてしまった場合はどうすればいいですか?▾
A.まず落ちた原因を分析しましょう。時間切れなら解答スピードの改善、特定の分野が弱いなら集中的な学習が必要です。多くの企業では一定期間(3〜6ヶ月)後に再受験が可能です。その間に弱点を克服し、再挑戦しましょう。転職エージェントにフィードバックを確認してもらうのも効果的です。
よくある失敗と対策
コーディングテストで多くの受験者がやりがちな失敗パターンとその対策を紹介します。事前に知っておくことで、本番でのミスを防ぎましょう。
時間配分のミス
最初の問題に時間をかけすぎて、後半の問題に手が回らないケース。各問題に時間制限を設定し、制限時間を超えたら一旦次の問題に移りましょう。すべての問題を見てから解く順番を決めるのも有効です。
エッジケースの見落とし
空配列・1要素・負の数・最大値などのエッジケースを考慮しないと、非公開テストケースで落ちます。解答を提出する前に、最低でも空入力・最小入力・境界値のテストを行いましょう。
最適解にこだわりすぎる
最適な計算量の解法が思い浮かばない場合に、愚直な解法(ブルートフォース)を書かないのは大きな損失です。まず動く解法を書いて部分点を確保し、その上で最適化を考えましょう。
問題文の読み間違い
焦りから問題文を正確に読まず、異なる問題を解いてしまうケース。入力形式・出力形式・制約条件を必ず確認し、サンプルケースで動作を確認してから本格的にコーディングを始めましょう。
デバッグ力の不足
テストケースが通らない際に、効率的にデバッグできないケース。printデバッグやデバッガーの使い方に慣れておくこと、小さな入力で手動トレースする技術が重要です。
計算量(O記法)の目安
コーディングテストでは、制約条件からどの計算量の解法が求められているかを判断する力が重要です。以下の目安を覚えておきましょう。
| Nの範囲 | 許容される計算量 | 代表的なアルゴリズム |
|---|---|---|
| N ≤ 20 | O(2^N), O(N!) | 全探索・バックトラッキング |
| N ≤ 1,000 | O(N^2) | 二重ループ・DP |
| N ≤ 100,000 | O(N log N) | ソート・二分探索 |
| N ≤ 1,000,000 | O(N) | 線形探索・ハッシュマップ |
| N ≤ 10^9 | O(log N), O(1) | 二分探索・数学的解法 |
一般的に、1秒あたり約10^8回の計算が実行できると考えます。制約条件のNが10^5なら、O(N log N)以下の解法が求められている可能性が高いです。この判断力は練習を重ねることで自然に身につきます。
問題を解くときのテンプレート
コーディングテストの問題を効率的に解くためのステップバイステップのテンプレートを紹介します。このフレームワークに沿って考えることで、冷静に問題に取り組めます。
1. 問題を理解する
問題文を2回読み、入力・出力・制約条件を確認。サンプルケースを手動でトレースして問題の意味を把握する。
2. パターンを特定する
制約条件とキーワードから、適用すべきアルゴリズムパターン(Two Pointers・DP・BFS等)を特定する。
3. 愚直な解法を考える
まずは計算量を気にせず、正しい解法(ブルートフォース)を考える。これで部分点を確保できる。
4. 最適化を検討する
愚直な解法のボトルネックを特定し、データ構造の変更やアルゴリズムの改良で計算量を改善する。
5. コーディング
変数名を分かりやすくし、コメントで意図を記載しながらコードを書く。
6. テスト・検証
サンプルケース + エッジケース(空配列・1要素・最大値・負の数)でテストを行い、提出する。