面试初战-微软
已经2022年了!大三上学期告一段落,我也要开始探索新的可能啦~
本篇文章分享一下微软23届暑期提前批面试的经历。
简历投递
虽然是暑假的实习,但是提前批的截止时间很急急,在元旦假期的时候就截止了。之前从来没投过简历,12月底还是考试周没时间仔细雕琢……总之,在和朋友去迪士尼前的一两天,急急的制作了一份朴实的简历,实习也没有,竞赛也没有,能罗列的项目也只有课程项目。很意外的居然过了,不过身边小伙伴据我所知也都过了。
一面
1.18上午进行的一面。开了摄像头,没有自我介绍环节,面试官一开始就让我写算法题,名曰“做一点coding的练习热热身”,题目是Leetcode 46.全排列 ,非常遗憾我不会>w<
场面一度十分尴尬,十分和善的面试官还说这是“从最简单的开始”……。唉,但是他实在太温柔了,最后他教了我四十分钟。先让我把斐波那契写了,再启发我一步步怎么写递归终止条件,甚至建立数组的长度怎么确定……就差一行行念出来了。花了四十分钟,本猪头终于写好了,善良的面试官又问我有没有什么问题,我说实在对不起我给您添麻烦了、以后会努力做题的。面试官说没事,可能只是这次面试我没match到考核的内容,以后说不定就会了,而且我才大三还有机会,blabla。总之,他真的很好,但我真的很尬。
二面
同天下午进行的二面,中间只间隔了两三个小时,我还没从悲痛中缓和过来,差点就咕咕了hr小姐姐(但怕被拉黑,还是硬着头皮去了)
这次没开摄像头,做了自我介绍,面试官问了我做了什么项目。
面试官对非关系型数据库的项目比较感兴趣,先问了大致如何实现,如何存储,又展开聊了很多很多,回忆一下我能想到的问题:
- 为什么选用非关系型数据库?
- 为什么选用Neo4j?
- 我们用了两种数据库,如何跨库保证一致性的问题?(展开问了系统设计,我回答的不太好,说了轮询定时检查、建立副本方便回滚什么的……感觉不太有条理,如果再让我回答一次,我会按不同场景来说。如:强一致性要求下,可以代码加锁;弱一致性要求下,可以将操作按顺序存储在队列中,并且可以参照课上讲的那些,比如GFS等结合起来,针对不同场景下不同的一致性要求来说。)
- 你觉得非关系数据库和关系型数据库有哪些区别?(我讲了一些泛泛的,适用场景的问题。他纠正了,是要询问我具体在使用过程中有哪些区别)
项目讲完了,也过去了大半时间。问了我一个公共前缀的问题,题目和 Leetcode 14.最长公共前缀 比较类似,但他说的是输入所有单词后,再输入一个字符串,输出所有以它为前缀的单词。(跟Leetcode 745.前缀和后缀搜索 的前缀搜索也差不多,但不需要返回下标,返回的是单词)
唉这我哪会啊,hard的题我看甚至都不打算做的。我口述了暴力搜索法,承认了这样的时间复杂度和占用内存很多,请面试官教教我怎么解题……面试官问我有没有学过字典树,我说没,然后他让我用Bing搜索,找了个词条让我看。我看完了又来问我一些问题,每个节点怎么存,怎么解题,复杂度什么的。我说的也不知道怎么样,自我感觉只弄懂了个大概吧。也不抱希望能进下一轮面试了。
三面
神奇的事情发生了,我居然进了三面,这是怎样的狗屎运降临在我的头上?
三面是1.21下午,没开摄像头,做了自我介绍,依旧是一位很和善的面试官。
同样展开问了非关系型的项目,大概20分钟左右,详细问了数据库设计。然后一直追着我问,他觉得关系型也完全能胜任啊,为什么不用sql。我看似扯了不少,实际上说来说去,只知道用sql查我这里的需求会需要多张大长表join起来,很耗时,但是图数据库就不用。他就说,那如果用sql的话,把join的内容缓存起来不行吗,我也是乱回答的…………
其实我今天早上看了一篇sql存储,redis做缓存的技术文章,早知道应该再认真点看看的,呜呜呜。
剩下的20分钟考了LeetCode 53. 最大子数组和 终于是我做过的easy题了,内心狂喜。结果写了dp,发现我上次写到这里有的用例没过,我也没管它就放弃了。。。。内心一阵无语,当时太紧张了也没看出来错哪。面试官提醒我也可以滑动窗口,我哼哧哼哧磨磨唧唧地重新写了,写出来了,但是20多分钟过去了(好悲伤),感觉多少有一些不妙。。。
总结
哎,第一次面试的经历就这样在一次次的想要放弃和一次次的硬着头皮中结束了。
最终结果不出意外会凉,好在这还是第一次投简历,还来得及多做题、多准备、多背八股文。
加油吧 XD
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!