コーディング面接対策: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) など、解答後に必ず述べる
- エッジケースを確認: 空配列、負の数、重複値など