📜  微软面试经历|第94集(实习)

📅  最后修改于: 2021-11-17 09:58:12             🧑  作者: Mango

第一轮(在线轮,)

它有大约 15 个 mcq 问题,其中大部分是技术问题,几乎所有我们在大学学过的 CS 科目都有问题。我很幸运地猜对了大部分问题,因此被要求进行编码轮次。

第二轮
对于选定的学生,有一个编码回合,其中有 2 个数据结构标准问题,来自 GeeksforGeeks.org。我在所有测试用例都有效的情况下完全解决了一个问题,后来的结果在 1 个月后出炉。我又一次很幸运地通过了这一轮,而没有通过只解决一个程序来解决一个程序……

第三轮
下一轮是集体飞行轮(书面编程轮),随后是技术面谈。这些回合在班加罗尔举行。

  1. 找出二叉树中两个节点的最小公共祖先。
    我问分配给我的组的人是否可以更改节点的结构,使树具有父指针,该人告诉我可以。所以,我改变了结构,让它有父指针,还使用了一个布尔标志变量,然后就很简单了;当两个节点在从自身到根的路径中有任何公共节点时,则该节点是这两个节点的祖先。所以我假设函数被赋予了三个参数,root、node1 和 node2……)。首先我假设所有节点的标志为零,后来我从一个节点遍历到根,使该路径中的每个节点都将标志变量设置为 1。后来从第二个节点遍历到根,并在遍历时检查是否对于任何节点,标志变量已经是 1,如果是,那么我将该节点作为这两个节点的祖先返回……时间复杂度是 O(h)(我认为是)……
    我在所有测试用例中都很好地解释了这一点……因此分配给我的小组的人对我的解决方案感到满意。
  2. 给定两个已排序的数组(具有重复元素),从两个数组中找到第 k 个最小数。
    我解决这个问题的方法是,为每个数组维护一个索引,两者都初始化为各自数组的第一个元素。循环 k 次并在每次迭代中找到当前索引中的最小元素,并增加包含最小值的数组的索引。如果元素相等,则增加两个索引。时间复杂度为 O(k)。
    我用所有测试用例再次很好地解释了这一点,并确保分配给我的小组的人对我的解决方案感到满意。
    由于我确保我处理了极端情况,最重要的是让分配给我的小组的人对我提供的解决方案感到满意,因此我被要求进行面对面的面试。

面谈
快速简介。我们谈到了我的项目,他也想在我的手机中看到我的应用程序。他问了几个关于项目实施的基本问题。
后来他给了我一个技术问题,折叠和合并一个链表……我现在相对不那么紧张了,但在纸上编码仍然不是很好……犯了很多错误,但不知何故写了一些代码……但是有当他向我指出时,我发现并纠正了一些错误……但这一次我不够幸运,在这一轮之后被拒绝了。

微软的所有练习题!