コンテンツにスキップ

コーディング面接対策:Blind75問題セットの活用法

問題

コーディング面接があって勉強時間が限られているなら、これだけ練習すればいいよ → neetcode.io/practice/blind75 これは面接で一番よく出る問題のまとめだよ だから来年また面接があるなら、進捗をリセットしてまた解き直してね

解答

Blind 75 はFacebook/Meta のエンジニアが厳選した75問のリスト。LeetCode の数千問から「面接で実際に出た頻出パターン」のみを絞り込んだもの。

カテゴリ別内訳

カテゴリ 問題数 代表問題
Array 8 Two Sum, Best Time to Buy Stock
Binary 5 Sum of Two Integers
Dynamic Programming 11 Climbing Stairs, Longest Common Subsequence
Graph 8 Clone Graph, Number of Islands
Interval 5 Merge Intervals
Linked List 6 Reverse Linked List, Detect Cycle
Matrix 4 Set Matrix Zeroes
String 10 Valid Anagram, Group Anagrams
Tree 11 Invert Binary Tree, Lowest Common Ancestor
Heap 3 Top K Frequent Elements

解説

なぜ Blind 75 が効果的か

  • カバレッジが高い: 面接で出るパターンの 80% 以上をカバー
  • 繰り返し最適: 解法パターンを体に染み込ませるため、定期的にリセットして解き直す価値がある
  • NeetCode の解説が優秀: 動画で直感的に理解できる

学習順序の推奨

1. Array & Hashing     ← 最初に土台を作る
2. Two Pointers
3. Sliding Window
4. Stack
5. Binary Search
6. Linked List
7. Trees
8. Tries
9. Heap / Priority Queue
10. Backtracking
11. Graphs
12. Advanced Graphs
13. 1-D DP
14. 2-D DP
15. Greedy
16. Intervals
17. Math & Geometry
18. Bit Manipulation

Two Sum の例(頻出パターン: HashMap)

def two_sum(nums: list[int], target: int) -> list[int]:
    seen = {}  # value -> index
    for i, num in enumerate(nums):
        complement = target - num
        if complement in seen:
            return [seen[complement], i]
        seen[num] = i
    return []

Sliding Window パターン(文字列問題に多い)

def length_of_longest_substring(s: str) -> int:
    char_set = set()
    left = 0
    max_len = 0
    for right in range(len(s)):
        while s[right] in char_set:
            char_set.remove(s[left])
            left += 1
        char_set.add(s[right])
        max_len = max(max_len, right - left + 1)
    return max_len

面接でのポイント

  • 声に出して考える: 問題を見てすぐコードを書かず、まず「どのデータ構造を使うか」「計算量はどうなるか」を言語化する
  • 進捗をリセットする効果: 一度解いた問題でも時間が経つとパターンを忘れる。定期的なリセットで知識の定着度を確認できる
  • 時間計算量を必ず言う: O(n)、O(n log n) など、解答後に必ず述べる
  • エッジケースを確認: 空配列、負の数、重複値など