微软一二三四面挂经
笔试:9月收到苏州微软的笔试邀请,一大早起床做完,然后没了消息。
一二面:
10月一二面,应该是平行面吧。
一面:
二面:
三面
一二面:
10月一二面,应该是平行面吧。
一面:
- 项目经历
- 第一题:shuffle an array, 简单证明了一下,没有写代码
-
第二题:定义一个点是valid的当覆盖在这个点上的interval数量不超过2(两个及以下)。求问,给一串intervals([0,2],[0,3],[1,3]...),最少删掉几个interval可以使所有的点都valid(面试官很好,提示思路就是greedy,然后用PriorityQueue解决了)
二面:
- 项目经历
- 1001个数字,全都在1-1000内,所有数字都只出现一次,只有一个出现两次,找出重复的数字(我先用数学发sum up,然后又用了链表找cycle的方法,但好像都不满意,后来知道是要用XOR)
-
reverse linkedlist in k group,但是我用的纯指针变换好像不是很满意,后来暗示用stack就可以(好吧我其实提到过stack,但觉得太简单了就没仔细说)
三面
- 面完当天就收到三面的邀请,效率不错
- 项目经历(主要是microservice,版本管理,依赖循环等)
- 第一题:deep copy of a linkedlist with random pointer, 我用hashmap做完,他问怎么用O(1)的空间,支支吾吾半天没做出来。其实后来看了也不难,就是指针操作变换。所以刷题真的不是做出来就行的,还得试试一题多解。
前面三面都是coding,所以我也就准备了下刷题,面完发现完全没做题。
四面是与一位principle大佬,上来看简历就说你这个经历不足啊。一段全职两段暑期实习还少吗?不解。
然后发现我本科是材料的,就问我怎么自学的计算机。之后就开始疯狂问底层,比如java和python的类有什么区别(还吐槽我说太关注语言了,要多学习他们深层次的区别),java类在内存里长什么样,python运行时内存结构是怎样的,gc的实现方式以及各自的优缺点。
看我支支吾吾,又开始问git。git是怎么实现分布式的,怎么实现回滚的,blob是怎么工作的,git是怎么利用树的结构的。好吧还是不会。
之后看我项目里提到了高可用高弹性,问如何提高系统的可用性,怎么确保系统奔溃后能够快速重启并且恢复数据,怎么评估一个系统的可靠性(3个9,4个9),怎么在奔溃后检查确保数据的一致性等等。
其实我是有点不舒服的,但还是全程面带微笑(累)。我知道面试官有权利问任何题目,简历里有的都可以问,但我还是不禁怀疑有歧视非科班的嫌疑。我真的不觉得一个new grad能答上来评估系统可靠性这种问题(可能是我菜)。能答上来我就去当senior了呀。面完我就默认凉了,至今没有消息。
11.2 更新
一大早接了美国西雅图微软的offer,感觉美国问的反而比较简单?不管了,反正秋招终于结束了😭move on
希望各位也能早日上岸!
#面经##校招##微软##软件研发工程师#