📜  微软IDC实习经历 |设置 143(校园内)

📅  最后修改于: 2022-05-13 01:58:16.398000             🧑  作者: Mango

微软IDC实习经历 |设置 143(校园内)

微软于 2017 年 8 月 5 日来到我们的校园。

第 1 轮:这是一个在线编码轮,其中提出了 3 个问题。 CGPA 7 以上的人被允许坐下。超过 250 多名学生参加了这一轮比赛。我的测试中提出的三个问题是(每个学生都有不同的问题):

  1. 找到数组中的领导者。这是一个极客对极客的问题。请参考它。
  2. 第二个问题是找到字符串中公共后缀和前缀的最大长度。
  3. 第三个问题是,给出了一棵树,连同左右指针,给出了下一个指针,我们需要将每个节点的下一个指针连接到它的右兄弟。如果一个节点没有右兄弟,则使下一个指针为 NULL。可以使用队列来解决。预期时间复杂度:O(n)

这是一个 75 分钟的编码回合,我在 17 分钟内解决了所有三个问题。唯一的缺点或认为这是微软在 cocubes 上进行第一轮的挑战,当您提交问题时,您只能看到 2 个测试用例。所以你必须在这里处理时间复杂度。如果您编写的代码复杂性很差,那么它可能会针对这两个测试用例运行,但可能无法针对其他隐藏的测试用例运行。所以,要小心。

第二轮:大约 50 名学生入围,我是第二轮的其中之一。微软随后于 2017 年 11 月 4 日来到校园。这是一个小组飞行赛,其中 5-6 名学生被安排一名导师,所有学生都被问到 2 个问题。我们需要在 45 分钟内用纸笔解决它们。在这里,您被要求编写最佳代码,解释代码并编写测试用例。继续与导师交谈,并尝试与他们讨论您的方法。我们的问题是:

  1. 给出了这样的等式:27*63 + n Parts + 337/32。我们需要将其反转并输出为 32/337 + n 个部分 + 63*27。我以 O(n) 时间复杂度和 O(1) 空间复杂度解决了这个问题。
  2. 这个问题有点棘手。我们得到了一个二维矩阵。您可以从 4 个方向前进:上、下、右和左。您需要找到最长递增子序列路径的长度。它可以使用 DP 解决,但由于时间限制我无法应用 DP,所以我使用递归解决了它,但我的导师似乎对此表示满意。

问题是:[ [9, 9, 4]

[ 8, 1, 8]

[5,4,9]]

所以答案应该是 4。最长的路径是 4->5->8->9。

第三轮:

1小时后,结果公布,我被选中。大约 25 名学生被选中参加面试,被选中后,我的面试在短短 5 分钟内就开始了。

我的面试官是我小组飞行期间的导师。她是一个非常冷静和冷静的面试官。她首先让我介绍我,然后我告诉她我的机器学习项目。

  • 在谈到 ML 之后,她开始询问编码问题。她告诉我,当你被困在群飞的第二个问题上时,我会问你一些问题。我从里面很高兴,因为我准备得很好。所以,她问了我一个非常简单的问题。它基于 Kadane 的算法。
  • 首先,我告诉她可以在 O(n^3) 内解决。然后我告诉她 kadane 的算法方法,并给了她 O(n) 的解决方案。然后她让我为它写代码。然后她告诉我她想提高问题的水平,所以她问我是否觉得舒服。我说是的,然后她问我如何找到数组中最长子串的长度。
  • 我再次给了她 O(n^3) 方法。她告诉我在 O(n) 内完成。所以我确实使用动态编程在 O(n) 中解决了它。然后她想通过询问如果有超过 1 个最大长度的子串会发生什么来迷惑我,我告诉了她答案。吨
  • 然后她问我如果要打印所有这些子字符串该怎么办。我给了她答案。然后她让我在钢笔上写代码。最后,她很满意。
  • 她问我最后一个问题,如果 2 个数字(逐位)以相反的顺序存储在链表中,我将如何添加它们并将其存储在新的链表中。我告诉她我的答案并编码相同。
  • 然后她让我告诉它所有的测试用例。我给了她最大的测试用例,但她期待更多的测试用例。然后她自己告诉如果数字是浮点数可以有一个测试用例。然后她问我要不要问她什么问题,我问了她2-3个问题,最后她很满意,让我在外面等。

第四轮: 5分钟后,我接到了第二轮面试的电话。面试官是个45-50岁的有经验的人。

  • 他通过询问人力资源问题开始面试,例如为什么微软应该选择你?
  • 为什么你比别人好?他对我的简历印象深刻(在看到共同循环活动之后)。
  • 然后在 HR 20-25 分钟后,他开始问我一个编码问题。
  • 他问我的第一个问题是,有无穷无尽的数字流,每次添加一个数字时都必须给出中位数(问题可以在极客的极客上找到)。
  • 首先,我给了他 O(nlogn) 的方法,但经过一段时间的思考,我给了他使用 Heap 的 O(logn) 时间方法。他印象深刻。
  • 他问的下一个问题是给你一个数字,比如说 9733,然后你必须找到下一个最小的更高回文数,即 9779(必须大于 9733 并且应该是最小的,比如 11111 大于 9733 但肯定是 9779 <1111,所以应该输出 9779)。首先,我陷入了这个问题,但后来他给了我一些提示,我能够解决它。他让我写代码。我做到了。
  • 他非常高兴。我们握手,他说我们会告诉你结果。我很震惊,因为我期待还有 2 次面试。
  • 我问他如果那是我最后一次面试,他说是的,并告诉我在外面等。

5 分钟后,微软的协调员打电话给我,告诉我,我已经收到了海得拉巴的微软 IDC 的邀请,那一刻我真的很无语:')。我生命中最美好的时刻。我只是想给你们所有继续在 GFG 上练习编码的建议(我从面试前 2 个月开始就非常真诚地做了 GFG),现在明年将去海得拉巴。谢谢GFG🙂