微软面试经历|第 76 组(校内)
最近微软来我们校园招聘,下面是我的面试经历。
MCQ 回合-
cocubes.com 上来自 C、C++、 Java (1 个问题)、aptitute 等的 15 道 MCQ 问题。没有负面标记。这一轮淘汰的学生很少。
嘿极客!是时候成为一个成功的故事而不是阅读它们了。查看我们最著名的DSA 自定进度课程, 现在以学生友好的价格为行业做好准备。如果您正在寻找更完整的面试准备资源,请查看 完整的面试准备课程 这将使您为梦想中的 SDE 角色做好准备!
为你的面试做好充分准备了吗?通过我们的测试系列测试您的技能,这将帮助您为亚马逊、微软、TCS、Wipro、谷歌等顶级公司做好准备!
编码回合 –
2个编码问题——
Q1.你得到一个大小为 M x N 的矩阵,矩阵中只有可能的值是
0 ?代表空位
1 ?代表一个新鲜的苹果
2 ?代表一个烂苹果
腐烂的苹果在 1 单位时间内将所有新鲜的苹果转化为与其相邻的腐烂的苹果。给定矩阵的输入,您必须计算所有新鲜苹果腐烂的时间。还要判断是否所有的新鲜苹果都可以在有限的时间内腐烂。(10 分)
Input
2 1 0 2 1
1 0 1 2 1
1 0 0 2 1
After 1 time unit, the matrix will be transformed to
2 2 0 2 2
2 0 2 2 2
1 0 0 2 2
After 2 time units the matrix will look like
2 2 0 2 2
2 0 2 2 2
2 0 0 2 2
因此输出应该是 2 个时间单位。 (相邻的定义只包括左、右、下和上单元格和非对角线单元格)
Q2. 从二叉树中的给定节点找到 k 距离处的所有节点 – https://www.geeksforgeeks.org/print-nodes-distance-k-leaf-node/。 (10 分)
一些学生入围了 Microsoft IT,一些入围了 Microsoft IDC,还有一些同时入围。
对部分学生进行了集体飞行,部分学生直接被选入面试。
组飞轮 –
对于 Microsoft IDC – 从输入字符串中删除所有重复项 https://www.geeksforgeeks.org/remove-all-duplicates-from-the-input-string/
对于 Microsoft IT – 设计名称、角色和权限系统,其中每当用户输入他的角色和名称时,就会输出授予他的权限(读取、写入或执行)。
采访 1 –
1.说说你自己。
2.在一个文件中有100万个单词。在该文件中查找 10 个最常用的单词。 https://www.geeksforgeeks.org/find-the-k-most-frequent-words-from-a-file/
我使用trie和min heap给出了解决方案。他让我编写程序,假设给出了trie和heap的插入和删除。
然后他问我什么应该是测试用例。
以下是测试用例——
a)if 文件中包含一个像“abc def”这样的用引号括起来的单词。这里“abc def”应该被视为一个词,但我的程序将“abc def”作为两个不同的词 - (i) “abc (ii) def”。
b) 如果文件包含制表符 (t) 、 r 等字符,那么我的程序将无法运行。
3.一些基于虚拟内存概念的问题。
4.写出任意6种排序算法的名称和平均case运行时间复杂度。
5.什么时候应该使用归并排序?
6.有任何关于微软的问题吗?
采访 2 –
1. 找到第一个参观所有加油站的循环之旅 – https://www.geeksforgeeks.org/find-a-tour-that-visits-all-stations/。
首先,我给出了一个蛮力解决方案。从每个汽油泵开始,检查是否可以进行循环游览。这个解决方案需要 O(n^2) 时间复杂度然后他问我优化的解决方案。
我无法优化,但是当他给出一些提示时,我给出了 O(n) 解决方案。之后他问了问题的运行时间复杂度,然后他让我编码。
2.在关系表中索引有什么用?
3.如果连接应用于两个表——table1 和 table2。假设 table1 的行数比 table2 多,那么 table1 连接 table2 需要更多时间来执行或 table2 连接 table1 需要更多时间来执行? (假设两个表都没有索引)
3.根据我的项目提出的一些问题。
4.您对哪种技术有热情?
5.有任何关于微软的问题吗?
采访 3 –
1.你对链表满意吗?
我说是,然后他从链表中问了两个问题。
2.克隆带有下一个和随机指针的链表 – https://www.geeksforgeeks.org/a-linked-list-with-next-and-arbit-pointer/。
3.序列化和反序列化带有下一个和随机指针的链表。
序列化和反序列化链表意味着将链表保存在文件中,然后使用该文件再次生成相同的链表。
首先我给出了 O(n^2) 运行时间解决方案,然后他要求优化。然后我使用散列给出了 O(n) 运行时间解决方案。
每当我遇到困难时,他都会给我提示。
面试 4 (HR) –
1.微软为什么要雇用你?
2.这个夏天你做了什么?
3.基于我的项目的一些问题。
4.根据给定的中序和前序遍历构造一个二叉树。 https://www.geeksforgeeks.org/construct-tree-from-given-inorder-and-preorder-traversal/
5.有任何关于微软的问题吗?
在面试中,他们给了足够的时间思考解决方案,每当我遇到困难时,他们都会提供帮助。
我准备安置的主要来源是 GeeksForGeeks。 GeeksForGeeks中几乎所有轮次提出的问题都有。我非常感谢 GeeksForGeeks 为准备安置提供了非常好的材料。