在本文中,我将描述我最近的 Microsoft 面试经历。微软在贝兰杜尔班加罗尔开设了一个新中心。我直接接到了他们的电话,要来面试他们。我不得不重新安排我的面试两次,因为我在第一次面试的那天生病了,第二次被一些个人工作困住了。
所以,我在重新安排面试两次后出现在他们的办公室。办公室很漂亮,所有楼层都被微软占据。到达那里后,我打电话给我的招聘人员,她让我从接待处拿走访客通行证,并让我去相应的楼层进行面试。
我拿了我的通行证,乘电梯到那层楼。到达后,我再次打电话给招聘人员,她面带微笑地出现并护送我到食品储藏室。她问我是否吃过早餐,并告诉我从食品储藏室拿一些食物。我告诉她我已经吃过早餐了,不觉得饿了。
然后她让我坐在沙发上,告诉我面试官很快就会来。大约5分钟后,面试官来了,我和他一起去了面试室。
然后我们互相介绍,他让我写一个程序。我不会透露这些问题,因为很多网站上都有类似的问题。
由于我之前没有解决这个问题,我讨论了解决它的各种方法,最后用递归解决方案解决了这个问题。然后他让我写同样的代码。我编写了整洁干净的代码,并使用一些输入进行了测试。
他说看起来不错。因为我们还有一些时间,他问了我另一个问题,简单地问了我的方法。这是一个简单的技巧问题。剩下的时间我差点就答对了,他说没关系,第一次面试就结束了。
他让我再次坐在储藏室里。我去了休息室,然后又坐在储藏室里。有一个装满果汁和软饮料的大冰箱。各种水果也放在平板上。我走到咖啡机前取了些牛奶。对水果和果汁没有太大的胃口。
与此同时,第二位面试官带着友好的微笑向我打招呼。我们走进了面试室。他让我坐下,然后去拿纸和笔。然后我们互相介绍。他在微软已经有一段时间了。
然后他问了我一个与他目前在微软所做的工作有关的问题。他告诉我,一开始他会保持这个问题非常简单,并在我们深入研究时以此为基础。
我很快想出了我们需要的类的一个很好的设计,然后讨论了我关于我们需要实现的算法的方法。
然后他添加了一些更多的约束并要求我编写代码。我很快就编写了代码,然后讨论了复杂性。由于解决方案是最优的,他转向下一个问题,这基本上是第一个问题的后续问题,我应该设计一个数据结构。
我花了一些时间在现场想出了一个高效的数据结构,经过一番讨论,我想出了一个相对复杂的数据结构,解决了这个问题。但是经过一些观察发现,我们可以操纵 Trie 数据结构来实现相同的目的。
然后他问我有没有什么问题。我问他关于他的日常工作。他在当前项目中使用的技术等。
然后他让我再次坐在储藏室里。招聘人员来找我并递给我一张午餐券,并告诉我剩余的轮次将在午餐后进行。她还告知第二个面试官会来带我和他一起吃午饭。
大约10分钟后,我在第二轮面试的面试官来了,我们就去吃午饭了。自助餐厅在一楼,气氛很棒。中国人,北印度人,南印度人等有不同的柜台。
我们前往北印度柜台。我给了我的午餐券,他刷了他的卡,因为 100 卢比/ – 被添加到每个员工的卡上作为食物。我们拿着食物坐在附近的桌子上。
食物很不错。但他坚持认为,在较早的办公室里情况会更好。我们讨论了 Microsoft 提供的 Cab 工具,他告诉我它非常好。他在早上 8 点乘出租车从 Indra Nagar 通勤,他需要半小时才能到达办公室,因为那个时间交通较少。
然后,他在晚上乘坐下午 4:30 的出租车,并在下午 5 点前到家。这个例程为他节省了很多时间。他可以花时间和家人在一起,否则本来会花在交通上的时间。
我们还谈到了班加罗尔 IDC 正在进行的项目。吃完午饭,我们又回到同一层楼,他让我在储藏室里等。
大约20分钟后,第三位面试官来找我,我们去了面试室。他告诉我这将是一个设计回合,重点是数据结构。
他让我设计并实现一个标准的设计模式。我写完代码后,他问了我一个问题,这是对我刚刚实现的设计的巧妙操作。有很多关于方法和复杂性的讨论。
之后我们转到下一个有点复杂的问题,我想出了一个使用 Trie 和 Heap 的基于缓存的设计。
我们完成了采访,我向他询问了他们在项目中使用的云技术。他非常详细地回答了他们,我们完成了采访。然后他让我再次坐在储藏室里。
10分钟后,第四位面试官来了,第四轮开始。他告诉我这将是一个设计回合,并让我在白板上画出我当前项目的架构。关于设计的利弊以及可以做些什么来改进设计,有很多讨论。
然后他让我设计一个 API,考虑到安全性、可扩展性、可用性等因素,该 API 可供数百万用户访问。关于方法、分片、CAP 定理等有很多讨论。我还给了他 Cloud Foundry 使用的 Diego 架构的例子,这与我们正在讨论的方法有些相关。
之后有很多关于容错、批量头、超时等的讨论。这是一个漫长的回合,我感到筋疲力尽。在此之后,还有一些行为问题,一轮结束后,他让我再次坐在储藏室里。
我径直走向冰箱,拿出一个 Amul 冷却器,很快就倒空了。我去了洗手间,回来的时候看到招聘人员在等我。她告诉我下一轮将是招聘经理轮,并向我简要介绍了这一轮。
大约 10 分钟后,招聘经理来找我。我们去了面试室。他自我介绍,问我关于我目前的项目。他还让我画出我当前项目的架构。
然后我们就线程池进行了长时间的讨论。然后他让我编写一个多线程程序,我做到了。然后我们就我选择的方法进行了讨论。然后我们讨论了良好的代码实践、测试的重要性以及我在当前项目中为将组件迁移到云所做的事情。
面试基本上结束了,他问了我喜欢使用的技术。我们就此进行了简短的讨论,他让我在储藏室里等。
大约 5 分钟后,招聘人员来了,通知他们会雇用我,人力资源部门的一些人会联系我。
我谢过她,走出了大楼。我头疼,坐公共汽车回家。所以,这是一次相当不错的体验。这个过程非常专业,所有人都非常友好和热情。
你也可以在这里查看我的施乐面试经历