前情回顾#
本来学校就是双非,如果再没有些亮点,是很难进大厂的。
我比较幸运,曾在网易实习过一段时间,很感谢这段经历,让我有幸通过腾讯HR们的简历筛选。
对于腾讯春招,其实我是没有参加网申(2.28-3.31)、提前批(2.28-4.1)以及在线笔试(4.5-4.7),我属于常规批(4.13)中的晚期,我记得是4月18日投的简历,一直没动静,等到了5月14日更新了简历后,5月15日安排了当天晚上7点的面试。
腾讯一面#
面试官是最守时的,说7点就7点来电。一面刚开始就说明所在部门是微信支付,而且没有用Java,后台全是C++,询问我能不能接受转语言,我表示完全没问题,且不说语言只是工具,C/C++我也是上过专业课的,虽说到现在已经几年没写过C++代码。
还问我打算如何去学习C++语言,我的回答是看书学语法、基本类库,最后学习流行框架。然后继续聊了聊在校期间做过的一些事,包括比赛经历,创办工作室的经历等,又问了问与语言无关的基础知识,最后让我在线做3道题,发给我一个链接,题目包含以面向对象的思想模拟编写签到机程序,UTF-8编码的校验,64匹马8个赛道跑几次能选出前5名。
我做到9点后,面试官给我打来了电话进行一些题目上的询问,就这样,一面终于结束。腾讯一面给我的感受是严谨、认真和细致,涉及的面非常广,基本能把你的情况全部摸个底。
腾讯二面#
5月17日,也就是一面结束后的第二天,腾讯发来了二面。二面问了我很多很多的基础知识,包括计算机网络(TCP、HTTP等),操作系统(Linux),尤其是在进程、线程的问题上问了我好久。
最后问了我,你觉得单进程好还是多进程好,说句实话,这个问题把我问懵了,不过幸好我看过一些Redis方面的书籍,想起来Redis的RDB快照是通过fork出一个子进程来进行保存的,如果不这样的话,RDB操作将阻塞主进程,就这样回答了这个提问。
然后面试官又提问了我,你觉得单线程好还是多线程好?我的回答依旧是借用的Redis的例子,单线程如何如何好,多线程如何如何好,究竟用哪个?要看具体的业务需求。问到这里,面试官意识到你小子挺懂Redis的呀,因为我的一个分布式限流项目用到了Redis,于是面试官开始对我进行狂轰滥炸,说一说,Redis如何保证高可用?集群、主从复制,我记得还有个哨兵。回答了这几个关键词面试官并不太满意,我只能硬着头皮解释了下主从复制的流程。
最后面试官问了我一道算法题,典型的海量数据TopK问题,这里就不再叙述。二面结束,面完后感觉差强人意。
腾讯三面#
5月19日,微信收到了三面面试官的好友申请,询问得知是复试加面,看到这里我深吸一口气,嗯,好吧,二面表现的确实不算太好。
当时正在坐高铁返校,就礼貌的推迟到下午5点。我是4点多到济南的高铁,下午5点微信面试官打来电话时,我刚从学校附近下了地铁,没办法,就在大马路边面吧,虽然来来往往的都是大学生。
这次面试,重点是聊做的分布式限流项目,这个项目毫无疑问被面试官揪着分布式场景下的一系列问题问,我先是解释了该项目前期的方案是基于Redis做分布式令牌桶,这样不存在令牌数量在多个实例中的不一致问题,但是后来我舍弃了,因为这种做法在主线程中涉及网络请求,网络请求起码是毫秒级吧,对业务的影响太大,于是为了不影响业务,我将分布式限流最大限度的做到本地化。虽然请求不均衡会造成令牌数量的误差,但在实际的系统流控中,是完全可以实行的,并且,做架构本身就是一个取舍的过程。
接着,面试官又给了我一次freestyle的机会,如果让你设计俄罗斯方块,你会怎么做,要具体到详细的每一步。面试官问完这个问题,我的脑海中立马浮现出我弟弟小时候经常抱着5块一个黑白屏游戏机玩俄罗斯方块的场景。我回答说,我会先用面向对象的思想建立实体类,每一种方块一个类型,这里可以考虑是否使用抽象类,其次需要游戏布局,可以考虑二维数组,不断的往下掉方块,当方块到顶后,游戏结束,这时候统计二维数组中的0-1分布情况,得出游戏结果。这个问题真的是想到啥回答啥了,emmmm。还有一些其它的,都是老生常谈的问题,这里不再叙述。三面结束,面完后的感觉,随缘吧。
腾讯HR面#
三面结束后,我当天就看到我的面试进度是等待HR面试,开心到爆了。这一等,就等了3天,到5月22号下午4点,我收到了腾讯HR面的通知。腾讯HR面迟到了十分钟,解释是在面其它候选人,让我感觉竞争者还是蛮多的。
HR面问的问题非常多,刚开始就问,拿了不少offer吧,都有哪些。我说拿了百度,不过只能走外包流程就不去了,还有新浪微博,面的是业务部门,一是做的不感兴趣,二是转正希望也不大就没去。为什么不面阿里,我耿直的说我挂了。然后继续问大学的经历,团队比赛,参加工作室,最后还问我的家庭对我的影响。你觉得你的三个优势是什么?体现在哪里等。HR面结束后,我的面试进度是已完成所有面试。
HR面结束后的第二天上午,我就收到了腾讯HR小姐姐的电话,首先告知我已经通过面试拿到offer,然后向我核对我的个人信息。没多久,就收到了offer邮件。
最后的话#
说一下自己阿里三连败和腾讯面试的感想。阿里面试我经历了三个部,每一次都是一面二面容易过,可惜每次交叉面都挂掉。阿里交叉面给我的面试感受是“我非常忙,咱们尽快结束”,我的交叉面基本都是不超过20分钟的。
吐槽归吐槽,从客观事实上说,被挂的确是面试官的问题我没有回答上来,这也是可以接受的,你不能指望人家面试官给你降低门槛吧。再说一说腾讯,从上面的面试过程中,相信大家都可以感受到,腾讯面试官是多么的无微不至,每次面试的时间都是在1个小时及以上,HR面也是20-30分钟,这种对候选人进行全面了解再互相对比得出结论的操作我觉得非常对面试者以及对所在公司负责。
其实思考一下也不难想到原因,阿里招聘号称无学历门槛,这就导致出现大量求职者的面试安排,面试官着急结束似乎也无话可说。