📜  微软IDC实习经历| 2021 年校内

📅  最后修改于: 2021-11-18 02:50:41             🧑  作者: Mango

微软是第一家参观我们园区的公司。所有 CS、IT、ETC 学生在 7.5CGPA 到第 4 学期且当前没有积压的情况下都有资格获得此资料。

第一轮(在线编码测试):第一轮由 2 道编码问题组成,在 Codility 平台上进行,总时间为 90 分钟。

  1. 问题的主要思想是,在一个数组中,将给出一些掷骰子的结果,而一些结果不存在。为所有结果(包括不在给定数组中的结果)给出了平均值,并且还给出了该数组中不存在的结果数。因此,我们必须为那些缺失的骰子结果找出任何组合,以便正确满足上述所有条件。如果没有这样的组合是可能的,只需返回一个空数组。

    例子

    arr = [ 1, 2, 3, 3 ],  Mean = 2, 
    Number not present in array = 2
    so a possible combination of outcomes
    not present in the array may be [ 2, 1 ]
  2. 有一个关于这个问题的故事,但主要思想是给出一个仅由 3 个字符组成的字符串,“a”、“b”和“?”。我们不得不替换“?”使用“a”或“b”使得没有3个连续字符变得相同,即不会有任何子串“aaa”或“bbb”。

本轮共有38名学生入围。

第二轮(技术面试):是技术面试,我和面试官的互动非常友好。几句交流后,他问我最喜欢什么数据结构,我告诉他我熟悉所有的数据结构。然后他给了我一个关于字符串的问题。

  1. 主要思想是我们必须解密一个字符串,比如 2(a)3(b) 将写为“aabbb”,1(a)2(1(c)2(d)) 将写为“acddcdd” .他首先让我在记事本上解释逻辑,我用 Stack 解释我的逻辑,他对逻辑很满意并告诉我编码。

这是一个一小时的采访,最后,他问我是否有任何问题要问他。

我被选中参加后续几轮面试。

第三轮(技术面试):这也是一个技术轮,我被问了两个问题。

  • 在这个问题中,有一个给定的文本和一个给定的模式。我必须找到所有索引(子字符串的起始索引),其中文本的任何子字符串都是模式的字谜。这是一个滑动窗口问题,最初,我给出了我的蛮力解决方案,后来他要求我优化它,尽管我无法做得很好,因为我当时有点紧张。他意识到了这一点,并又问了我一个问题。
  • 在一个文件系统中,写入了 10 亿行,我必须找出该文件中重复次数最多的 K 行。我用哈希映射和堆数据结构给出了我的解决方案,他对那个解决方案印象深刻,并问我是否能在那里找到任何边缘情况。

这也是一个一小时的面试,我被选中参加下一轮 HR。

第 4 轮(技术 + HR 面试):面试以一个非常常见的问题开始,“请介绍一下你自己”。然后他问我关于我的大学、我的爱好和我的项目。

  • 我的简历上有 4 个项目,他让我解释任何人。我用所有细节解释了我的一个项目,比如我从项目中学到的东西,我面临的困难是什么。他对此印象深刻,并转向了一个技术问题。
  • 主要想法是建立一个儿童游戏,其中一个孩子将输入随机字符,我们不得不说是否可以通过重新排列输入中的这些字母来生成任何有效的单词。还给出了一个有效的单词列表。我用排序和哈希图告诉我的解决方案。他对解决方案印象深刻,并进一步修改了问题,并要求我也检查输入的所有子序列。我正在用蛮力接近并要求我对其进行优化。那个时候我做的不是很好,经过几次讨论,面试结束了。

4-5 小时后,宣布结果。

判决:已选择

我的建议

  • 了解每个数据结构的基础知识,并对时间和空间复杂度有很好的理解。
  • 始终首先提供蛮力解决方案,即使您知道优化的解决方案,因为它反映了您处理问题的方式,也意味着您非常了解时间和空间的复杂性。
  • 始终与面试官互动,无论您在想什么,都要大声思考。
  • 有时面试官可能想看看你如何开始一个问题,如果没有提供测试用例,总是要求至少提供 2 个测试用例并讨论所有的边角用例。
  • 做你真实的自己,不要在面试中表现得过于聪明,要保持谦虚。
  • 不要照搬前辈的项目,只放那些你实际做过的,因为会有很多交叉问题。
  • 面试结束时,面试官总是会问“你有什么问题要问我吗?”永远不要回答“否”作为这个问题的答案,如果你提出问题,就意味着你对这家公司感兴趣。
  • 面试时要自信,脸上带着微笑。