長期準備
マイクロソフトのオファーを取得したい場合は、インタビューの数週間前にスプリントに頼るだけでは不十分です。細かい水が流れ、強度の包括的な改善が最優先事項である場合にのみ。

基本知識
言うまでもなく、優れたプログラマーとして、プログラミング言語、データ構造、アルゴリズム、データベース、オペレーティングシステム、ネットワークの基本的なスキルを習得する必要があります。

質問を磨きます
ハン教師がその年に仕事を見つけるために卒業したとき、彼は彼がハイタオの「剣が提供することを言及する」教師を見ました。これは非常に包括的で読む価値がありました。
近年、LeetCodeでますます人気があります。多くの子供の靴が尋ねます、どれだけのブラシが適切ですか？もちろん、それは多くの良さです〜しかし、一般的に、ハン教師は、少なくとも50の質問が磨かれていると考えています。それはより合理的な数です。もちろん、以前にACMまたはNOIPを行ったことがある場合は、手を練習してそれを見つけるだけでいいかもしれません。

質問を磨くときは、問題を制御する時間に注意してください。質問が行われたとしても、あなた自身のアイデアを広げるために他の人の解決策を学ぶ必要があります。質問は量だけでなく、品質にも注意を払う必要があります。誰もがVSコードにleetcodeを使用することをお勧めします。

「剣は提供することを指す」といえば、私はその年の興味深いことも考えています。私が昼食をとると、私は会社の近くを歩いて、たまたま彼のハイタオに会いました。彼はその時にマイクロソフトに来て、酔っていたさまざまな奇妙で奇妙な問題に遭遇したと言いました。ハハ〜私は考えていました、たぶん当時インタビューしたインタビュアーは、彼の「申し出」でマイクロソフトを見ていました。それは彼の脳を悩ませているに違いありません。

英語
外国企業で働いているかどうかにかかわらず、技術的な問題に遭遇した場合は、英語を使用してGoogleまたはBingで技術関連のコンテンツを検索する必要があります。多くの最初の技術文書やブログがあります。英語で学ぶ能力がない場合、本当に優れたプログラマーになることは困難です。

誇り高いスタックオーバーフロープログラマを作成することも成功する必要があります。

Microsoftでは、一部のグループは、米国本社または他の国の同僚と協力する必要があります。外国の同僚や笑い声と話すことができるかどうかは、通常の蓄積に依存しています。

オープンソースプロジェクト
近年、Microsoftはますますオープンソースを成長させてきました。VSコードが最良の例です。優れたオープンソースプロジェクトがある場合は、追加のポイントである必要があります。独自のオープンソースプロジェクトがない場合は、他のオープンソースプロジェクトに積極的に参加することも良い選択です。PRを送信したり、言及したりできます。

オープンソースプロジェクトに参加することも、あなたにとって大きな改善になります。ハン先生自身が良い例です。
準備
面接したいポジションについては、より多くの努力を得るためにターゲットを絞った準備をすることができます。

履歴書
英語の履歴書を準備します
事実は、特定のテクノロジースタックに本当に熟練していない限り、「熟練した」という言葉を注意して使用します。
インタビューの位置については、焦点を強調してください。たとえば、あなたは私たちのJavaグループであり、履歴書のJava関連のプロジェクトとテクノロジースタックの強調に焦点を当てることができます。
質問をするホワイトボード
マイクロソフトのインタビューは通常、ホワイトボードで行われます。IDEを離れた後、高品質のコードを簡単に記述できますか？インタビューの前にIDEを離れ、いくつかのトレーニングを実施することをお勧めします。一般的に言えば、インタビューする際に言語には難しい要件はありません。質問をする場合は、インタビュアーに明確に伝える限り、言語のAPIの特定の署名またはパラメーターを忘れておくこともありません。私たちは、言語のAPIの熟練度を調べていません。

インタビュープロセス
Microsoftのインタビュープロセスは一般的に次のとおりです。1ラウンドの電話技術インタビュー +フィールド技術インタビューの4〜5ラウンド（45〜60分 /ラウンド）。ほとんどの企業のインタビューの状況と同様に、インタビューホイールが高いほど、インタビュアーが高くなります。一般的に言えば、インタビュアーの最後のラウンドはあなたのグループの大ボスです。インタビューの各ラウンドは、一般に3つの側面に分けられます。自己導入、プロジェクトについて話し、質問をします。

自己紹介
自己紹介するときは、焦点を強調し、利点を示してください。また、自己導入の英語版を準備します。もちろん、外国人の子供の靴のインタビュアーに出会うかもしれません。

話したプロジェクト
自己導入後、インタビュアーは一般に、履歴書と自己導入に基づいて質問をし、プロジェクトとテクノロジーのスタックについて話します。最も重要な点は、「事実から真実を求める」ことです。履歴書に記載されていることはすべて、答えと話すことができなければなりません。プロジェクトを紹介するときは、スターインタビュー方法を使用できます。

状況：短いプロジェクトの背景
タスク：完了したタスク
アクション：特定の実装、使用されるテクノロジー
結果：あなた自身の貢献
質問
もちろん、インタビューの焦点はもちろんです。インタビュアーが質問を言った後、最初にニーズを理解し、すぐにコードを書く必要はありません。インタビュアーに尋ねるのが得意で、ニーズをはっきりと理解し、時間をかけて思考について考える。アイデアを持った後、コードに急いではいけません。最初にインタビュアーとあなたの考えを伝えます。インタビュアーが大丈夫だと感じたら、あなたは書き始めることができます。最初は最高のアルゴリズムを考えない場合は、最初に簡単な解決策を考え、インタビュアーに自分が最良のアイデアではないかもしれないことを伝えることもできます。おそらく、コミュニケーションの過程で、新しいインスピレーションを得るか、インタビュアーが現在の計画を最初に書いていることを認識し、後で最適化することもできます。

もっとコミュニケーションをとる！もっとコミュニケーションをとる！もっとコミュニケーションをとる！3回言う重要なこと！

質問を書くときは、コードスタイルと名前の仕様に注意を払い、さまざまなコーナーケースを検討してください。トピックを書いた後、複雑さと空間の複雑さを正確に分析する必要があります。インタビュアーは、いくつかのテストケースを書くこともできます。テストケースを設計するときは、基本的な機能、境界条件、およびパフォーマンステストを検討する必要があります。
长期准备
想要拿到微软 offer，只靠面试前几周的冲刺是万万不够的。只有细水长流，把自己的实力全面提升，才是重中之重。

基础知识
这个不用多说，作为一个优秀的程序员必须要很好地掌握编程语言、数据结构、算法、数据库、操作系统、网络等基本功。

刷题
韩老师当年毕业找工作时，看的是何海涛老师的《剑指Offer》，讲的非常全面，值得一读。
近些年来，刷 LeetCode 越来越流行。有很多童鞋会问，刷多少比较合适呢？当然是多多益善咯~ 不过一般来说，韩老师觉得，至少刷个 50 题，是个比较合理的数量。当然，如果你之前搞过 ACM 或者 NOIP，你可能只需要练练手，找回当年的感觉就行了。

在 LeetCode 刷题时，要注意控制做题的时间。做完题目就算 AC 了，也要参考学习一些其他人的解决方案，开阔自己的思路。刷题不仅要有数量，还要注重质量。推荐大家使用 LeetCode for VS Code: Offer 收割利器 进行刷题。

说到《剑指Offer》，还想起当年一件有意思的事。有次吃完午饭，在公司附近散步，正好遇到了何海涛，他说他那时来面微软，遇到了各种奇形怪状的难题，也是醉醉的。哈哈~ 我在想，也许当时面试他的面试官都是看的他的《剑指Offer》面进的微软，一定是要绞尽脑汁，出一些何老师没有遇到的题吧~

英语
无论你是否在外企工作，当遇到技术问题时，用英语在 Google 或者 Bing 进行技术相关内容的搜索是必备的能力。有大量的第一手的技术文档或是博客都是英语的，如果你没有用英语进行学习的能力，很难成为一个真正优秀的程序员。

做一个骄傲的 Stack Overflow 程序员也是走向成功的必经之路。

在微软的话，有些组是需要和美国总部或是其他国家的同事合作的，能否与国外同事谈笑风生，就要看你平时的积累了。

开源项目
近些年来，微软越来越拥抱开源。VS Code 就是一个最好的例子。如果你有一个好的开源项目，一定是一个加分项。如果没有自己的开源项目，积极地参与到其他开源项目，也是个很好的选择，可以发 PR 也可以提 Issue。

参与开源项目，对自己也会是一个很大的提升。韩老师自己就是个很好的例子。
针对性准备
针对所要面试的职位，做出有针对的准备，才能事半功倍。

简历
准备英文简历
事实就是：除非你是真的精通某个技术栈，否则慎用“精通”二字。
针对面试的职位，突出重点：比如你是面我们的 Java 组，在简历中可以着重突出 Java 相关的项目和技术栈。
白板做题
微软面试一般是在白板上做题。离开了 IDE，你是否还能轻松写出高质量的代码？建议在面试之前，脱离 IDE，进行一些训练。一般来说在面试做题时，对语言没有硬性要求。如果做题时，忘了某个语言的 API 具体的签名或是参数，也不是问题，只要和面试官说清楚就行。我们并不是考察你对某个语言的 API 有多熟练。

面试流程
微软的面试流程一般是：1 轮电话技术面试 + 4-5 轮现场技术面试（ 45-60 分钟 /轮）。和大多公司的面试情况一样，面试轮数越往后，面试官的基本越高。一般来说，最后一轮的面试官就是你面的组的大老板了。每一轮面试一般分为三个方面：自我介绍、聊项目、做题。

自我介绍
自我介绍时，要突出重点，把自己的优势都展示出来。而且也要准备英语版本的自我介绍。当然，你也可能遇到外国童鞋面试官，那你就要全程英语面啦~

聊项目
自我介绍之后，面试官一般会根据简历和你的自我介绍进行提问，聊聊你的项目和技术栈。最重要的一点，还是“实事求是”。自己简历上所提到的所有东西一定要能对答如流谈笑风生。介绍项目时，可以使用 STAR 面试法：

Situation：简短的项目背景
Task：自己完成的任务
Action：具体实现，用到的技术
Result：自己的贡献
做题
做题当然时面试的重点啦~ 在面试官说出题目后，一定一定要先了解清楚需求，不要马上就蒙头写代码。要善于向面试官提问，把需求了解清楚，然后花时间去想一想思路。有了思路后，也不要急于撸代码。先和面试官沟通下你的想法，如果面试官觉得 OK，那就可以开始写了。如果一开始没有想出最佳的算法，也可以先想个简单的方案，和面试官说说你的可能不是最优解的想法。也许在沟通过程中，你又会有新的灵感，或者面试官也认可你先写当前的方案，可以之后再优化。

多沟通！多沟通！多沟通！重要的事说三遍！

在写题时，要注重代码风格和命名规范，也要考虑到各种 corner case。写完题目后，要能准确地分析出时间复杂度和空间复杂度。面试官可能还会让你写一些测试用例。在设计测试用例时，对于基本功能、边界情况、性能测试，都要考虑到。