微软 IDC FTE 面试经历
整个过程共包括 5 轮(包括在线编码和组飞轮),所有这些都在下面进行了描述。
Round1:在线编码测试
有2组问题。本轮共有60名学生参加。我得到的三个问题是:
1.第一个问题很简单。比如比较两个字符串中的字符。我只想指出,co cubes 平台对用户不是很友好,最好你知道如何处理字符数组、指针等(大多数人用 c++ 编写代码并且习惯于使用字符串。所以只是复习一下考试前一天你的 c 概念,你应该好好去。)(2 分)
2. https://www.geeksforgeeks.org/minimum-number-appends-needed-make-string-palindrome/(3分)
3. 将元音和辅音分开在一个链表中,把所有的元音放在最前面,然后是辅音。类似于 https://www.geeksforgeeks.org/arrange-consonants-vowels-nodes-linked-list/ 的东西(5 分)
在一轮中保持冷静,即使在样本测试通过后也要检查你的代码(它们非常弱)。另外,我想指出一些问题存在记忆限制,但也选择了一些使用额外记忆的学生。因此,如果您无法在没有记忆的情况下编写代码,请使用它而不是留下问题。
第 2 轮:团体飞行
本轮共有26名学生入围。
这一轮有两个问题。代码将在 45 分钟内写在纸上。
1. 检查字符串1 是否是字符串2 的旋转版本,
2. 分词问题的一种变体。给定一个单词字典,我们必须找出字典中最长的单词,该单词可以由其余单词组成。
请注意,您只有 45 分钟。他们希望您为这两个问题编写代码。我为第二个问题写了一个动态编程解决方案,但为第一个问题写了一个蛮力(O(n ^ 2))。请注意,第一个问题也可以使用 kmp 在 O(n) 中解决,但如果我尝试使用 kmp 方法,我将没有时间完成这两个问题。一位尝试过 kmp 的同学无法编写完整的代码,也没有入围进一步的轮次。
群飞中很重要的一点是与面试官的互动。他们非常好,乐于助人。解释您的解决方案使他们以后更容易评估您的解决方案。
大约 10 名学生入围了进一步的轮次。
第 3 轮(技术第 1 轮):
面试官非常友好。首先我被要求自我介绍。然后我被要求为亚马逊设计一个推荐系统。在这里,我们讨论了数据隐私问题。下一个设计问题是设计一个微小的 URL。我使用了十进制数小于相应的二进制数的类比。因此,可以通过使用更多的字符来表示 URL,从而使 URL 更短。
然后我被问到我的兴趣,我提到了软件开发、机器学习、深度学习等。然后我被要求应用深度学习为印度的增长和进步做出贡献。我应用深度学习来预测和分析印度河流中日益严重的污染。
然后给了我两个简单的问题。一个是在图表上,另一个是在网格中找到从右上角到右下角的方式数(排列和组合)。
接下来是一些行为问题:
1.说出你的一个弱点。
2. 告诉我你的两个优势
然后我被问到是否有任何问题要问面试官。我对微软从事的一些有趣的事情了解很多,但我问他对公司的看法以及他是否可以分享他的一些项目。
我提到的面试官非常友好。在开始解决问题之前,确保您清楚问题是很重要的。向面试官提问,他们将非常乐意回答您的问题。
第 4 轮(技术第 2 轮):
第 3 轮对我来说大约 1.5 小时。然而,这一轮大约是45分钟。
在实习期间,我第一次被问到我的项目。
提出的问题基于行主要和列主要排序(缓存如何受到影响)。什么是缓存?
什么是多态性以及多态性的两种类型并解释它们?
有一个将双向链表转换为单链表的问题。我们被允许修改节点中的数据(使用地址异或)。
下一个问题是关于我们讨论触发器、索引、散列等的数据库。
最后我被问到是否有任何问题要问面试官。
第 5 轮(人力资源):
这一轮是对微软一位高级技术人员的电话采访。他也非常友好,首先让我自我介绍。他对我所做的项目和实习印象深刻。我们讨论了我在那里所做的工作以及我使用的技术。然后他问我关于我的兴趣以及人工智能和机器学习之间的区别。他告诉我很多关于微软工作的事情,听起来都很有趣。
最终有4名学生被选为微软全职工作。
对你们来说重要的是要意识到努力工作掌握在自己手中。所以这样做并忘记结果。你学到的东西永远不会白费。祝一切顺利!