微软面试问题
作者 Aaron Cao · 更新于

微软的面试流程混合三类问题:中等难度的数据结构与算法编程题、围绕成长型思维与从失败中学习展开的行为面试题,以及面向高级职位的系统设计环节。大多数环节都会以简短的简历梳理开场。
微软面试的三类问题是什么?
网上大多数题目列表都是一堆杂乱罗列的问题,并未标明它们分别属于哪个环节,这让人很难有针对性地准备。本节按提问环节对问题进行分类,让你了解每位面试官实际在考察什么。微软的面试流程清晰地分为编程、行为面试,以及面向高级职位的系统设计三类。
- 编程。每个环节一道题,通常在共享编辑器中一边解题一边讲述你的思路。考察数据结构与算法,并随着解题过程不断追加限制条件。
- 行为面试。关于你如何工作的问题,围绕学习与调整展开,而不是罗列你的成就。
- 系统设计。一个开放式的服务设计与扩展问题,是高级和资深职位面试的标准环节。
「视情况而定」面试官——加入面试流程、对最终决定有较大话语权的资深人士——可以从以上任意类别中取题。把这个环节当作单独一类来准备是个误区。整个流程的结构详见公司面试主题枢纽。
哪些编程题最常出现?
据各方反馈,反复出现的题目类别相当一致:
- 数组和字符串处理,包括原地修改和双指针问题
- 哈希表问题,关键在于选择以什么作为键
- 链表操作、反转与环检测
- 二叉树:遍历、深度、路径和以及最近公共祖先
- 图遍历,包括广度优先和深度优先搜索
- 入门难度区间的动态规划,例如爬楼梯和硬币找零的变体
- 字符串和数组上的滑动窗口问题
难度并没有传闻中那么极端。真正让微软编程环节变难的不是题目本身,而是你需要一边口头讲解思路,一边应对面试官不断追加的限制条件。默不作声地给出可运行的解法,得分反而不如思路清晰但只完成部分的解法。
微软的行为面试题是怎么问的?
成长型思维是微软官方倡导的文化框架,行为面试题也由此而来。你会遇到要求你描述犯错经历、接受批评或改变立场的问题:
- 说说你曾经历的一次失败,以及之后发生了哪些改变
- 描述你收到过的一次尖锐反馈,以及你是如何应对的
- 说说你和同事的一次分歧,以及最终如何解决
- 描述一次你必须快速学习陌生事物的经历
- 为什么选择微软,为什么选择这个团队
一位从初创公司跳槽到高级职位的后端工程师准备了四个详细的故事,并在整个面试流程中重复使用,根据具体问题调整讲述角度。面试官事后会互相对照笔记,所以关键不在于故事数量多样,而在于每个故事都经得起围绕你具体决策的追问。把每个故事按情境、行动、结果来组织,并让「行动」部分占最长篇幅。
更多针对具体岗位的题库和练习集,汇总在面试问题主题枢纽。
把答案大声说出来练习
只是阅读题目列表,能带来的是「眼熟」,而非「熟练」。这种差距会在你必须当场、对着等待回应的人给出结构化答案时暴露出来。计时朗读、大声练习答案才能弥补这一差距,在模拟面试页面上对着 AI 面试官做这项练习是可行的。
在真实的面试环节中,SubcueAI 以原生 macOS 和 Windows 应用的形式运行,捕捉系统音频和你的麦克风输入,并在悬浮的本地叠加层中显示建议;同时也有浏览器扩展,其侧边栏可在 Chromium 系浏览器上为会议标签页提供实时辅助,只捕捉该标签页的音频。整个过程没有机器人加入通话,也不会向会议页面注入任何内容。
诚实地说,这里有一个明确的限制:编程环节。微软面试在 Microsoft Teams 上进行,编程环节通常意味着共享屏幕,这会让本地叠加层出现在面试官所看到的画面里。这个限制只适用于共享屏幕的编程环节,不适用于招聘经理面谈、行为面试环节和设计讨论。