微软面试经历 |第 104 集(IDC 校园内)
微软 (IDC) 来到我的校园招聘 FTE 和暑期实习生。选拔程序包括在线编码轮、小组飞行轮和 2-3 轮面试。
第 1 轮(在线编码轮):
- 这一轮是 co-cubes 门户中的在线编码轮。三道题共25分(5+10+10)。本轮比赛时间为 1 小时 30 分钟。
- 给定数字 n 和 k,如果数字 n 为“1”,则将数字 n 的第 k 位更改为“0”,否则返回数字 n 本身
Example: For n=13 (1101) & k=2, return 13 For n=13 (1101) & k=3, return 9 (1001)
- 返回表示为字符串的两个二进制数之和
Example: For n1=111 & n2=10011, return 11010
- 返回二叉树中最低层的所有叶节点的总和。如果不存在树,则返回 -1
例子:
对于上面的二叉树,返回 100 (40+60)
首轮结束后,有5人直接被选入面试,其中约12人被选入集体飞轮。由于所有问题都很简单,因此选择基于代码的效率。
第 2 轮(团体飞轮):
- 给定一个数字 n,用单词打印这个数字。
Example: For n=125, print One hundred and twenty five.
技术面试一:
- 我被问到与小组飞行中相同的问题。 (因为我是直接被选中面试的,所以我的面试是在团飞的同时进行的)
首先讨论了方法,在面试官对我的方法感到满意后,我被要求编写相同的代码。
然后他让我写下相同问题的测试用例。我想出了所有可能的测试用例。然后我意识到我没有编写包含所有这些测试用例的代码,并问面试官我是否必须更正我的代码,他说这不是必需的。 - 有一个系统可以接收一串数字。当每个新数字到达时,找到我们目前拥有的一组数字的中位数。我给出了一个使用 AVL 树的解决方案并为此编写了代码。我还被要求评估我的解决方案。
技术面试2:
- 给定一个 BST 和一个数 n,在树中找到两个总和为 n 的数。这是在原地完成的,即没有任何额外的空间。
我想出了一个蛮力解决方案和另外两个使用额外空间的解决方案。我被要求为其中一个编写代码。 - 在 facebook 中,给定一个人 p,找到直到第 k 级的连接数。 p 的朋友形成 1 级,p 的朋友的朋友形成 2 级,依此类推。
讨论了要使用的数据结构和算法,并为我的方法编写代码。
最后一次采访:
- 这一轮被称为 AA(As-Appropriate)轮,面试官在其中寻找独特性,
- 整个面试都是关于我在简历中提到的小项目。对其他方法和可以提高搜索效率的存储进行了深入讨论。
- 一般的人力资源问题,例如“为什么选择微软?”被问到。
最终选出了其中的2个。在所有的采访中,更多的不是正确的解决方案,而是解决方案的方法和独特性。
技术知识和软技能。
我感谢 geeksforgeeks.org 为我的实习准备工作提供了大力支持。
微软的所有练习题!