📜  微软采访 |第 22 组

📅  最后修改于: 2022-05-13 01:58:26.103000             🧑  作者: Mango

微软采访 |第 22 组

嗨,PFB 我在微软的校园面试经历。

笔试:
第一轮是在线测试,包含 20 个关于 C 和 C++ 的 MCQ。根据这个测试,他们选出了一些学生,并进行了下一轮测试。下一轮是编码轮,有两个问题:

Q1。打印一个非常大的字符串的最后 10 行。

Q2。修剪 BST 中所有不在 (minValue, maxValue) 范围内的节点。

这些代码在他们的在线编译器上用他们的测试用例进行了检查。

团体活动:
面试前一天晚上,我们进行了小组活动。我们被要求自己解决一个问题,而另一个我们必须与分配给您的 Microsoft 导师讨论解决的问题。

Q1。在有序循环单链表中插入一个元素。指向列表中任何节点的指针(可以表示为头)和指向新节点的指针将作为输入给出。为您的代码生成测试用例。检查所有极端情况。

Q2。给出了一个 MxN 矩阵。如果单元格包含 0(零),则将该行和列设为零。我们不得不与微软导师讨论这个问题。讨论很重要,他们指出了缺陷并要求您优化算法(空间复杂度)。

面试第一轮:
Q1。简单介绍后,面试官让我解决100个灯泡的难题。有 100 个灯泡(最初全部关闭)。在第 i 次迭代中,所有 i 倍数的开关都被翻转。最后,经过 100 次这样的迭代,还有多少灯泡仍然亮着??我不知道解决方案。面试官给了我一个提示。然后在做了一些数学之后,我终于给了他解决方案(完美的正方形)。然后他要求我证明这一点。不知何故,我证明了这一点(我感觉很幸运:P)。

Q2。在上一个问题的连续体中,他要求我编写一个函数,它将一个数字作为输入并返回它的所有因子。我在 O(sqroot(N)) 中解决了它。然后他让我检查我是否错过了任何边缘情况。所以,我检查了负数。他对此很满意。

Q3。然后他让我写一棵树的DFS遍历代码。我问他关于树的结构。他告诉我写一棵 N 叉树。做到了,使用子指针的向量(C++)。这一次,我没有错过一个角落案例(因为,几乎没有:P)。他对此很满意。

面试第二轮:
面试官很酷很坦率。他仔细检查了我的简历,问了我一个 SQL 问题和两个算法问题:

Q1。他给了我一个 Employee 表,其中包含 Id、Name 和 ManagerId 列,然后让我编写一条 SQL 语句,该语句将输出所有至少有 2 个下属的经理姓名。我知道,这很容易:P。

Q2。他让我编写代码来克隆一个带有 next 和随机指针的单链表,并告诉我不要担心任何空间复杂度。一个相当容易的。使用哈希解决它。

Q3。在上一个问题的连续体中,他要求我在不使用任何哈希的情况下重写上述代码。做得很快:P。他真的很开心,和我聊了一会儿。在得到他的许可后,我什至嚼了口香糖。他对我的笔迹印象深刻。是的,你没听错,我感觉很幸运:D。

第三轮面试:
面试官很有趣,他一直要求我不要喊(虽然,我真的没有心情喊;))。

Q1。他让我编写一个函数,将二叉树中的所有节点连接到同一级别。我告诉他,我知道并简要解释了。他很酷,问我是想提出一个新问题还是只写这个问题。我说,“如你所愿”。于是他继续前进。

Q2。他解释了 MS Excel 的一个用例:我们可以选择 excel 文件中的多个列并将它们向左或向右拖动。然后他让我编写代码以在数组上实现上述场景。输入将是一个数组、一个子数组(多列)的左右索引和一个目标索引(在子数组的左侧或右侧)。在刮了片刻之后,我给了他一个 O(n) 的解决方案,使用翻转方法进行左右移位。他真的给我留下了深刻的印象,并再次称赞我的笔迹(上帝真棒:))。

Q3。他很快就转到了最后一个问题。给出了一个数字从 0-9999999(一行中的每个数字)的文件。如何对内容进行排序。我给了他一个基数排序的解决方案(因为每个数字最多可以有 7 位数字)。然后他提出了一个限制,即可用的 RAM 非常少。我和他讨论了修改后的外部合并排序算法。但后来他告诉我尽量减少外部合并排序所花费的大量时间。然后他给出了“使用位”的提示。所以我告诉他,使用一个 10^7 大小的向量(实际上使用一个位来表示一个布尔值)。他没问题。

最后我被录用了!!! 😀 😀

我真的非常感谢 geeksforgeeks 团队。我说多少,肯定会少一些。跟上伟大的工作🙂


微软的所有练习题!