Microsoft面接のLeetCode対策
文責 Aaron Cao · 更新

LeetCodeはMicrosoftのコーディング面接の基本動作をカバーするが、面接本番そのものは練習できない。問題の多くは中級レベルに集中しており、面接で評価されるのはアプローチの説明の仕方、追加される制約条件の理解、そしてそれに応じた調整であり、これらは一人での演習では鍛えられない。
LeetCodeをひたすら解くことは本当に対策になるのか?
「応募する前に数百問を解き終えておけ」というアドバイスを目にしたことがあるはずで、その数字に本当に意味があるのか知りたいと思っているだろう。このセクションでは、LeetCodeが実際に鍛えてくれる部分と、まったく触れられない部分を切り分け、時間を効果が出るところに使えるようにする。結論を先に言えば、必要な瞬発的な想起力は身につくが、実際に評価される「パフォーマンス」の部分は練習できない。
実際に鍛えられる部分は本物だ。問題がどのデータ構造を求めているかを見抜くこと、コンパイラなしで正しいコードを書くこと、書いたばかりのコードの計算量を把握していること——これらはすべて必要な能力であり、反復こそがそれらを無意識にできるようにする方法だ。
抜け落ちているのは、対人的な要素すべてだ。なぜハッシュマップを選んだのかと途中で口を挟まれることはない。問題の途中で制約条件を追加され、その反応を観察されることもない。間違ったアイデアを声に出し、見知らぬ相手が聞いている前でそれを訂正する必要もない。まさにそこが、Microsoftの面接が観察しようとしている部分だ。
Microsoftのコーディング面接ではどんなパターンが出るのか?
網羅性は問題数よりも重要で、繰り返し出るパターンは次のように短くまとめられる。
- 二重ポインタとスライディングウィンドウ。配列や文字列でよく使われ、しばしばインプレース処理が求められる。
- ハッシュマップ。難しいのは検索そのものではなく、何をキーにするかを決める部分だ。
- 木の走査。深さ優先と幅優先、パス和、最小共通祖先。
- グラフ探索。グリッド問題、連結成分、重みなしグラフの最短経路。
- 連結リスト。反転、マージ、循環検出。
- 取り組みやすい動的計画法。一次元の状態を持つ、コイン問題や階段問題の系統。
有効な見切りテストがある。解いたことのある問題を無作為に選び、そのパターンがなぜ当てはまるのか、別の方法だと何がうまくいかないのかを声に出して説明してみることだ。上記のリスト全体でこれができるなら、問題数を増やしても得るものは少ない。他社の面接プロセスの分解は企業別面接トピックハブにまとめてある。
面接はLeetCodeを解くのと何が違うのか?
練習方法を変えるべき違いが4つある。まず、コードを書く前に話す。面接官はコードが出てくる前にアプローチと計算量の見積もりを期待しているからだ。制約条件は問題の途中で追加され、その追加質問こそが本当の問いになる。「提出」ボタンはないので、エラーメッセージを読むのではなく、自分でエッジケースを考え抜く必要がある。そしてこれらすべてが、通常は共有エディタ上で、誰かに見られながらMicrosoft Teamsで行われる。
あるミッドレベル職を目指す候補者は、200問以上を解き終えていたにもかかわらず、面接プロセスで行き詰まっていた。練習セッションの録音を確認すると原因がわかった。最初の1行のコードが出てくるまでに11分間の沈黙があったのだ。解決策は問題数を増やすことではなく、すでに解いたことのある問題を3問選び、すべての判断を声に出しながら解き直すことだった。
このような時間を計った口頭でのリハーサルをAI面接官相手に行うには、模擬面接ページが使える。
「解ける」と「説明できる」の差を埋める
対策の最後の期間は、本番のパフォーマンス練習に充てよう。タイマーを使いながら見慣れた問題を声に出して解き直し、コードを書く前にアプローチを述べ、聞かれなくても自分から計算量を伝えるようにする。セッションを録音し、沈黙の時間に耳を傾けよう。それこそが面接官が体感している部分だからだ。
SubcueAIは、コーディング面接ではなく、面接プロセスの口頭でのラウンド向けに作られている。ネイティブのmacOSおよびWindowsアプリはシステム音声とマイクの両方を取り込み、ローカルのフローティングオーバーレイに提案を表示する。ブラウザ拡張機能のサイドパネルは、Chromiumブラウザ上のミーティングタブに対してライブアシストを行い、そのタブの音声のみを取り込む。ミーティングボットが通話に参加することはなく、ミーティングページに何かが注入されることもない。
この限界ははっきり述べておく価値がある。Microsoftのコーディング面接は通常、画面共有を伴い、画面上のものはすべてその共有範囲に含まれる。アシスタントが役立つのは、リクルーターとの会話、行動面接、そして設計に関するディスカッションだ。これらのラウンドで何を取り込み、何を保存するかについてはセキュリティページで確認できる。