面接体験談

Microsoft 新卒ソフトウェアエンジニア 面接体験談(2020年)

Microsoft新卒ソフトウェアエンジニア·記載なし·面接時期: 2020年4月オファー獲得

更新日: 2026年7月17日

採用マネージャーとの電話選考を経て、候補者はMicrosoftの新卒ソフトウェアエンジニアポジションのバーチャル面接ループに招待され、4月中旬に面接が行われた。ループは4回連続の面接で構成されており、各回で経歴や過去のプロジェクトについての短い会話と1問のコーディング問題が組み合わされていた。

4つのラウンドを通じて、コーディング問題は古典的な素数の篩から、グリッドを使った単語ゲーム、バックスペース文字を含む文字列比較のパズル、そして配列のマージからソート全般についてのより広い議論へと発展する問題まで多岐にわたった。候補者はこのループを終えてオファーを獲得した。

選考プロセス

  1. 電話選考

    採用マネージャーとの初回電話選考を経て、バーチャル面接ループへの招待を受けた。

  2. バーチャル面接ループ

    4回連続の面接があり、各回で簡単な経歴・行動面接の議論と1問のコーディング問題が組み合わされていた。

  3. 結果

    ループの後、候補者はオファーを受け取った。

面接1

経歴についての会話と素数の篩

  • 経歴と過去のプロジェクトについての質問。
  • コーディング:2からnまでのすべての素数を求める。

候補者はまずブルートフォースの二重ループによるアプローチ(O(n^2))を説明し、その後より優れた解法としてエラトステネスの篩を提示した。

フォローアップ:篩の中でループの上限としてi*iを使うと、nが大きい場合にオーバーフローする可能性があるため、候補者はそれに対応するよう実装を調整した。

面接2

チーム内対立についての行動面接質問とグリッド型単語探索のコーディング問題

  • 行動面接:チーム内の対立に対処した経験について説明してください。
  • コーディング:n×nの文字グリッド上で、有効な単語を作ると整数の賞金が得られるWordament風のゲームを設計する。

候補者のアプローチは、グリッドの各セルからDFSを実行して有効な単語を見つけるというものだった。

フォローアップ:制限時間が決まっている場合(例えばゲームが2分で終了する場合)、獲得できる賞金の合計を最大化するにはどうすればよいか。

面接3

Microsoftを志望する理由とバックスペース文字列比較の問題

  • 経歴、興味、そしてなぜMicrosoftを志望するのか。
  • コーディング:バックスペースを表す'#'文字(直前の文字を削除する)を含む可能性のある2つの文字列AとBが与えられたとき、バックスペースを適用した後に両者が等しいかどうかを判定する。

候補者はまずスタックを使ったアプローチについて説明し、その後、明示的なスタックを構築せず文字列を走査することでより少ない追加スペースで済む代替解法について議論した。

面接4

それまでの面接についての振り返りとマージソート

  • それまでの面接がどうだったかについての一般的な議論、経歴、過去のプロジェクト(候補者のデータベース関連の経歴を含む)についての話。
  • コーディング:2つのソート済み配列をマージする問題。そこからk個のソート済み配列のマージや、マージソートを反復的に実装する方法についての議論に発展した。

学びのポイント

  • エラトステネスの篩をすぐに書けるようにしておくこと。nが大きい場合にループの上限でi*iを直接比較すると整数オーバーフローが起きる罠についても押さえておく。
  • DFSを使ったグリッド走査問題を練習しておくこと。単語探索やワードゲームの変種はコーディングラウンドの問題として十分あり得る。
  • バックスペース('#')のような特殊文字を含む文字列比較問題については、スタックを使った解法と、よりスペース効率の良い反復的な代替解法の両方を説明できるように準備しておくこと。
  • チーム内対立についての具体的なエピソードを事前に用意しておくこと。行動面接の質問は独立したラウンドではなく、コーディング問題と同じラウンド内で組み合わされていた。
  • マージソートの基礎は2配列のケースを超えて重要になる。2つのソート済み配列をマージする解答から、k-wayマージの議論や反復的なマージソートの実装へと発展させられるように準備しておくこと。

出典

質問と選考プロセスの事実は、下記リンクの候補者本人の公開投稿に基づきます。本文は当サイトによる再構成です。

候補者本人による英語の公開体験談を翻訳(出典: LeetCode Discuss)