微软面试经历 |第 102 组(IDC 校园内)
大约有150名学生参加了测试。
第 1 轮(75 分钟):
在 HackerRank 上托管的在线编码回合。提出了三个编码问题。
- 给定一个整数链表,编写一个函数来就地修改链表,使所有奇数出现在修改后的链表中的所有偶数之前。偶数和奇数的相对顺序应该保持不变。 – https://www.geeksforgeeks.org/segregate-even-and-odd-elements-in-a-linked-list/
- 给定一个浮点数,在不使用内置 sqrt()函数的情况下计算其平方根。
- 给定一个模式字符串和一个测试字符串,实现 RegEx 子字符串匹配。如果模式前面有一个 ^,它将与起始位置匹配。同样,如果它前面有一个 $,它将匹配结束位置。如果不存在这样的标记,它将检查模式是否是测试的子字符串。
Ex : ^coal coaltar Result : True tar$ coaltar Result : True abcd efgh Result : False
25名学生被选中进入下一轮。
第 2 轮(纸质编码轮):
- 以顺时针方向打印二叉树的边界遍历。(注意:检查给定树的左右遍历中的叶节点)。 – https://www.geeksforgeeks.org/boundary-traversal-of-binary-tree/
- 将正方形图像顺时针旋转 90 度。尽可能优化。类似问题:https://www.geeksforgeeks.org/inplace-rotate-square-matrix-by-90-degrees/
8名学生被选为下一轮。
第 3 轮 -个人面试 1
- 讨论了论文编码轮中提出的第一个问题,即二叉树的边界遍历。
- 如何合并两个 BST。询问我能够实施的所有方法。然后让我在 O(logn) 中做,其中 n 是总数。的节点。
- 让我写代码找到了没有。在数组中出现大于 n/2 次。然后让我证明所写的算法,基本上,他是在问我是如何编写该代码的,以及为什么它可以工作。
7名学生被选为下一轮。
第 4 轮 - 个人面试 2
- 要求我在 BOOKMYSHOW.com 实施座位预订流程。如何处理两个人几乎同时试图进入同一个座位的情况。他告诉我编写基于类的解决方案,询问应该用来解决所有预订程序案例的不同功能。
- 什么是单例类?
- 如何找到两条线段的交点。给出了线段的两个端点。
- 怎么找没有。 2 之间没有。 1 到 n 。他给了我一些提示,最后他对我的方法感到满意
- 考虑所有可能的解决方案来实施斐波那契数列。
又问了几个问题,但我不记得了。 6名学生被选为下一轮。
第 5 轮 - 个人面试 3
- 编写无递归二叉树中序遍历的函数。那很简单 !!
- 问了我一个谜题。给出了一个 n*n 板,其中一个给定的单元格是黑色的。此外,考虑到所有可能的旋转,给出了 L 形块(相当于给定矩阵的 3 个单元格)。我不得不使用这些碎片填充整个网格。棋子不能放在黑色单元格上,两个棋子不能重叠,甚至不能部分重叠。我给出了一个答案,我试图将无法访问的单元格(黑色单元格和已经放置在板上的部分)的大小增加到给定板的大小,但他问了我几个回答失败的案例。然后我说他我们可以使用回溯法对组合进行详尽的搜索,但这会花费太多时间。然后他给了我线索,不要增加无法访问的细胞的大小,而是尝试减少它。最后,我得出的结论是,它基于分而治之的解决方案,将基本情况视为具有 1 个黑色单元的 2*2 板。
4名学生被选为下一轮。
第 6 轮 - 个人面试 4
他告诉我实现 LRU Cache 。我给了他所有可能的解决方案。他很有帮助。他发现了缺陷并告诉我优化它。我给了他 3 个解决方案,最后一个是您可以在互联网上任何地方找到的解决方案。但在此之前,他让我使用 hashmap 交换 DLL 的两个节点。我最初不知道 Lru Cache 是什么。哈哈
第 7 轮 - 个人面试 5
- 你的热情是什么?你想在你的生活中做什么? hr类型的问题。
- 他用英语单词设计了一种新语言,并将它们存储在一个字符串数组中。然后他给了我两个字符串并告诉我设计 strcmpfunction 。我一口气告诉他最好的方法,但他试图迷惑我,他成功了。他给了我 5 分钟的时间来提出另一个解决方案并尝试了新的解决方案。最后,我实施了我想到的第一种方法,他对此很满意。
- 如何序列化和反序列化 n 叉树。我告诉他序列化和反序列化二叉树的函数,但无法为给定问题提出解决方案。
3名学生最终入选MS-IDC。我就是其中之一。 :p
PS:我对 OS 和 DBMS 不太满意,所以我清楚地告诉他们,但他们试图间接询问 OS 和 DBMS 的所有基本问题,并告诉我使用 C/C++ 实现它们。
向我的朋友提出的问题:
- 开发一种用于过桥问题的算法,其中没有。元素数为 n。
- 两个链表的交集。
- 查找链表中是否存在循环,并在其中找到循环的起始节点。
- 银行系统的类设计。
- 使用递归和迭代等的反向链表等
微软的所有练习题!