対象読者

  • STEM系で、学士〜博士過程の学生

必要なもの

新卒に限って言えば

  • 学歴
  • コーディング力
  • 業務経験

ではどれぐらいのレベルが要求されるかというが気になるだろうが、定量化するのは難しいのでこれまでみたことがあるキャリアの例をいくつか示す。なるべく再現性と納得性のあるケースを集めている

  • 東大理三 → Google intern → Google
  • 東大情報理工学研究科 → Google intern → Google
  • 東大情報理工学研究科 → ベンチャーインターン → LINE
  • 東大情報理工学部 → Ph.D at california southern university → Meta
  • 早稲田CS → ベンチャー・メガベンチャーインターン → Woven by Toyota
  • 立命館情報理工学研究科 → ベンチャーインターン → AWS

自分の現在地と擦り合わせることで不足しているものを推測できるのでは

面接

Leetcodeの学びの力は強力だと思う。競プロをあまりやっていないから現在の感覚になるが、Leetcodeの方がはるかに学べるものが多いし、実際の面接への応用性も高いと感じている なので、色々やってみて今感じているのは、競プロの演習問題を積むより、Leetcodeの演習を積んだ方がいい気がする ただ、説明が日本語で読める点などを含めると、今考えている最適な学習ルートはこう

  1. 『問題解決力を鍛える!アルゴリズムとデータ構造』の基本問題をやる。アルゴリズムなどの概要を理解する概要を掴んで、一度自分の言葉で説明できるようになれればいい。繰り返しやる必要はない気がする
  2. arai60を身につける。これは完全に解けるようになる必要がある。そして、必要ならその背景にあるアルゴリズムやデータ構造を単独で練習してもいい。これはAIに問題を作ってもらったり、そういう問題を探すことでも対応可能

arai60とは

新井康平(Kohei Arai)氏がLeetCodeの数千問から厳選した60問。「これら60問を30分以内にエラーなく実装できれば、コーディング面接対策は完了」 というベンチマークを提供する。

一般社団法人ソフトウェアエンジニアリング協会(SWE協会)がGoogleなどのBigTech就職対策教材として採用しており、Discordでの練習会・レビューセッションで使用されている。

練習方法(SWE協会推奨)

Step 1: 自力で解く

何も見ずに問題を解く。5〜10分考えてわからなければ答えを見る(粘りすぎない)。

Step 2: 洗練された解法を学ぶ

  • 他の実装者のコード(GitHub・LeetCode Discussion)
  • Pythonの標準ライブラリ公式ドキュメント(collections, heapq, bisect等)
  • より良い計算量の解法を理解する

Step 3: 反復練習

10分以内にエラーなく実装できるまで反復する。3回連続で書けるようになることが目標。

面接での立ち回り方

  • 問題を繰り返し言語化する — 「つまり〜〜をすればよい」と自分の言葉で確認
  • 例を手で動かす — 小さな入力で期待する出力を確認してから実装
  • 計算量を先に言う — 「時間O(n)、空間O(1)で解けます」と宣言してから実装
  • エッジケースを明示する — 空配列・null・重複値などを事前に確認