微软在 2021 年诺伊达位置的 SDE-2 面试经验。我将在这篇文章中分享我的经验,希望对你们中的一些人有所帮助。我有大约 5 年的Java开发人员(后端)工作经验。面试是他们招聘活动的一部分,所有面试轮次都是在线进行的,并在一天内完成。面试官非常有礼貌,乐于助人。
第1轮:
- 在 n 个排序列表上设计一个全局迭代器。 (应该有 hasNext() 和 next() 函数)
eg: arr1= {1,4,89,100} arr2= {2,67,90} arr3= {0,49,88} op: The calls to the Iterator.next() should return the sorted element of all the lists in order. example: Iterator.next() ->0 Iterator.next() ->1 Iterator.next() ->2 Iterator.next() ->4
- 给定一个二叉树。你在一个特定的节点,你的朋友在另一个节点。你朋友的节点着火,火在 1 个单位时间内蔓延到它的所有邻居。找到火到达你的位置的时间。
第二轮:
- 设计一个日志系统,可以记录各种事件,如错误、事件等。
第 3 轮:
- 设计一个服务,它接受来自用户的输入字符串并返回输入字典中存在的字符串的所有字谜。我们已经提供了一个英语词典,其中所有单词都按排序顺序出现,这本词典非常庞大,可以将其保存在主内存中。
- 您将获得名为 Spellcheck Service 的第三方服务,该服务接受单词列表,并且可以为输入单词列表中的每个拼写错误的单词提供建议/正确单词列表。假设您有一个网格服务器,其中包含一个包含许多页面的巨大 excel 工作簿,并且我们的浏览器加载了网格的一部分(即:我们看到浏览器首先加载一个初始块,当用户调用/滚动时它将加载更多页面)。设计一种显示数据流的方法,我们在浏览器中提供拼写检查功能,该功能逐行处理网格数据,并在拼写错误的单词以及该单词的建议列表处停止。当用户现在单击下一个按钮时,它应该能够在下一个拼写错误处停止。
第 4 轮:
- 考虑 OneDrive 的情况。假设您有一个用户将一些文件上传到驱动器,并且该用户的一些文件可能已被其他用户共享。
现在,我们必须设计一个服务,将按以下顺序列出文件:
在顶部显示一些最近修改/访问过的文件。
然后,按字母顺序列出所有文件(自己的文件+共享文件)
结果:我收到来自微软的邮件,说我被选中并要求提供所有详细信息和支持文件。