📜  微软 SE 实习面试经验

📅  最后修改于: 2021-11-10 06:53:50             🧑  作者: Mango

Microsoft 访问了我们的校园,以聘请大四学生担任软件工程实习生角色。

  • 大约 270 名学生参加了在线测试。

在线测试:90 分钟

在 https://tests.mettl.com/ 上进行,包含 3 道不同难度级别的编码问题——基本、简单和中等,并相应地带有标记。

  • 给定 2 个十进制数,x 和 y 计算除法 x/y 并将其四舍五入到 3 个小数位。类似问题- https://www.geeksforgeeks.org/program-compute-division-upto-n-decimal-places/
  • 给定一个字符串,打印最长回文子串的长度。 https://www.geeksforgeeks.org/longest-palindrome-substring-set-1/
  • 有n个人排队买东西。给出了两个数组 – 等待时间,即任何人等待轮到他/她的时间以及从店主那里获得他们的东西所花费的时间。你必须帮助店主覆盖尽可能多的人并输出相同的内容。

那些至少解决了 2 个问题的人被选入下一轮。我能够解决所有这些问题,大约有 90 名学生被选中进入下一轮。

团体飞行:45 分钟

这是一个以纸笔为基础的圆形。给出了 2 个问题,我们必须有效地解决它们并明确说明我们的方法。

  • 给定一棵二叉树,编写一个函数来连接同一层的所有相邻节点。 https://www.geeksforgeeks.org/connect-nodes-at-same-level/
  • 给定到达火车站的所有火车的到达和离开时间,任务是找到火车站所需的最少站台数量,以便没有火车等待。我们得到两个数组,分别代表停靠列车的到达和出发时间。 https://www.geeksforgeeks.org/minimum-number-platforms-required-railwaybus-station/

那些有效地解决了这两个问题并且能够清楚地解释他们的想法的人将被列入下一轮的候选名单。 24名学生被选中参加面试。

技术面试 1:40-45 分钟

面试以自我介绍开始,面试官让我继续5分钟(我只准备了2-3分钟,所以我开始讲述我在大学所做的事情……所以要做好准备🙂)

然后他继续上一轮的问题(小组的第二个问题飞来飞去)。他有我的解决方案,并告诉我针对不同的测试用例验证我的代码。面试官试图通过每次添加新的边缘案例来证明我的方法是不正确的,但最终,他对这种方法感到满意。他还询问了 Min-Heap 的实现,因为我在我的代码中使用了它。

这次讨论持续了大约 30-35 分钟,然后他问了我我研究过的不同技术,并就它们进行了一些讨论。最后,我问了他几个关于微软生活和微软文化的问题。

技术面试 2:50-60 分钟

面试官很酷,他正在看我的简历,我在爱好部分写了网络系列和板球,所以他问了几个问题-

  • 你能说出你看过的所有网络剧吗? (他向 GOT 询问了几个角色的名字,也许他只是在检查我是否看过它)
  • 最喜欢的板球运动员,为什么?
  • 我打保龄球或击球怎么办?

他告诉我,因为我必须管理讲座、实验室、作业、网络系列、板球和许多其他事情,所以让我们来解决作业调度问题。 ( https://www.geeksforgeeks.org/weighted-job-scheduling/ )。我花了一些时间,想出了一个递归的方法。他指出了我遗漏的一些边缘情况,并要求我纠正它们,我这样做了。现在他问我是否可以使用DP来进一步优化这个解决方案。我尝试过但没有得到正确的方法,然后我向他寻求帮助,最后,经过 2 次尝试,我能够写出来,他似乎也很满意。

什么是二叉树?

什么是二叉搜索树?

你能写一个函数来检查给定的树是否是 BST 吗? https://www.geeksforgeeks.org/a-program-to-check-if-a-binary-tree-is-bst-or-not/

我以前见过这个问题,但我花了一些时间思考,好像这是这个问题第一次问我 😉 然后告诉他 2 种方法,首先是效率较低的方法,然后是效率较高的方法,他告诉我编码越多高效的。

他问了很多问题,我问了几个——

  • 需要改进的地方。
  • 我/每个人都应该知道的技术。
  • 关于 Microsoft 的工作与生活平衡。

人力资源暨技术面试 3:40-45 分钟

面试官问,你以前的面试官叫什么名字?我只记得第二个面试官的名字,因为第一个没有告诉我他的名字,我也没有问。她说你应该问他的名字。 (我确保我最后会问她的名字)然后一些简单的问题-

  • 最喜欢的数据结构,为什么你认为这是你的最爱?
  • Java的抽象是什么?
  • 画出ATM的类结构。
  • 编写您在 ATM 机器的类结构中使用的方法。
  • 写一些字符串。 (是的,你正确地读它!)我不知道什么样的疑问句的就是这一点,但我写了一些大写的字符串,小写字符串,并用值“字符串”的字符串。

2个简单的编码问题-

  • 给定一个整数数组,找到其中的第一个重复元素。 https://www.geeksforgeeks.org/find-first-repeating-element-array-integers/ 我用两种方法解决了这个问题,首先是排序,然后她要求最小化时间复杂度,然后使用哈希。
  • 反转给定字符串的单词。 https://www.geeksforgeeks.org/reverse-words-in-a-given-string/ 又是一个简单的方法,先将每个单词一个一个反转,然后整个字符串反转。

结果 –包括我在内 9 人被选中🙂

PS——面试时要自信,不要犹豫,问你是否被卡住了。他们肯定会帮助你。