微软采访 | 15
我最近接受了微软的面试,我被选中了。
我非常感谢 geeksforgeeks 网站,它在一个地方为技术面试提供准备材料。我的选择也归功于我的朋友“Ankit Tripathi”,他在我的准备过程中帮助了我很多。
我在这封邮件中附上了我的面试经历文件。
笔试: 30 道基于算法和逻辑能力的 MCQ 以及 2 道编码问题。
电话面试:与您的简历和项目相关的所有问题以及一些行为问题。
第1轮:
- 问题1。为给定字符串的运行长度编码就地编写代码(不使用任何额外的内存)。
Sample Input: aaaaaaaaaabcccccc Output: a10bc6
GeeksforGeeks 链接
- 问题2。为将给定整数转换为字符串的函数编写代码。 (仅使用一个 for 循环)。检查所有边界情况。
- 问题3。假设您要在上午 9:00 到晚上 20:00 组织一个聚会。您已邀请 'n' 位客人参加聚会。您将获得所有客人的到达时间和离开时间。每次有新客人来,你给他一杯酒,当他离开时,你把酒杯拿回来。如果有人离开并归还了杯子,您可以将同一个杯子送给刚到的新客人。
根据给定的客人时间表,确定聚会所需的最少眼镜数量。客人可以随时进出,但您有固定的时间表。为给定的问题编写代码。
GeeksforGeeks 链接
第 2 轮:
- 一些与简历和课程中学习的科目有关的问题。
- 问题1。我们如何在不使用堆栈(甚至不使用堆栈进行递归)的情况下进行树遍历。为不使用堆栈的顺序遍历编写代码。如果我们想要进行前序或后序遍历,函数会发生什么变化?
GeeksforGeeks 链接 - 问题2。编写代码以在单链表中查找循环并修复它。
- 问题3。给定一个有两个指针的链表,一个是下一个指针,另一个是随机指针,它可以指向列表中的任何节点(向前、向后或自身),您必须在不修改原始列表的情况下复制该列表。以 O(n) 时间复杂度编写相同的代码。
GeeksforGeeks 链接
第三轮:
- 问题1。给出检查两个字符串是否是字谜的不同可能方法(使用和不使用哈希表)。每种方法可能的优点和缺点是什么?为这种方法编写代码,该方法首先对两个字符串进行排序,然后逐个字符字符匹配(O(nlogn) 方法)。您将使用哪种排序方式,为什么?还要写测试用例。
- 问题2。编写代码以在尽可能短的时间内计算数组中的反转次数。有哪些不同的可能方法?
- 问题3。给定两个表示为链表的巨大数字,编写一个函数将它们相加并返回一个相同格式的数字。
Ex: 950 represented as 9->5->0->NULL 150 represented as 1->5->0->NULL then, the output should be 1->1->0->0->NULL
- 问题4。我们有“n”个人参加聚会,其中只有一个人可以成为名人。他可能会也可能不会出现在聚会中。每个人都知道名人,但他不认识任何人。所有其他人可能彼此认识,也可能不认识。如果一个人'A'知道'B',并不意味着'B'也知道'A'。你只能向某人问一个问题“你认识这个('X')人吗?”他只能回答是或否。你的工作是在最少的问题中找到名人。
第四轮:
首先,他问了简历中的一般性问题。
- 问题1。编写代码以查找二叉树中两个给定节点的最小共同祖先。 (递归和迭代方法)。
- 问题2。您将使用哪种数据结构来实现“malloc”和“free”功能? (你得到了一个指向一大块内存的指针)。编写完整的代码来实现这两个函数。
每一轮面对面的持续时间约为 1 小时。面试4天后公布结果。每次面试都是淘汰赛。问题不是很难,但他们非常关注代码的准确性和效率(它应该在所有可能的输入案例上运行)。
微软的所有练习题!