微软 SE-2 面试体验
在微软的职业页面充斥着 20 多个应用程序之后,我终于有幸采访了他们。一共有5轮面试。前四轮是技术性的,时长约为 70 到 80 分钟。最后一轮是技术管理,持续了大约 40 分钟。
第一轮:面试从介绍和简历讨论开始,大约 10 分钟,然后讨论了 2 个解决问题的问题。
- https://www.geeksforgeeks.org/strobogrammatic-number/
- 第二个问题是围绕二进制搜索,我们需要找到最少的 API 调用次数才能达到特定的结果。
第 2 轮:面试从详细的简历讨论开始,讨论了 React、Elastic Search 等框架的架构、SQL 和 NoSQL 数据库之间的区别,因为这些是我简历中的几个术语,这持续了大约 20 分钟,然后是 1问题进行了讨论。
- 问题 - 我们有一个包含无限点的 2D 房间,我们得到一个运动传感器点列表 (x, y, r),其中 x 和 y 表示位置,r 表示运动传感器能够检测到的半径。我们必须找出是否有可能从房间的一端开始到达另一端而不被运动传感器检测到。
在讨论了大约 20 分钟后,我提出了一个 BFS 解决方案,然后讨论了时间复杂度和空间复杂度。
第三轮:面试再次开始,介绍和讨论之前的项目和问题,比如迄今为止最具挑战性的项目,从之前的项目中吸取教训,然后讨论1个DS相关问题和1个设计相关问题。
- https://www.geeksforgeeks.org/lru-cache-implementation/
- 设计日志系统——这是一个开放式的低级设计问题,面试官有兴趣更多地讨论 OOP 概念和设计模式。我创建了系统的类和常用功能,并讨论了单例模式以保持集中式日志记录系统。
在此之后,面试官花了 10 分钟的时间讨论了我被聘用的团队以及我可以期待的那种学习经历。
第四轮:面试又开始了,介绍,简历讨论和之前项目的讨论,问题比如最具挑战性的项目,我在那个项目中遇到的问题以及我想出的解决方案。围绕 SQL 和 NoSQL 数据库进行了大量讨论,然后是一个与高级设计相关的问题。
- 设计一个提醒应用程序——这是一个开放式设计问题,我们都讨论了应该到位的要求和基本设计组件。设计应该是这样的,如果移动设备处于离线状态,那么通知应该发布在其他连接的设备上,比如笔记本电脑、扬声器、智能手表等。我讨论了长轮询、消息队列系统等概念来解决这个问题。
第五轮:这是最后一轮。它简短而准确。与其他轮次一样,它也是从介绍和对以前项目的一些讨论开始的。然后询问加密技术,然后是与设计相关的问题。
- 为 windows 文件搜索设计一个搜索自动完成系统——我用 Trie 数据结构讨论了它,然后面试官问了一些关于优化更新和插入 trie 节点的问题。
整个过程花了大约 20 天的时间。所有的面试官都非常友好和安慰,如果你被困在某个地方,他们会给你提示,所以仔细倾听并抓住这些提示非常重要。我在第 5 轮后 2 天收到了他们的录取通知书。
这就是我在微软的梦幻经历。所有最好的人都参加你的梦想面试!!