微软IDC面试经历 |设置 83(校内)
我最近被安置在 Microsoft IDC。这是我的面试经历🙂
前两轮由 Cocobes.com 在我们的校园进行。其他回合在现场。微软被宣布为我们校园的梦想公司,CSE / ECE / MCA / MTech流的学生有资格参加。它已经来了实习和全职职位。
第一轮:技术能力
第一轮包括 15 个问题,需要在 30 分钟内完成。
MCQ 基于 C.C++、 Java和一些操作系统问题。我们学院大约有 200 多人参加了这一轮比赛。
第 2 轮:在线编码轮
第一轮结束后,大约 100 名(包括实习生)学生进入第二轮。这一轮有两个编码问题需要在 90 分钟内完成。
每个人都有不同的问题。我得到的问题是:
- 给定两个数组,一个数组的数字代表一个数字,通过用第二个数组的元素替换它来最大化数字。
例如:
arr = {3,1,4,5,6}
代表 = {1,9,5,2,3}更换后
arr = {9,5,4,5,6}
一位代表只能替换一次。
为此,几乎每个得到这个问题的人都使用了蛮力方法。但我使用了不同的方法。我构造了一个最大堆 rep 数组。并运行一个循环检查 rep 的最大元素是否大于 arr 中的元素和然后在 arr 中替换它并从 maxheap 中删除它。 - 给定一个矩阵,其中每个单元格代表一个强度值。该值可以是正负或零。在每个单元格处添加强度值。如果在任何点强度变为零或负值,您必须从点 (0,0) 到达点 (m-1,n-1),然后您无法继续进行。找到最小值开始到达矩阵末端之前所需的力量。
例如。 {{ 1,-3,0},
{-2,1,-1}} Ans: 2 ( (2+1+(-2)+1+(-1)=1 路径)
我给出了一个 DP 解决方案,但在这个问题中无法通过一些测试用例。
在这一轮之后,大约有 15 名学生入围(包括我😀)。几天后,我们得到了这些结果,然后我们收到了在海得拉巴 MSIDC 进行现场采访的邀请
第三轮:书面编码轮
包括其他学院的学生在内的大约 30 名学生被召集到现场。这是一个书面回合。每个人都有大约 45 分钟和 1 个问题。
- 给定二叉树的根,一个值 n 和 k。找到距离值为 n 的节点 k 处的节点的总和。这类似于极客上的这个问题-> https://www.geeksforgeeks.org/print-nodes-distance-k-given-node-binary-tree/
我能够很快做到这一点😀 我什至向 HR 解释了我的回答,他让我编写不同类型的测试用例,以详尽检查我的代码是否适用于所有测试用例。
在这一轮之后,大约有14人入围。
第四轮:技术面试
这是一轮个人面试。面试官问了我关于我自己和我到目前为止所做的项目。我们简要讨论了这些项目。
然后他给了我两个问题要解决:
- 在旋转数组中查找和元素 https://www.geeksforgeeks.org/search-an-element-in-a-sorted-and-pivoted-array/
- 给定两个链表都代表一个数字。创建一个包含其总和的链表
与 -> https://www.geeksforgeeks.org/sum-of-two-linked-lists/ 相同
这些都是相当简单的问题。我 知道 了 解决 方案 并 向 面试官 解释 了好吧,我在面试后意识到的一件事是,当他们问候选人任何问题时,你应该总是问一些事情,表明你有兴趣。所以我向他询问了新的 SDE 将使用的不同技术以及类似的事情。我和他进行了很好的讨论,他也告诉了我很多关于他的事情。
然后我进入了下一轮😀
第五轮:技术面试
这一轮是关于设计问题。如果您查看之前的面试集,您会注意到微软确实会提出设计问题来测试候选人解决现实生活问题的能力。每个人在他们的个人面试中都有不同的问题。我得到的问题是:
- 你必须设计一个像记事本这样的文本编辑器。您关心以下功能——插入、删除和搜索。您可以假设文本编辑器的其他功能,如保存、文本显示等由其他开发人员处理。您只需要建议您将使用哪种数据结构来有效地执行相关功能
- 他告诉我慢慢来并给出解决方案。我给了他一个将文本视为单词链接列表的解决方案。链表中的每个节点都包含单词字符串和索引。对于链表中的每个节点,我将拥有 Trie 结构。我使用 trie 进行有效搜索。我的建议是,每当用户输入一个单词并将其插入 trie 时,我都使用 trie,并且该单词的叶子将包含该单词的索引以及指向链接中该节点的指针列表 。如果假设 trie 已经有单词,那么我增加叶子中的单词计数,并且叶子将包含一个向量,该向量具有单词出现的索引列表和单词在列表中出现的指针列表。编写代码并解释它如何处理所有极端情况。我们讨论了解决方案,他就不同的测试用例问了我一些问题。我的方法很好地处理了它们。他似乎很满意。他补充说搜索查询可能包含单词或短语。所以我对索引的使用可以处理短语搜索🙂。我还建议我们可以使用三元搜索树来代替 Trie 数据结构,因为这样会更节省空间。
我对这一轮有点怀疑,但我通过了😀这一轮之后,只有少数学生进入了最后一轮。
第六轮:HR+技术面试
面试官很有经验,也很愉快。他问我前几轮的表现如何。他正在审查我前几轮的绩效评估。他看了一眼我的简历,问了我做过的项目。他看到我在 IITB 实习过,所以他就那个项目问了我很多。他还问了我一些基本的人力资源问题,比如微软为什么要雇用你?在接下来的 5 年里,你认为自己在哪里?他对我的学习成绩和我的 AIEEE 等级印象深刻。问我如何处理我的第 12 届董事会考试和入学考试。他做得很舒服,几乎是在聊天和了解我。
- 然后他问了我上一轮给我的问题,即文本编辑器。我向他简要解释了我的方法。然后他基于文本编辑器给了我另一个问题。他问我如何有效地从文本中检索出 K 个最常用的单词。谢天谢地,在这一轮之前我刚刚经历了这个问题😀。我建议使用 Trie 和 Min Heap 的解决方案。
类似于 -> https://www.geeksforgeeks.org/find-the-k-most-frequent-words-from-a-file/
他让我写同样的代码。我把它写下来并向他解释。 - 他给我的下一个问题是:- 给定一个二叉搜索树,打印总和等于 k 且跳数最少的路径。即,如果有多个总和等于 k 的路径,则打印具有最少节点数的路径。
首先我给了他蛮力的方法。类似于 -> https://www.geeksforgeeks.org/root-to-leaf-path-sum-equal-to-a-given-number/
但我知道它没有使用我们有一个二叉搜索树的事实。所以面试官给了我一些提示——比如 BST 的主要标准是什么。我立即发现最小路径将始终位于节点的右侧,因为它具有更大的值。我告诉他他似乎很满意的解决方案。
然后他问我有没有什么问题要问他。所以我问他我可以在哪里改进自己,他说我不需要任何改进我做得很好,我应该继续做我正在做的事情😀这当然让我很开心🙂我问了几个关于微软的问题和然后离开了。
终于在一周后结果出来了,我收到了我已经入围全职职位的邮件😀
尖端 :
- 对数据结构有很好的掌握。从 Geeks4Geeks 解决尽可能多的问题
- 对面试充满信心。面带微笑,适应问题。面试官可以随时改变或扭曲问题只是为了让你感到困惑。
- 面试官非常乐于助人,如果您觉得与他们沟通困难......请解释您的方法,他们会给您提示。
- 当面试官提出问题时,请仔细聆听,不要立即急于编写代码.. 向他询问与该问题有关的不同标准和限制。
- 使用所有可能的测试用例检查您的代码并列出它们。
- 最后,即使您无法获得正确的解决方案,也只需解释您的方法即可。招聘人员分析你如何解决问题,而不是你必须有准确的解决方案。
感谢 geeksforgeeks,它真的帮助了我完成我的安置准备。关于数据结构的广泛问题肯定有很大帮助。