“我的一次微软面试经历”

简介: 大约在2-3个月前,我在Linkedin上看到了微软员工发布的一系列消息。当时正值微软招聘大三的学生作为软件工程师的暑期实习生。看到这些消息后,我非常兴奋,而且我不想错过这次机会。

01


我将简历(包括我的所有项目、成就和经验)发给了微软的15-20个人,希望至少能有一位可以推荐我参加在线编程测试。

重点:
勇敢地和陌生人联系,这只是构建关系网的一种方式。你拥有的关系网越强大,就越容易找到工作。

在与某人联系时,不要简单地打招呼并要求对方做推荐人,你可以写一封信详细介绍你的项目、经验、成就,并写出他们推荐你的理由。

邮件刚发出去1-2个小时,我就收到了微软的第一轮面试邀请,这是一次纯粹的编程测试。

02


2019年9月22日,我参加了第一轮面试。
我拿到了三个解决问题的题目,而且给出的时间也够。

其中一个问题是:
给定大小为n的数组,请以偶数和奇数交替的方式升序排序数组。
注:这是最简单的一道题。

在面试仅剩5分钟的时候,我的笔记本电脑崩溃了。这可能是最糟糕的情况了,但很幸运的是,过了一会儿后我可以继续测试了。

我写出了三道题的代码,并通过了所有测试用例,包括边界情况和复杂的测试用例。

我对第一轮面试充满了信心,并热切期待结果。

03


10月11日,结果宣布了,我成功地进入了第二轮面试。
第二轮面试应该是视频面试,我认为面试主要是数据结构,所以就开始为此做准备。

这次面试定在了10月14日。首先简单地做了介绍,然后面试官开始测试OOPS的概念。我很高兴,因为从大学开始我就不需要为这个话题发愁了,因为我很早就搞清楚了这个概念。

他们问了我有关继承的一些概念,例如多态性、方法重载和方法重写之间的区别、virtual关键字和抽象。

重点:
如果你不了解某个概念,那也不要给出不相关的答案,乖乖承认就好。然后询问更多有用的信息。这可以表明你愿意学习新事物,给面试官留下好印象。我并不了解virtual关键字,但我没有给模糊的答案,而是告诉他我没听说过,后来我们就这个问题讨论了2-3分钟。

面试的第二部分是解决问题。他们的主要目的是测试我们思路以及解决新问题的方法。因此,说出你的思路非常重要。

我拿到的问题如下:
假设有一个3维数组,且按照如下螺旋方式排序:
01 02 03 04
12 13 14 05
11 16 15 06
10 09 08 07

请问,从这类数组中搜索某个数字的最佳方法是什么?

起初,我没有想到好的解决方案,所以我提出了最差的解决方案(O(n²)),然后开始考虑优化解决方案。

我一边想,一边说出了我的方法,所以面试官也给予了我帮助,并给了我很明显的提示,最后我找到了正确的方法。

重点:
说出你的思路。让面试官知道你在想什么,他可能会引导你朝正确的方向思考。

跟面试官提出问题,进一步阐明问题。

从最糟糕的解决方案开始,然后开始对其进行优化。

无论你提出怎样的解决方案,他们都希望你写出代码,因此需要为此做好准备。

注:我开始想到的解决方案非常复杂O(n²),最后优化到了O(log(n)),我心中的喜悦难以用文字描述。
对于这轮面试,我也非常乐观,而且很幸运,我接到了下一轮的复试。

接下来还有两次面试

关键词:算法、测试技术、调度、C++、Python


分享到:


相關文章: