微软来到我们的校园。符合条件的分支机构是 CS 和 IT。一共进行了4轮。
第 1 轮:MCQ 轮
本轮共有15个MCQ,分配时间为30分钟。问题主要来自C/C++/ Java输出查找、指针和引用以及基本谜题。
我能够解决 12 + mcq 的问题。我设法获得了这一轮的资格。
第 2 轮:在线编码轮
在这一轮中,我们向我们提供了 2 道编码问题,需要在 1 小时内解决。
第一个问题:
使所有橙子腐烂所需的最短时间
第二个问题:
为您提供一棵二叉树,并给定两个整数 n 和 k。您必须确定与数据为 n 的节点相距 k 的所有节点的数据总和。
我设法解决了问题。 2 完全。两者都使用 BFS。这是我的做法:-
1.直接用BFS遍历数组一次,只能得到O(n^2)的解。
2. 以找到的节点为源点从树中形成一个图,然后进行 BFS Sum 以找到所需的答案。
第三轮:面对面面试(150分钟)
1. 简单讨论我的项目。(关于Java的2048游戏和我做过的其他一些项目。)
2. 讲述一些关于我的事情并阐述我的爱好。
3. 给出站点列表和它们之间的距离,并找到所有对的最短距离。(O(V^3) 中的 Floyd warshall 算法。)
4. 给定 10 亿个数字。在 O(n) 中删除重复项,数字范围直到 10^5。很多。)
5.实现字典(我问了基本的布局,被告知已经输入了很多词,每个词都有其定义,同义词和反义词)。(我从 vector < vector< 字符串> > 开始,然后是 HashMap,然后是 Set < 字符串,pair > 然后也是 RB Tree 方法。)
6.我被要求为上述每个数据结构及其搜索、插入和更新的复杂性编写伪代码。
– 我在这一轮中给出了所有答案。
第 4 轮:技术轮(90 分钟)
1.我被要求介绍一些趋势技术。(我解释了云、大数据等)花了 30 分钟,他看起来印象深刻。
2. 接下来我被问到如果我被安排在 IDC 或 IT 那么我更喜欢哪一个以及为什么。这是一个互动会议,最后我选择了 MSIT,他提到了原因,他给了我最后的反馈。
– 我在这一轮中给出了所有答案。