长期准备
想要拿到微软 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。写完题目后，要能准确地分析出时间复杂度和空间复杂度。面试官可能还会让你写一些测试用例。在设计测试用例时，对于基本功能、边界情况、性能测试，都要考虑到。
สำหรับการเตรียมตัวระยะยาว หากต้องการรับข้อเสนอจาก Microsoft แค่อาศัยความเร่งรีบภายในไม่กี่สัปดาห์ก่อนการสัมภาษณ์ก็ไม่เพียงพอ สิ่งที่สำคัญที่สุดคือการปรับปรุงความแข็งแกร่งของตนเองอย่างครอบคลุม ไม่จำเป็นต้องพูด ความรู้พื้นฐาน ในฐานะโปรแกรมเมอร์ที่ยอดเยี่ยม คุณต้องมีทักษะพื้นฐานที่ดี เช่น ภาษาโปรแกรม โครงสร้างข้อมูล อัลกอริธึม ฐานข้อมูล ระบบปฏิบัติการ และเครือข่าย เมื่อคุณ Han กำลังมองหางานหลังจากสำเร็จการศึกษา เขาอ่าน "Sword Pointer Offer" ของ Mr. He Haitao เนื้อหาครอบคลุมมากและคุ้มค่ากับการอ่าน การแปรงฟัน LeetCode ได้รับความนิยมมากขึ้นในช่วงไม่กี่ปีที่ผ่านมา รองเท้าเด็กหลายๆ คนจะถามว่า แปรงฟันเท่าไหร่จึงจะเหมาะสม? แน่นอนว่ายิ่งสนุกมากขึ้นเท่านั้น~ แต่โดยทั่วไปแล้ว ครูฮันคิดว่าคำถามอย่างน้อย 50 ข้อเป็นจำนวนที่สมเหตุสมผลมากกว่า แน่นอนว่า หากคุณเคยทำ ACM หรือ NOIP มาก่อน คุณอาจต้องฝึกฝนและดึงความรู้สึกในตอนนั้นกลับคืนมา เมื่อเขียนคำถามใน LeetCode คุณควรใส่ใจกับการควบคุมเวลาในการทำคำถาม แม้ว่าคุณจะได้ AC หลังจากตอบคำถามแล้ว คุณก็ควรอ้างอิงและเรียนรู้วิธีแก้ปัญหาของผู้อื่นเพื่อขยายความคิดของคุณให้กว้างขึ้น ในการตอบคำถามเราไม่ควรเน้นเพียงปริมาณแต่ต้องคำนึงถึงคุณภาพด้วย ขอแนะนำให้คุณใช้ LeetCode สำหรับ VS Code: Offer ซึ่งเป็นเครื่องมือเก็บเกี่ยวอันทรงพลังสำหรับการแก้ปัญหา เมื่อพูดถึง "ข้อเสนอตัวชี้ดาบ" ฉันยังจำเหตุการณ์ที่น่าสนใจในปีนั้นได้ ครั้งหนึ่งหลังอาหารกลางวันฉันกำลังเดินไปใกล้บริษัทและบังเอิญไปเจอเหอไห่เทาเขาบอกว่าตอนที่มาพบกับไมโครซอฟต์เขาเจอปัญหาแปลกๆทุกชนิดและเมาเหล้า ฮ่าๆ~ ฉันคิดว่าบางทีผู้สัมภาษณ์ที่สัมภาษณ์เขาในตอนนั้นคงได้เข้า Microsoft ทั้งหมดแล้วหลังจากดู "Sword Pointer Offer" ของเขา เลยต้องใช้สมองอย่างหนักในการถามคำถามที่ครูเขาไม่เคยเจอ~ อังกฤษ ไม่ว่าคุณจะทำงานในบริษัทต่างประเทศหรือไม่ก็ตาม เมื่อคุณประสบปัญหาทางเทคนิค การค้นหาเนื้อหาที่เกี่ยวข้องกับเทคโนโลยีบน Google หรือ Bing ในภาษาอังกฤษก็เป็นสิ่งที่ต้องมี มีเอกสารทางเทคนิคหรือบล็อกภาษาอังกฤษโดยตรงจำนวนมาก หากคุณไม่มีความสามารถในการเรียนรู้ภาษาอังกฤษ การเป็นโปรแกรมเมอร์ที่ยอดเยี่ยมอย่างแท้จริงคงเป็นเรื่องยาก การเป็นโปรแกรมเมอร์ Stack Overflow ที่ภาคภูมิใจก็เป็นหนทางเดียวที่จะประสบความสำเร็จเช่นกัน ที่ Microsoft บางกลุ่มจำเป็นต้องร่วมมือกับเพื่อนร่วมงานในสำนักงานใหญ่ของสหรัฐอเมริกาหรือประเทศอื่น ๆ ไม่ว่าคุณจะสามารถพูดคุยและหัวเราะกับเพื่อนร่วมงานชาวต่างชาติได้หรือไม่นั้นก็ขึ้นอยู่กับการสะสมตามปกติของคุณ โครงการโอเพ่นซอร์ส ในช่วงไม่กี่ปีที่ผ่านมา Microsoft ได้เปิดรับโอเพ่นซอร์สมากขึ้น VS Code เป็นตัวอย่างที่สำคัญ หากคุณมีโครงการโอเพ่นซอร์สที่ดี จะต้องได้รับการพิจารณาเป็นพิเศษ หากคุณไม่มีโครงการโอเพ่นซอร์สเป็นของตัวเองก็เป็นทางเลือกที่ดีในการเข้าร่วมในโครงการโอเพ่นซอร์สอื่น ๆ คุณสามารถส่ง PR หรือส่งปัญหาได้ การเข้าร่วมในโครงการโอเพ่นซอร์สจะเป็นการพัฒนาที่ดีสำหรับตัวคุณเองเช่นกัน ครูฮั่นเองก็เป็นตัวอย่างที่ดี การเตรียมการแบบกำหนดเป้าหมาย: การเตรียมการแบบกำหนดเป้าหมายสำหรับตำแหน่งที่คุณต้องการสัมภาษณ์เท่านั้นที่จะทำให้คุณได้รับผลลัพธ์สองเท่าโดยใช้ความพยายามเพียงครึ่งเดียว ข้อเท็จจริงของการเตรียมเรซูเม่เป็นภาษาอังกฤษคือ: เว้นแต่คุณจะเชี่ยวชาญด้านเทคโนโลยีบางอย่างจริงๆ ให้ใช้คำว่า "เชี่ยวชาญ" ด้วยความระมัดระวัง สำหรับตำแหน่งที่กำลังสัมภาษณ์ ให้เน้นประเด็นสำคัญ: ตัวอย่างเช่น หากคุณกำลังสัมภาษณ์ทีม Java ของเรา คุณสามารถเน้นโครงการที่เกี่ยวข้องกับ Java และกลุ่มเทคโนโลยีในเรซูเม่ของคุณ คำถามบนไวท์บอร์ด โดยทั่วไปแล้ว การสัมภาษณ์ของ Microsoft จะเกี่ยวข้องกับคำถามบนไวท์บอร์ด หากไม่มี IDE คุณจะยังสามารถเขียนโค้ดคุณภาพสูงได้อย่างง่ายดายหรือไม่ ขอแนะนำให้ออกจาก IDE และจัดการฝึกอบรมก่อนการสัมภาษณ์ โดยทั่วไปแล้ว ไม่มีข้อกำหนดด้านภาษาที่เข้มงวดในการตอบคำถามในการสัมภาษณ์ หากคุณลืมลายเซ็นหรือพารามิเตอร์เฉพาะของ API ของภาษาใดภาษาหนึ่งเมื่อคุณตอบคำถาม ก็ไม่ใช่ปัญหา เพียงทำให้ผู้สัมภาษณ์ชัดเจน เราไม่ได้ทดสอบว่าคุณมีความเชี่ยวชาญในการใช้ API ของภาษาใดภาษาหนึ่งเพียงใด กระบวนการสัมภาษณ์ โดยทั่วไป กระบวนการสัมภาษณ์ของ Microsoft คือ: การสัมภาษณ์ด้านเทคนิคทางโทรศัพท์ 1 รอบ + การสัมภาษณ์ด้านเทคนิคถึงสถานที่ 4-5 รอบ (45-60 นาที/รอบ) เช่นเดียวกับการสัมภาษณ์ในบริษัทส่วนใหญ่ ยิ่งรอบการสัมภาษณ์ล่าช้า คุณสมบัติของผู้สัมภาษณ์ก็จะยิ่งสูงขึ้นตามไปด้วย โดยทั่วไปแล้ว ผู้สัมภาษณ์ในรอบที่แล้วคือหัวหน้าของกลุ่มที่คุณกำลังสัมภาษณ์ โดยทั่วไปการสัมภาษณ์แต่ละรอบจะแบ่งออกเป็น 3 ด้าน ได้แก่ การแนะนำตัวเอง การพูดคุยเกี่ยวกับโครงการ และการทำคำถาม การแนะนำตัวเอง เมื่อแนะนำตัวเองคุณควรเน้นประเด็นสำคัญและแสดงจุดแข็งของคุณ คุณควรเตรียมการแนะนำตัวเองเป็นภาษาอังกฤษด้วย แน่นอน คุณอาจพบกับผู้สัมภาษณ์ชาวต่างชาติ ดังนั้นคุณจะต้องสัมภาษณ์เป็นภาษาอังกฤษ~ หลังจากพูดคุยเกี่ยวกับโครงการและแนะนำตัวเองแล้ว ผู้สัมภาษณ์มักจะถามคำถามตามประวัติย่อและการแนะนำตัวเองของคุณ และพูดคุยเกี่ยวกับโครงการของคุณ และกองเทคโนโลยี จุดที่สำคัญที่สุดคือการ “แสวงหาความจริงจากข้อเท็จจริง” ทุกสิ่งที่กล่าวถึงในเรซูเม่ของคุณจะต้องสามารถตอบได้อย่างง่ายดาย เมื่อแนะนำโครงการ คุณสามารถใช้วิธีสัมภาษณ์ STAR: สถานการณ์: พื้นหลังโครงการโดยย่อ งาน: งานที่คุณทำเสร็จแล้ว การดำเนินการ: การใช้งานเฉพาะ เทคโนโลยีที่ใช้ ผลลัพธ์: การมีส่วนร่วมของคุณเอง แน่นอนว่าการทำคำถามถือเป็นจุดเน้นของการสัมภาษณ์ ~ ในตัวผู้สัมภาษณ์ หลังจากระบุหัวข้อแล้วคุณต้องเข้าใจข้อกำหนดให้ชัดเจนก่อนและไม่คลุมหัวและเขียนโค้ดทันที ถามคำถามกับผู้สัมภาษณ์ได้ดี เข้าใจความต้องการอย่างชัดเจน จากนั้นใช้เวลาคิดเกี่ยวกับแนวคิดต่างๆ เมื่อคุณมีไอเดียแล้ว อย่ารีบเร่งเขียนโค้ด สื่อสารความคิดของคุณกับผู้สัมภาษณ์ก่อน หากผู้สัมภาษณ์คิดว่ามันโอเค คุณก็สามารถเริ่มเขียนได้ หากคุณไม่ได้คิดอัลกอริธึมที่ดีที่สุดตั้งแต่แรก คุณยังสามารถคิดวิธีแก้ปัญหาง่ายๆ ก่อนและบอกผู้สัมภาษณ์ว่าแนวคิดของคุณอาจไม่ใช่ทางออกที่ดีที่สุด บางทีในระหว่างกระบวนการสื่อสาร คุณอาจได้รับแรงบันดาลใจใหม่ๆ หรือผู้สัมภาษณ์อาจตกลงให้คุณเขียนแผนปัจจุบันก่อน และคุณสามารถปรับให้เหมาะสมได้ในภายหลัง สื่อสารกันมากขึ้น! สื่อสารกันมากขึ้น! สื่อสารกันมากขึ้น! พูดเรื่องสำคัญสามครั้ง! เมื่อเขียนคำถาม คุณควรใส่ใจกับรูปแบบการเขียนโค้ดและแบบแผนการตั้งชื่อ และยังพิจารณากรณีมุมต่างๆ ด้วย หลังจากเขียนคำถามแล้ว คุณจะต้องสามารถวิเคราะห์ความซับซ้อนของเวลาและความซับซ้อนของพื้นที่ได้อย่างแม่นยำ ผู้สัมภาษณ์อาจขอให้คุณเขียนกรณีทดสอบบางส่วนด้วย เมื่อออกแบบกรณีทดสอบ จะต้องคำนึงถึงฟังก์ชันพื้นฐาน เงื่อนไขขอบเขต และการทดสอบประสิทธิภาพด้วย
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence