微软实习面试经验(校内)
第 1 轮(在线编码轮 - 90 分钟):在线测试在 https://mettl.com/ 上进行。有 90 分钟的时间来解决和编写 3 个问题。这些问题基于基本的实施问题(常见于 CodeChef、Codeforces、GeeksforGeeks 和其他在线平台)。三个问题中,两个简单,一个中等难度。
- 给你 n 个密码。您必须打印不同密码的总数。在每个密码上,您可以执行任意次数的操作,可能为零。该操作被定义为,如果索引号的差为偶数,则可以交换字符串的任何 2 个索引上存在的数据,即 swap(a[i], a[j]) if (ji)%2==0。
Test Case: Input: n=5 and passwords are=[“abcd”, “cdab”, “bacd”, “bdca”, “cdba”] Output: 2
解释:由于“cdab”可以转换为“abcd”和“bdca”,“cdba”可以转换为“bacd”,所以你只能得到2个不同的密码。
- 今天是 Anshul 的生日,所以他带来了 n 块巧克力,他有 k 个朋友。他必须通过以下方式将所有巧克力分发给朋友。第一个孩子得到 1 第二个得到 2 第三个得到 3 个,依此类推,所以如果有足够的巧克力,那么第 k 个孩子得到 k 个巧克力。现在如果还剩下巧克力,那么他再次将 k+1 巧克力给第一个孩子 k+2 给第二个孩子,依此类推,直到他分发所有巧克力。所以你必须打印 k 个整数来定义哪个孩子得到了多少巧克力。
Test Case: Input: n=25 and k=5 Output: [7 6 3 4 5]
解释:所以在第一次巧克力分配将是 [1 2 3 4 5] 所以现在总共使用了 15 个巧克力在第二次第 1 个孩子将得到 6 个更多的糖果所以他的糖果总数将是 7 现在我们只剩下 4 个更多的糖果可以给第二个孩子,因为他可以得到多达 7 块巧克力,但我们只剩下 4 块了。所以最终的答案是 [1 2 3 4 5] + [6 4 0 0 0] = [7 6 3 4 5]
- 给你 M 表示模数和 N 层数。现在在第一层,你有 1 艘动力船 v=2。现在对于第 i 层中功率为 v 的每艘船,在其下一层中都有功率为 0 到 v*(v+1)%M-1 的不同船。现在给你 M 和 N。你必须找到所有层 % M 中的船舶总数。
Test Case: Input: M=4 N=2 Output: 3
66名学生被选中进入下一轮。
第 2 轮(团体飞行轮):45 分钟:在这一轮中,我们都被要求在 45 分钟内解决一个问题。我们必须在 A4 纸上(使用任何编程语言或伪代码)编写函数,返回答案及其时间和空间复杂度。我们被建议为该问题编写尽可能多的解决方案,但会考虑最佳解决方案。
提出的编码问题是:
- 给定一个大小为“n”的数组。问题是将数组中存在的所有零移动到数组的右侧,以保持非零元素的顺序。
例子:
Input : array : [0, 10, 7, 0, 0, 0, 8, 0, 3, 6] n: 10 Output : array : [10, 7, 8, 3, 6, 0, 0, 0, 0, 0]
42名学生被选中进入下一轮。
第 3 轮(技术面试 1 - 大约 45 分钟):面试官询问了有关面向对象编程的概念、数据结构和算法的问题。面试官描述了一些场景,并询问了如何用虚函数、多重继承、运算符覆盖等 OOP 概念来解决它们。
提出的编码问题是:
- 给定两个字符串P 和 Q,问题是检查这两个字符串是否是彼此的排列。
例子:
Input : string P: ‘aBca’ and string Q: ‘Baac’ Output : P and Q are permutations of each other.
- 一条街上有'n'座建筑物。一只猴子可以一次跳跃穿过一两座建筑物。猴子可以通过多少种可能的方式从第一栋建筑到达最后一座建筑?
例子:
Input : n = 4 Output : no. of possible ways: 3 Explanation : The possible ways can be (1->2->3->4; 1->3->4; 1->2->4)
对于每个问题,我在纸上写了 C++ 函数,他让我解释我的解决方案的时间和空间复杂性以及可能的极端情况。他还讨论了解决问题的其他可能方法。
第 4 轮(技术面试 2 - 大约 30 分钟):在这一轮中,我被要求使用 DS 和算法概念以及一些谜题来解决一些现实生活中的问题。
- 给定一个网站主页的超链接,我的任务是打印该网站上存在的所有“死链接”。还为网站的每个页面提供了每个网页中存在的链接列表。
- 然后面试官要求解决和解释一些数学和逻辑难题。
第五轮(HR面试——20分钟左右):一开始,面试官让我介绍一下自己和从学校到学院的经历。
- 然后他浏览了我的简历并询问了我的项目和技能。他问了我一些基于逻辑的问题。
- 然后他问我喜欢他们的Pre-Placement Talk 中的哪些内容以及我为什么想加入公司。
结果在两个小时内公布,我和其他 9 名学生(我的同班同学)一起被选中。
判决:选定