📜  微软面试体验(SDE II)

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

第1轮:

第一轮是机器测试,包括 3 个问题。

  1. 给定一个范围为 (0 – 49) 的数字数组和具有开始索引和结束索引的查询,找到每个查询的最大元素。 (我使用平方根分解)。
  2. 给定 N 个自然数,缺少 1,求这个数。然后,面试官将问题扩展到找到 2 个或更多缺失的数字。
  3. 给定一个连续的字符串流,找出任何时刻前 10 个最大的字符串。以下链接会有所帮助。

第二轮:

这一轮基于HLD(高级设计)。

1. 设计一个搜索引擎。处理自动更正和文本预测(如现代搜索引擎)的情况。解释(尝试 + DFS + 字符串处理)。然后,我们讨论了搜索引擎以及如何改善用户体验。

第 3 轮:

这一轮是基于我在德里弗里的项目。

1. 讨论绿色线程以及它们与内核级线程有何不同。解释使用多线程和多任务。哪一个表现更好。 (我在 I/O 密集型任务中使用了绿色线程。)

2. 使用 Api 网关和 lambda 等 AWS 服务设计身份验证。

3. 然后,他问我关于我的 Google Summer of Code 项目和我对开源的贡献,我们进行了非常健康的讨论。

第 4 轮:

这一轮是由一位高级经理进行的。

1. 给定一个大小为 n 的整数数组。如果 arr[i – 1] < arr[i] > arr[i + 1] for i in range 1 to n – 1 OR arr[i] > arr[i + 1] for i = 0 OR arr[i] > arr[i – 1] for i = n – 1;以小于 O(n) 的时间复杂度查找数组中的所有峰值元素。

2. 你得到了许多 6 GB 的文件,每个文件都有整数流。您的主内存中还剩下 4 GB 的空间(主要用于换出、换入)。您必须将所有文件中的整数排序序列存储在另一个输出文件中。你会怎么做?

然后我们讨论了红黑树、分片、redis 内部、单线程应用程序的概念和事件循环等。

第 5 轮:

这一轮是基于人力资源团队采取的行为技能。

他们问了几个基于情境的问题,比如你和你的经理之间是否在某些实施方面存在争执,你是如何解决的。你的经理被说服了吗?

1 个月后,我接到 HR 的电话,说我被选中了。