📜  微软IDC面试经历| Set 168(校外实习)

📅  最后修改于: 2021-11-10 06:23:23             🧑  作者: Mango

我通过推荐计划申请了微软的软件开发工程师实习机会。 2-3周后,所有通过推荐申请的候选人都被邀请在co-cubes平台上进行在线编码测试。
在线编码回合(在 Co-Cubes 上):-

在 75 分钟的时间内给出了三个问题来解决。顺便说一下,在 co-cubes 平台上解决是一场噩梦,没有自动完成,甚至无法手动复制粘贴或测试您的代码。

问题1(2 -标记):它可能已被比较两个字符串或添加两个字符串(字符串的每一个字符是从0 – 9)。

问题 2(3 – 分数) :找到其中包含不同元素的最大子数组。
https://www.geeksforgeeks.org/subarrays-distinct-elements/(这里要求计算总和)

问题 3(5 分) :编写一个函数,该函数接受二叉树的根作为其参数,并返回距离根最大深度处的所有叶节点的总和。

https://www.geeksforgeeks.org/sum-leaf-nodes-minimum-level/

这个问题正好相反,但核心思想保持不变。

例如 1
……../ \
…….2 3
……/ \
…..2 1
答案:- 2 + 1 = 3

解决方案的系统测试是在您提交所有 3 个问题后完成的,并且不会向您显示结果(无论 3 个问题是否都正确)。然而,你得到了一个关于 co-cube 的非常弱的测试用例来检查你的解决方案,这很容易显示出误报。
您必须解决所有 3 个问题才能获得本轮资格,并尝试编写尽可能最佳的解决方案。

所有通过编程的学生都被邀请到 Microsoft Gurgaon 进行进一步的面试过程。

组飞轮: –

大约 60-65 名学生出现在小组 – 飞轮。这是笔纸测试。我们只提供了一个问题,需要在 45 分钟内解决。

问题 –给定一棵二叉树,将其转换为具有以下条件的 n 叉树,同一级别的每个节点在单个链中从左到右相互连接,整个级别连接到根 R。

例如 1 R
………../ \ / | \
………2 3 -> 1 2 4
……./ / \ | \
…..4 5 6 3 5
………………………………….\
………………………………………..6

这个问题的一部分类似于 https://www.geeksforgeeks.org/connect-nodes-at-same-level/
在下一部分中,我们必须为我们的输出树定义一个数据结构(这很重要)并进行相应的连接。

我们必须编写从输入到输出的整个程序,以及一些测试用例并试运行您的解决方案(他们想测试您的程序测试技巧以应对极端情况)。他们还期待优化的解决方案。您可以使用任何语言。

注意: –尽量编写干净的代码并使用有意义的变量和函数名称,并继续与指定的导师讨论不同的方法。

我使用队列和级别顺序遍历解决了它,输出结构定义如下:

结构节点{
结构节点*根;
vector child;
整数值;
};

近 20-25 名学生被选入下一轮。

第 1 轮(技术): –

问题 1 –给定一棵二叉树,返回其中最大 BST 子树的根。
https://www.geeksforgeeks.org/find-the-largest-subtree-in-a-tree-that-is-also-a-bst/

我不得不在纸上从输入到输出完全编码,然后解释整个代码。
为它编写一些测试用例(包括一些边缘情况)并试运行我的解决方案。

面试官先看了我的简历。然后他让我解释我的一个项目(特别是我做了什么部分)。
然后他开始从操作系统问我问题(他从调度、上下文切换、PCB、虚拟内存中问),他对我印象深刻,因为我几乎给出了所有正确的答案。

面试持续了大约 45 分钟。

第 2 轮(技术):-

问题 1 –给定一棵二叉树,打印其左视图。
https://www.geeksforgeeks.org/print-left-view-binary-tree/
我必须编写它的 leftViewUtil函数。

问题 2 – WAP 将数组旋转 k 个元素。
https://www.geeksforgeeks.org/array-rotation/

我只需要解释我的逻辑,我给了他两种方法,第一种是使用 O(k) 额外空间(方法 1),第二种是上述链接的方法 3。他对我的逻辑很满意,但他想考虑另一种方法,所以他给了我一些与反转数组有关的提示,这样代码就会有 3 行。
在这个提示之后,我能够给他他想要的方法。
https://www.geeksforgeeks.org/program-for-array-rotation-continued-reversal-algorithm/

第 3 轮:-

我的采访是由一位资深人士进行的。他让我自我介绍,然后开始询问我的兴趣(与 CS 相关)。在整个采访过程中,他一直在与我交谈,讨论不同的事情并提出问题。他问我最喜欢的问题。我给他描述了一个动态规划问题。然后他问了我很多与操作系统相关的问题(临界区问题,内存管理)。

之后,他问我有什么问题要问他。我问了几个问题,就结束了。

最终结果在半小时内宣布,我被选中了。和我一起选择了 4-5 名学生。

整个面试过程从上午 9 点到下午 6 点进行。

建议 :-
数据结构和算法的清晰概念是必要的,除了 OOPS 概念的知识外,OS 和 DBMS 也很重要。项目也是必要的,有一些有趣的项目肯定会吸引面试官的好奇心。

如果您被卡住或无法回答,请不要惊慌。尝试从非常基本的方法,从蛮力到实际解决方案,并不断与面试官讨论各种方法,这是最重要的部分。

GFG 必须能够在面试中表现出色。