微软实习经历 |在校园
第一轮:在线轮次,有3道编程题,1小时30分钟,难度一般。 3道题中答对2道题的人,均被选入下一轮。
第二轮:我们在第二轮进行了个人面试,从我的介绍和对我的项目的简短讨论开始。然后面试官问了我两个必须在纸上解决的编程问题。在第一个问题中,我必须判断给定的链表是否是使用 O(1) 空间的回文。我必须编写整个代码,他们也在检查极端情况。在第二个问题中,他们给了我一个 0 和 1 的矩阵,如果一个单元格为零,那么我应该将整个行和列设为零。我在 O(mn) 时间和 O(1) 空间内解决了它。虽然我首先告诉了我的蛮力方法,但后来我到达了 O(mn) 但使用了 O(n+m) 空间,然后我试图将空间复杂度降低到 O(1)。面试官对我的做法印象深刻。
第三轮:又是一次个人面试,这里又问了一个技术问题。面试官给了我一个用例,归结为在数组中找到 k 个最小元素,可以通过使用 O(nlogn) 中的堆来完成。但是我无法回答这个问题,我只给了他我的蛮力方法。所以这一轮后我被拒绝了。