面试过程:
总共四面,三轮技术面,一轮hr面,每一轮大概1小时,最多一个半小时。一般技术面一次性可以面完。
基本上每一面都是自我介绍,说明自己的项目精力,然后开始做题,2~3道算法题,主要还是字符串,链表,树等题目,没有涉及动态规划,图等高阶题目。算法题结束后,开始聊项目,这个阶段比较随机,面试官会根据你的项目内容随机发问,会有延伸思考,组件的实现细节等。
面试官问的面试题:
一面:上来就是最长字符串匹配,分别看了有重复字符串和无重复字符串的匹配。
然后是求解下一个组合数,比如123,下一个组合就是132,再下一个就是213。
基础知识问了https建立连接的过程,这里问的比较细节,其实你只要明白,tls协议的几轮交换是为了验证双方身份这个要点即可。我细节不太记得,就举了ssl的验证过程。
二面上来也是先算法,n个人数到m就出去,一直进行,问最后留下的是谁。接着是一道字符串匹配的题目,忘了具体的题目,因为是现场编写并运行,耗时很久。项目没问什么,介绍完之后,就结束了。
三面上来先是自我介绍。算法题两道,都是字符串的,现写。第二道是字符串匹配的一个变种,没做出来。项目问的比较细节,最难点是什么,如何做的。我提到了性能优化,顺便说了下利用火焰图查找性能瓶劲。然后介绍了如何提升服务的可靠性,从服务器层和模块层。提到了zookeeper组件,介绍了选主算法。
最后,给了一个题目,让设计一个秒杀系统,20分钟左右的时间,三面结束。
差不多了,hr主要就是筛选背景,包括学习经历,工作经历,同学关系,同事关系,自己的期望和打算,以及谈薪。