我在 Microsoft 前一家公司的一位同事推荐我担任 SDE-1 职位。一个月后,他们打电话给我,问我是否有空参加面试,他们安排在同一天进行 3 轮面试,间隔一周。那天,我进行了 3 次 1 小时的面试,中间有一些休息时间。由于疫情原因,所有采访都在网上进行。
第一轮:就他和我的在家工作进行的情况进行了一些简短的闲聊。后来他自我介绍了一下,问了同样的问题。
谈到技术问题,他问我算法,还让我编写这个和这个代码。讨论了时间复杂性和边缘情况。
然后他给了我最后 5 分钟的时间向他提问。
第二轮:这一轮没有任何介绍就开始了,他直接跳到了问题中。问我算法,后来编码并运行它。然后他让我优化它。最后,他问我有没有什么问题。
第三轮:这是当天的最后一轮。他自我介绍并问我如何缩短 API 响应时间(我在简历中提到过)。我们讨论了 5-10 分钟。然后他询问了我在我以前的公司工作的项目(不能在这里分享这些细节)。讨论用例和完整的实现设计。然后,他问了我一个类似于系统设计的问题。最后,他问我有没有什么问题。
在这 3 次面试之后,那天晚上,HR 打电话通知我,我被选中参加第 4 轮也是最后一轮。他安排了 4 天后的会议。
最后一轮:他首先让我打开手机,并告诉我打开任何消息应用程序并输入一些内容。然后,他指出在打字后和打字时查看建议。然后,他让我为新购买的手机设计该功能。使用 Tries 和三元搜索树有多种方法可以做到这一点,我们讨论了其中的一些方法,并深入讨论了其中一种方法。后来,他问我关于分布式文件系统的问题,以及为什么以及何时使用它们。以及如何处理单点故障问题。到这个时候差不多50分钟就完成了。然后,他让我编写数独求解器的代码。我解释了算法并进行了演练,他被说服了。但是,当我运行它时,由于一个非常小的错误,测试用例没有通过。这一轮发生了大约1个半小时。
差不多一周后,我接到了微软的电话,告诉我我被选中了。我非常高兴。这对我来说就像梦想成真。