本人一年工作经验,面的是苏州微软sde。
phone screen面
一道场景题,给定一个字符串文本和一个list<string>
,两者的信息量都非常大,要求从文本中检索出,存在于List中的字符串的位置。
第一反应是字典树,但是好久都没有写过了,于是说了一个暴力匹配的方法,把List中的string都存储在map里。
面试官让优化时间效率,我提出将List中所有string的子串(index从0开始)存在map里。
面试官又让优化空间效率,那就只能用字典树了。。最终还是没逃掉,气死我啦。写出来之后稍微聊了几句,当时觉得我应该是通过了。
过了几天之后,hr打电话给我说我PS面通过了,要给我安排接下来5轮的面试。其实听到有5轮的时候,内心是比较崩溃的。
一面
总结下题意:有个map<string,string>
,然后给定一个string,要求把{}之间的string通过map映射成另一个string。注:{}之间存在嵌套关系。
当时因为考虑的不周全,我给出的解答只能cover部分样例。后来跟面试官沟通有了思路后发邮件到他邮箱。
二面
第一题:二叉树的后序遍历还是啥,记不太清了。这题可以秒杀。
第二题:求波兰表达式的结果。我一直想着要把波兰表达式转成逆波兰表达式,面试官希望我对这个表达式直接求解。虽然我最后按照他的思路把题做出来了,但是能感觉到在沟通上并不是那么地顺利。
总结一下这轮面试考的题还是比较简单的,他给了我no hire确实有我自己的原因在。
三面
开场问了项目经历,其实这个项目我在之前面试其他公司的时候都有跟面试官讲过,(只是一个小项目没有为公司带来什么大的收益),但是只有这位面试官仔细地分析了实现细节,并且get到了我的设计思路,当时内心真的感觉有受到尊重。
(面试过程中有感受到面试官深厚的算法功底)
考了个思维题,给定一个字符串,问能不能通过重排列,使得相邻的字符之间互不相等。
比较快地发现了数学规律,比较快地写出了代码,这轮面下来当时觉得应该是通过了。
四面
这轮没有考察算法题,就不详细展开了,但是考了网络相关的知识。无奈我网络基础比较薄弱,而且还没有准备。。面试官的题出得挺好的,可惜了。。
~~分割线~~
一天没吃饭,连着面了4轮(车轮战 ),我感觉我整个人都升华了(还能顶得住 )。其实我的三面是非常关键的一场面试,如果这轮评价也很一般,可能就没有后续的面试了,但是我身处其中完全感受不到,也是有相当大的运气成分在里面的。
虽然五轮面试流程已经走过去了,但总体还是不太稳的,成败就在最后一轮了。
AA面
开场面试官就让我解释为什么一、二、四面的面评非常一般。
😃 我当然就老老实实地解释了。。
这轮也没有考算法题,本来都做好了手撕代码、背水一战的准备了。
简单问了项目经历,学习方法,以及考察了价值观。
我个人有体会到四面和AA面问了项目管理方面的经验,但是我在这方面的经验是缺乏的,因为我没有主导过一个项目。确实是我个人的一个短板。最后聊下来,面试官大概觉得我还是比较potential的,所以综合评价下来给了offer。
最后,感谢微软极负责任的hr,感谢身边支持我的朋友,感谢自己~