微软实习面试经验 |校园 2021
微软于 2021 年 7 月访问了我们的校园,担任暑期实习生
在线评估:
1.给定一个1-6范围内的数字数组,你必须在数组中合并添加K个元素[在1-6范围内],使得添加元素后数组的平均值变为F,我们需要返回一个数组K 个元素,如果不可能,我们需要返回一个空数组。
example
1.a)input->arr=[1,2,3,4] k=2 f=3.0
output->[1,2,3,4,5,3]
//since the mean of the new array is 3
1.b)input-> arr=[1,1,1] k=1 f=6
output=[]
2. 给定字符串a、b 和/或?可以换吗?与 a 或 b。任务是全部替换?这样字符串中就不会出现三个连续的 a 或 b 。假设这样的字符串将始终存在,我们需要返回修改后的字符串。
example
2.a) input->b?aa?
output->bbaab
测试是在他们的平台上进行的,与其他 OA 不同,您只能提交一次代码,即一旦提交,您将无法编辑您的代码
解决了这两个问题的人被列入面试名单
面试轮次:面试轮次在 MS 团队中进行,编码是在他们的 codility 平台上完成的,类似于 codepair hackerrank。
ROUND 1:我们互致问候,然后面试官问我在线模式下我们面临的挑战。
然后她给了我一个问题:
- 给定一个字符串,我们需要判断该字符串是否满足以下条件:
- 对于第 i 个位置的每个字符(其中 0<=i
- 预期时间复杂度-O(n),空间复杂度-O(1)
- 在尝试了蛮力之后,然后是二进制搜索方法
- 我要求提示,在提示的帮助下,我能够使用 hashmap 对其进行编码
- 本轮持续约40分钟
在这一轮之后,我很快就被要求参加第 2 轮。
ROUND 2:我们互相打招呼,面试官问我的介绍。
然后他提出了一个问题。
- 给定一个从 1 到 255 的 n 个数字的数组,我需要设计一个类来压缩它以减小数组的大小并解压缩以取回原始数组。与前一轮不同的是,没有指定预期的时间和空间复杂度。 (Soln: 1 声明了一个大小为 n/4 的无符号整数(32 位)数组,每个数字可以存储 4 个数字,因为在原始数组中最大位数为 8(二进制中的 255=11111111)
面试官似乎对我的方法很满意,并要求我把它编码出来。
之后,我们就下面给出的一些后续问题进行了讨论
- 如果 number 的范围是 0-255 而不是 1-255 会发生什么变化。
- 可以应用此算法的地方。
这一轮持续了大约1小时20分钟。
我很快就被要求参加第 3 轮比赛。
第三轮:这是人力资源兼编码轮。是一位非常资深的人拍的,
编码问题
- Kadane 算法。
- 给定一个数组,按频率降序打印唯一元素。
人力资源问题:
- 你为什么参加 CSE?
- 你为什么选择这所大学?
- 你的长处和短处。
- 说出任何最近给我留下深刻印象的技术堆栈。
- 未来目标
- 为什么选择微软?
- 阐述一个团队的项目经验。你面临的挑战是什么,你是如何克服的?
- 说出您认为对大流行产生最重要影响的任何产品/技术堆栈。
这一轮持续了大约50分钟。
判决:选择。
注意/提示:
- 所有的面试官都非常有经验和友好。每当我走错方向时,他们都会给出有用的提示。因此,每当您遇到困难时,请务必寻求提示。
- 微软更关注基础知识,但在所有三个采访和 OA 中都强调代码应该是正确的,并且需要最少的更正。
- 在所有三个采访中,我都被期望考虑我的代码可能会失败的所有边缘情况。
- 在每一轮结束时,当他们问“你有什么问题要问我吗?”时,一定要问一些关于面试个人资料的问题。
- 在编写代码时,请确保与面试官互动并讨论您正在编写的每一行代码。
- 最后但并非最不重要的一点是,要自信并相信自己。