作者 | Ashwin Goel
以下为译文:
我将简历(包括我的所有项目、成就和经验)发给了微软的15-20个人,希望至少能有一位可以推荐我参加在线编程测试。
勇敢地和陌生人联系,这只是构建关系网的一种方式。你拥有的关系网越强大,就越容易找到工作。
邮件刚发出去1-2个小时,我就收到了微软的第一轮面试邀请,这是一次纯粹的编程测试。
2019年9月22日,我参加了第一轮面试。
其中一个问题是:
注:这是最简单的一道题。
我写出了三道题的代码,并通过了所有测试用例,包括边界情况和复杂的测试用例。
第二轮面试
第二轮面试应该是视频面试,我认为面试主要是数据结构,所以就开始为此做准备。
他们问了我有关继承的一些概念,例如多态性、方法重载和方法重写之间的区别、virtual关键字和抽象。
1. 如果你不了解某个概念,那也不要给出不相关的答案,乖乖承认就好。然后询问更多有用的信息。这可以表明你愿意学习新事物,给面试官留下好印象。我并不了解virtual关键字,但我没有给模糊的答案,而是告诉他我没听说过,后来我们就这个问题讨论了2-3分钟。
我拿到的问题如下:
01 02 03 04
11 16 15 06
请问,从这类数组中搜索某个数字的最佳方法是什么?
我一边想,一边说出了我的方法,所以面试官也给予了我帮助,并给了我很明显的提示,最后我找到了正确的方法。
说出你的思路。让面试官知道你在想什么,他可能会引导你朝正确的方向思考。
从最糟糕的解决方案开始,然后开始对其进行优化。
注:我开始想到的解决方案非常复杂O(n^2),最后优化到了O(log(n)),我心中的喜悦难以用文字描述。
第三轮面试
老实说,他们的园区是一个理想的工作场所。真的很棒!
很快我们就被带到了会议室,并得知我们这20名学生是从1万1千名在线申请人中筛选出来的,顿时让我感觉良好。
第一回合
本回合主要是看简历。面试官说他们真的很喜欢我的简历。他们询问了我有关项目的问题,并了解了我以前做过的工作。
1. 你必须熟知简历中的每个词。
2. 不要写任何你不是十分清楚的东西。
其中一个问题是如何反转链表。前一天晚上乘坐公交车的时候,我刚刚在GeeksforGeeks上阅读了有关这个问题的文章,而且我记得部分解决方案。经过一番思考后,我向他们解释了算法。他们还让我们用C++写出正确的代码,还通过示例进行了测试。
另一个问题是,假设你有一个改进的链表,链表中的每个节点除了正常的数据变量和指向下一个节点的指针之外,还有另外一个指针,可能指向链表的任何一个节点。现在你的任务是克隆这个数据结构。
我发现这个问题很棘手,需要一些思考。
本回合主要是测试更深的编程技巧和更快的思维。
1. 编写代码,检查二叉树的高度。
我写出了两道题的代码,但不得不多花点时间调试一些小错误。
这两个问题都需要利用递归来解决。
1. 写完代码后,还有非常重要的一步:验证!
第三回合
下半场是解决问题。他给我的问题是:
接下来,在迭代(i)时,我们删除第(i + 1)项。
考虑 n = 20
1 3 5 7 9 11 13 15 17 19
1 3 7 9 13 15 19
1 3 9 13 15
最后剩下来的数字称为幸运数字。
在经过反复思考后,我说出了解决方案,并得到了面试官的反馈,然后我根据反馈找到了解决方案的模式,并写出了代码。
接下来是一些常见的问题,有关我个人以及我想从事的工作。
1. 你需要清楚为什么想进这个公司。你需要对他们的产品和计划进行足够的研究,并清楚地了解你的动机以及为什么想在这里工作。
2. 在面试前,你需要准备明确而清晰的答案:为什么你想进这个公司,而为什么这家公司应该雇佣你。
总结
另外,我没有被录用。我想在本文最后说明这一点,因为对于我们这个年龄的人来说,最重要的是学习经验以及提升自我。我们的职业生涯才刚刚起步,被拒、薪水和便利性没那么重要。但是,我为什么被拒仍然是一个谜,我本人毫无头绪。我感觉面试非常顺利,本来也以为会有好结果。
原文:https://medium.com/better-programming/my-interview-experience-with-microsoft-754039df9103
本文为 CSDN 翻译,转载请注明来源出处。
【End】

