📜  微软面试经历| Set 91(2 年 IDC 经验)

📅  最后修改于: 2021-09-23 05:49:45             🧑  作者: Mango

这是我完成所有准备工作的主要论坛。非常感谢 GeeksForGeeks!这里是回馈..

我接到了来自 IDC 的 Bing 团队的电话。我在 CSE 获得 BTech 职位后有 2 年的工作经验。我一共接受了 5 次面试,如下所述。

1)第一个是飞行/禁飞轮。起初,围绕我以前的工作经历进行了一些讨论,面试官在这里和那里问了我一些技术和设计问题。然后我被要求编写代码来找到要排序的最小子数组,以便对整个数组进行排序。答案可在 https://www.geeksforgeeks.org/minimum-length-unsorted-subarray-sorting-which-makes-the-complete-array-sorted/ 获得。我必须为此编写优化的代码。
第二个是为家具场景做ER图。这里的重要部分是家具的材料可以是一个单独的类,而不是床、椅子、桌子等家具项目中的属性。因此 Material 可以具有相关的属性,例如 IsFlammable、IsWaterResistant 等。

2) 在这次面试中我只得到了一个问题,我被要求在黑板上解决。问题是向由链表表示的数字添加一个数字,其中每个节点都是数字的一个数字。这里的限制是不能修改链表,除了答案中要修改的数字和数字可以无限长。所以你必须避免内存溢出的问题。所以没有递归,没有堆栈,没有链表的副本,没有改变原始链表,就像 geeksforgeeks 上的解决方案所建议的那样。要跟踪要迭代地添加到前一个数字的进位,您基本上必须跟踪最后一个数字之前的最后一个连续 9 之前的数字。例如在 9719938996 中,这将是从右数第 4 位的数字,即 8。所以现在在一次通过中,您可以计算出 9(如果有)以及最后一位数字的位置。然后可以轻松更改所需的数字。

3)在这一轮中,面试官在他的电脑上打开了一个控制台应用程序,让我在那里编码。我相信他实际上注意到了我编写代码所花费的时间以及它是否在第一次编译。我更关注代码的准确性而不是我花费的时间。我被问到的问题是:
检查一个数是否是另一个数 X 的幂。然后我们谈到了 X 是 2 的情况。对于这种情况,我们讨论了如何通过检查位来做到这一点。
检查两棵二叉树是否相同。我还必须初始化并使用测试用例运行它。完成代码后有一个关于line wise optimization的讨论。
将矩阵旋转给定的距离。旋转距离为 1 的类似答案可以在 https://www.geeksforgeeks.org/rotate-matrix-elements/ 找到
然后是关于设计图书馆在线门户的设计讨论。在我给他一个基本的架构之后,他问我将如何实现搜索功能。我建议用书名、作者、ISBN 等来做。他根据一本书的内容问我如何做。我告诉他我会为每本书存储标签,以便在搜索时使用。他喜欢这个主意,但催促我如何进行适当的文本搜索。我告诉他使用哈希表和 blob。也许他正在寻找尝试,但由于我对它们不太熟悉,所以我避免了。他似乎很满意,结束了采访。

4) 他让我自我介绍,谈谈我的项目和我所面临的最大技术挑战。然后让我在纸上为 LinkedIn 功能编写代码,其中向我们展示了两个人的联系深度。解决方案是一种用于图形的最短路径算法。他让我优化我对 O(1) 额外空间的答案(除了图结构的空间)。
下一个扫描包含一系列问题。我要为像 Amazon 这样的在线零售商提供 Customer、Item、Order 的非正式模式。除了外键关系,他对我如何存储订单很感兴趣,因为每个采购订单可以购买多个项目。答案是有一个像 ItemizedOrder 这样的关系表,它存储订单和项目 Id 的映射。然后他让我写一个查询来获取在给定日期之前没有购买过某件商品的所有客户。然后他说,对于像书这样的任何项目,该公司必须从许多书商那里获得他们的书,这些书商有不同的模式和存储书籍信息的方式。他让我设计一个可以处理这种变化的系统。我给了他一个门户或 Web 服务作为不同供应商可以上传数据的端点。然后,我的 Web 服务将有一个规则引擎,该引擎将映射不同的模式,尽可能为 Subtitle 等缺失值分配默认值,忽略 NoOfPages 等不重要字段的缺失值,否则对于强制数据不足的项目(如 Price)返回错误消息。然后,此规则引擎会将处理后的输入存储在我们的数据库中的模式中。

5)这是和一个非常资深的人在一起的,但更像是一种形式。面试官告诉我,我在前 10 分钟就被选中了,然后只是想分析我的工作和对合适团队的偏好,并设定我的期望。他回答了我问的一些问题,并在半小时内结束了采访。

一般来说,我每次都会被问到 2 个常见问题——描述你以前的工作经历以及你为什么想加入 Bing。大多数问题我都没有立即得到解答,但我大声说出了我的想法。当我陷入困境时,他们都指导我并促使我进行可能的优化。两次,我还获得了我的代码未涵盖的场景示例。因为我知道我在为 Bing 面试,所以我在每一轮之后都会问面试官相关的问题。每次面试都安排了 1 小时,但第三次被拉长到 1.5 小时,最后一次很短。除了第一次面试,其他的结果都是集体的。所以即使你在一个方面做得不好,如果你能很好地管理其他人,你就会被录用。一切顺利!

微软的所有练习题!