微软面试经历 |设置 40(校外)
有一天我收到邮件说我安排了第二天在班加罗尔的面试。
第一轮现场:
我认为这一轮只是为了检查我是否处理了所有边界情况的问题以及我的速度?问题比我预期的要容易,但是检查我的速度很长
一般问题 1:介绍一下你自己?
GQ 2:介绍一下您在当前组织的工作?
Q1:您给出了一个由 0 和 1 组成的数组。编写代码以仅交换数组中的两个元素,因此该数组使所有元素保持相同顺序形成的数字应该是最大的一个。
输入/输出:11000101 输出/输出:11100100
现在他修改了问题:假设给出了一个数字而不是数组。交换这个数的两位,找出交换这两位后形成的最大数
他再次修改让数组元素是十进制数(不是 0 和 1)。交换两个元素并找出最大没有形成。编写代码。
他再次修改了相同的问题,假设给出了一个数字,交换数字的两位数字并找到由它形成的最大数字。
他只是在检查我的编码速度,并确定我是否检查了所有边界情况。
Q2:给定链表的成对交换元素(当然是通过改变链接)。在查看我的代码后,他说我犯了分段错误,但我试图说服他我正确编写了代码并且他被说服了。
这一轮之后,HR 得到了不同的反馈,所以他决定继续我的下一轮。
第 2 轮:
这一轮基本上集中在我解决问题的能力上。编码并不难,但思考和方法至关重要。
Q1:给出了一个有向图。我必须制作一个函数,该函数将节点的值作为输入并打印在输入节点上具有入射边的所有节点,并打印输入节点具有直接边的所有节点。他一直无视我告诉的解决方案,因为他希望它以特定的方式解决。
Q2:在直方图中找到最大的矩形区域。我很久以前就读过这个问题,但不记得了,但幸运的是我能够以很少的困难解决它。
第三轮:
Q1:计算机科学基础:多线程,关于动态内存分配的长时间讨论,内存泄漏,一些操作系统基础。他帮助我解决了一些编译器设计问题,最后我们找到了解决方案。
Q2:你有一个包含数百万字的流。在每个实例中找到该流中最常见的 10 个单词
Q3:如果不能以任何数据类型存储,您将如何存储一个非常大的数字?
第四轮:
这是一个设计好的回合,面试官是首席开发经理。
又一轮以“告诉我你自己和当前组织的工作”开始。
问题 1:他打开网站 msn.com 并要求我使用我的 OOP 和 MVC 理解来设计“stockscreener”层次结构的一部分。并要求我编写一个类,向用户显示股票市场是开市还是收市。如果它关闭了,那么我必须打印未来市场何时开放。为了找到未来的日期,他给了我一份假期清单,半天,显然市场将在周末关闭。因此,将此信息存储在适当的数据结构中,并在查找未来日期时使用它。
这个问题花了大约 35-40 分钟的时间
Q2:对于数独游戏,我必须使用 OOP 和 MVC 理解来设计屏幕。如果一列可以是空的,您可以在将来放置一个可编辑的数字或一个可根据您的要求更改的可编辑数字或一个固定数字(仅由系统插入,用户无法更改它们)。这个问题很简单,所以只用了 15 分钟。
Q3:最简单的是,对于给定的 BST,我必须以尽可能最佳的方式按升序打印位于给定范围内的所有数字。
第五轮:
这是最后一轮,面试官是“合作伙伴发展经理”。我知道他有否决权,今天他将决定我的命运,所以我更加紧张和清醒,但他让我很舒服和受欢迎。前 10 分钟左右,我们只是聊了聊我们对电影的看法,然后问我认为宝莱坞最被低估的演员是谁?我说 Jimmy Shergill,他说他也这么认为。
被问及我的大学生活和成就?迄今为止最大的成就是什么?为什么我在第 10 班的百分比较低?你为什么要换公司?
然后他转向拼图。
Q1:一个房间里有N个人,其中一个是名人。在房间里,每个人都认识名人,而名人不认识房间里的任何人。你有 1 个问题“你认识他吗?”你可以向房间里的任何人问这个问题 N 次。你问问题的人会回答“是的,我认识这个人”或“不,我不认识这个人”。通过向你想问的人问同样的问题 N 次,你必须弄清楚谁是房间里的名人。如果A知道B并不意味着B知道A。
之后他又问了我已经知道的 2-3 个谜题,我告诉了他,所以他问了解决方案并继续前进。
Q2:给定一个 1 和 0 的矩阵,全 0 是水,1 是陆地,首先找出数组中池塘的数量(岛屿问题的逆向)。如果一次更改可以将 1 转换为零,那么找出我们需要进行的最小更改次数,以便矩阵中只有一个池塘。
最后,他问我是否正在准备其他面试或更高的学习,所以我知道所有的谜题。我说不,但我喜欢拼图,而且我很擅长。
这就是全部。非常感谢 GEEKSFORGEEKS,你们让我们的生活变得如此轻松。就面试准备而言,你是我的谷歌。?