📜  微软面试体验(2020年暑期实习在校)

📅  最后修改于: 2021-11-16 14:39:07             🧑  作者: Mango

在线回合:

这一轮在mettl.com 上举行。一组三个问题,每个学生的问题不同。

  1. 给定二次方程的系数,求二次方程的根并返回最多三个精度的值。就像如果答案是 3.0 则返回 3.0 本身但如果答案是 3.1249 则返回 3.125。简单的问题,找到判别式并应用公式。
  2. 给定两个 1 和 0 的列表。如果两个列表的第一个元素相同,则将其从两个列表中删除。如果与第一个列表中的不同,则弹出第一个元素并将其添加到最后。列表中将剩下多少个数字?这个问题可以使用堆栈和队列来完成。
  3. 这个问题基于同时对两个数组进行排序。

他们将 27 名学生列入团体飞行赛的候选名单。

第 1 轮(团体飞行):

有两个问题,我们被告知要在纸上写出完整的代码。

  1. 找出这个数字是否幸运。 https://www.geeksforgeeks.org/lucky-numbers/ 我给出了迭代方法。
  2. 查找树是否是二元的。 https://www.geeksforgeeks.org/a-program-to-check-if-a-binary-tree-is-bst-or-not/

第 2 轮(技术轮 – 1):

首先,面试官问了我大约10分钟的项目相关问题。

  1. 给定一个字符串,查找它是否是有效的括号。首先我给出了使用堆栈的方法,然后面试官要求我优化空间复杂度。
  2. 我得到了两个链表并将它们相乘并将其存储在第三个链表中。您只能为第三个列表和 O(1) 额外使用新空间。

我被要求在纸上(C 或 Cpp)为这两个问题编写完整的代码。

第 3 轮(技术轮 – 2):

  1. 第一个问题是连接同一层的节点。
  2. 给定链表和整数 m。我需要旋转链接列表的每个 m 个节点。例如,如果我的链表是 1–>2–>3–>4–>5–>6–>7–>8–>9–>10–>11–>12–>13–>14 而 m 是4 然后返回 4–>3–>2–>1–>8–>7–>6–>5–>12–>11–>10–>9–>14–>13。约束:时间复杂度 O(n)。空间复杂度 O(1)。节点值无法更改。

在这一轮我也被要求写完整的代码。

第 4 轮(技术轮 – 3):

  1. 有单核 CPU 并且此代码正在运行“int main(){while(1);return 0;}”(无限循环),如果我们尝试打开记事本,它会打开吗?说明原因。我解释了循环调度。
  2. 给定一个迷宫,定义适当的数据结构来存储它。解决迷宫并打印路径。如果需要,我被告知要做出一些假设。我假设方形迷宫并使用两张地图存储它。为了解决,我给出了回溯方法。然后他让我写伪代码。

感谢 GeeksforGeeks,因为您可以在此平台上找到大部分问题。