大约 100 人申请了第一轮微软实习offer。基本标准是 CGPA 大于 7.00。
第1轮:
- 给了每个人三个问题。第一个权重为 5 分,其余两个权重为 10 分。 Cocubes 进行了这一轮。 5天后公布结果。
- 给定一个整数数组,您必须在 [2-250] 范围内为数组中的所有元素找到最远的互质数。
Example: [2,5,6] answer should be [ 249,249,247] [5,57,8] answer should be [ 249,2,249] // because farthest
- 给定一个链表,其中每个节点都有两个数据值和一个下一个指针。你必须找到一些趋势。当相邻节点的斜率不匹配时,就会出现趋势。
还给出了斜率公式:(y2-y1)/(x2-x1)Example : 1,2 -> 2,3 -> 3,2 -> 4,1 -> Now slope of first two nodes is (3-2)/(2-1) i.e first and second node. Now slope of second node and third nodes is (2-3)/(3-2) which is not equal so there occurs a trend. Continuing like this slope between third and fourth node will be: (1-2)/(4-3) which is equal to the previous slope so there is no trend. Continue for the remaining lists.
最后,给定链表的趋势数就是答案。
- 给定两棵二叉树,找到第二棵树是第一棵树的子树,如果是,则返回第二棵树中的节点数,否则返回-1。
下一轮的选择是基于 cgpa 和解决的问题数量。
大约 40 人被选入第二轮。幸运的是我通过了这一轮,因为我只做了一个问题(10 分)完全正确,剩下两个部分正确,但我的 CGPA(9.33)很好。
第二轮(团体飞行):
- 给定两个链表,每个链表代表一个数字,您必须将这两个链表相加并返回第三个列表作为结果。他们实际上看到了我们如何解决问题、我们如何处理所有测试用例以及我们编写代码的方式。
12人被选入下一轮。
第 3 轮(技术 F2F):
- 面试官是个很酷的人。我正式自我介绍。
- 第一个是技术问题。他画了一棵树,问我你会怎么做层序遍历。我说我会使用队列。
- 然后他给出了类似这样的问题“Zig-Zag level order traversal”
https://www.geeksforgeeks.org/level-order-traversal-in-spiral-form/
我先告诉了我的方法,然后他让我为我的方法编写代码。我花了大约五分钟来完成代码。然后他让我对所有边缘情况进行一些测试。他对我的做法很满意。 - 然后他转到了 OS。关于如何实现分页以及分页的缺点是什么。面试持续了1个多小时
.(更多关于操作系统)
在五分钟内宣布结果,我必须在另外 5 分钟内参加第二个 F2F。
第 4 轮(技术 F2F):
- 像往常一样,我向面试官介绍了自己。
- 第一个问题是给树打印树的最后一层最左边的节点。我说我会找到树的高度,然后做层序遍历打印树中的第一个节点。他说他想要单次遍历的答案。思索了一阵子后,我想出了一个解决方案。他对此很满意。
- 第二个问题是反转链表中的每 k 个节点。他让我写代码。我用测试用例在五分钟内编写了代码。我在我写的代码上运行了几个测试用例。
- 然后他问我如何实现facebook的newsfeed?然后我们讨论了这个话题大约 20 分钟。
这次采访结束后,我被要求在外面等。我被告知明天有最后一轮。
决赛(F2F):
- 他真的很酷(我在实习期间认识了他)。首先,他在谈论我的项目。他问我,如果给你机会改进你的项目,你会怎么做?我们谈论了这个项目大约 25 分钟。
- 然后他给出了一个“C”代码并让我为它编写测试用例。他给了我用 C 语言实现的 itoa()函数。我说这个函数不适用于 n=0 并且它会返回 null。此外,存储和返回答案的结果字符缓冲区被声明为函数的本地。我指出了这两个错误。
- 之后他问你有什么问题吗?我问他我应该在哪些方面改进?他说你应该专注于设计部分,其他一切都好。
准备小贴士:
真的,我要感谢极客们,因为极客们以如此有组织的方式保持内容。定期参加竞争性编程。(spoj、codechef、codeforces)。在面试的任何阶段都要自信。好好享受面试的过程吧。