嗨,大家好,我是小专栏的开发者寂小桦 ,之前在Android技术指南读者群里,绍文大佬跟我们分享了微信社招的一些“传说”,激发了大家对微信社招的强烈好奇心,今天给大家推送一个潇涧的付费文章,《我是如何拿到微信 offer 的?》。
以下为全文:
不好意思哈各位,请原谅我用了这么一个有点“标题党”的题目来吸引你阅读。
《Android面试指南》 这个小专栏已经对Android开发面试的方方面面进行了“指南”,剩下能说的就是面经了,我这篇也是份面经,断断续续写了一段时间,和上次那篇稿子不同的是这次我侧重介绍下我所经历的微信面试和我的面试准备以及面试心得。
首先自我介绍下,我网名叫潇涧,一个在国内 Android 开发圈里“时隐时现”的开发者,独立开发的应用主要有诗鲸客户端和诗鲸小程序。我是2016年毕业于北京某985高校,目前是腾讯微信Android客户端开发组的一名工程师,曾就职于魅族Flyme研发中心和腾讯SNG事业群,曾在阿里巴巴无线事业部手淘团队实习。也许你已经看出来啦,我是通过内部转岗进入的微信,这可能是目前进入微信团队相对轻松的方式了吧。
下面我围绕“我是如何拿到微信 offer 的”这个问题挑些重点慢慢说道,大家权当休息时间闲读,如果刚好你要面试微信的话,我希望下面的内容能对你有所帮助。
1.简单说下腾讯的内部转岗制度
在腾讯,内部转岗称为“活水”,每个满足活水条件的人都可以根据个人意愿申请应聘公司内部其他部门的岗位。其实我当时申请活水的时候并不完全满足条件(工作时间未满一年),但是HR小姐姐人太好让我先投下简历面试先,这才有了后面的面试机会,整个面试流程走下来之后我就满足活水条件了。听邵文大佬说微信社招要经过7-8轮面试,过五关斩六将,过程相当漫长且艰难。相比而言,内部转岗的面试则会比外部社招面试轻松不少,从我经历的WXG新员工培训来看,10个新人中通过社招进来的可能只有1个,大部分都是从其他BG过来的同学,而且面试轮数最多的同学竟然经历了9轮面试,请允悲。
2.大概说下我的整个面试流程
我的整个面试流程大概面了有5轮,前面3轮基本上都是纯技术面,后面2轮的话可能是侧重综合能力的考察吧。微信有个专门的面试委员会,简称“面委会”,主要负责对应聘者的面试过程进行把关。微信面试轮数比较多主要是中间会有来自好几个面委会成员的面试,他们都是微信团队的重量级人物,他们的面试风格可能差别不小,可能是想从各个角度对应聘者进行考察吧。
3.微信面试给我印象比较深的点
微信的技术面给我印象比较深的点是“问题由浅入深并不算简单”,例如面试官问我“用过数据库吗?”,我答“用过”,接着面试官问“你能说下索引的原理吗?”,其实当时电话那头的我还真的没去深入研究过,所以我当时弱弱地猜测了下回答“数据库的索引是通过某个平衡二叉树来实现高效查找性能的”,从面试官的反应来看他对这个答案并不满意,因为我并没有说到点上,也没能深入展开分析。后面有些技术面试问题比较类似了,这类问题如果你比较熟悉的话那就暗自窃喜吧,如果不熟悉的话那就陷入尴尬了。所以,其实微信技术面试的问题是由浅入深,面试官问的东西也还是我们平时能看到也可能用到的东西,但是可能并没有抽时间去深究过或者没有经历真实项目实践过,这方面的不足自然而然会在面试的过程中暴露出来。
微信的综合面给我印象比较深的点是“重点考察的内容基本上不变”,就是针对你简历上写的、你曾经做过的、你最值得说道的一个项目或者是一个需求或者是一次优化不断追问,作为应聘者你一定要充分做好这方面的准备。我建议你首先要在你的简历中有意突出这个点,让面试官注意到然后想要来问你。接下来你要针对这个点去准备材料,可以从“为什么要做这个?”、“你是如何做这个的?”、“期间你遇到了什么问题?你又是如何解决的?”、“你做完这个带来了什么实际的效果?”、“你做完之后呢?有继续优化和改进吗?”等等几个方面去准备。可能面试时间长,面试官不止问你一个点,那么你可能就需要对多个点都进行准备了。一开始我并没有意识到要做好这方面的准备,等我面试了1-2轮之后,经面试官的提醒我才发现能够清晰完整地描述自己做过的某项工作在面试过程中极其重要,后来我回去好好准备了一番,后面几轮面试我的表达就变得越来越清晰明确,面试过程也开始渐渐从平静走向高潮。
4.关于如何准备微信面试的建议
前面已经谈过了如何准备微信的综合面,主要是针对自己曾经做过的某项工作进行充分整理,确保能非常清晰地说这项工作的前因后果,对实现过程中的技术选型、难点问题、解决方案、优化效果、深入改进等等了然于胸。个人建议将这些准备材料写成总结,原因有三:一是写下来的过程可以帮助你理清思路,整理措辞,免得面试时表达不清;二是写的过程中你可能会自我提问,这些问题可能会成为面试官的问题,仔细想好怎么回答;三是不定期写总结是个好习惯,如果有总结的话有的面试官可能会要求你把你的总结发给他看。我当时在我原有部门工作了快一年时间,主要的技术突破性工作是React Native模块的完善和改进,这块的主要内容已经写在我的个人技术专栏中 《Android 和 iOS 端升级 RN 的经验分享》 ,感兴趣可以阅读了解下。
剩下的就是如何准备微信的技术面了,毕竟只有通过了技术面才有可能走到后面的综合面。但是技术面你也看到啦,问题从Android基础开发到Android高级开发的内容都有,技术点那么多,我们该怎么办呢?这里的话我建议看书、开源项目和面试总结。
Android开发书的话我只推荐任玉刚前辈的《Android开发艺术探索》,如果看过请再看几遍。更深的Android开发书我也看过,看不下去,晦涩难懂加之一时半会用不着,时间一久又忘了;更浅的Android开发书我也看过,也看不下去,干货不多,浪费了时间。所以书的话我只推荐《Android开发艺术探索》,这是Android开发书籍中写得极好的,适合各个水平等级的工程师阅读,深入浅出,切合实战。我以前读的时候写了十几篇读书笔记,每当我有面试的时候我都会抽空把那些读书笔记再看一遍,感兴趣的可以看下 《Android开发艺术探索读书笔记》 。
这里特别提到了开源项目,建议如果要面试微信的话一定要熟悉下微信的开源项目,如果有时间可以看看源码,我知道不一定能够彻底看懂搞明白,但是至少要了解其大致的实现原理。比如著名的Tinker、Mars,或者是AndResGuard,我是自己在工作中用过其中的AndResGuard,所以读了它的源码,这个在面试过程中面试官也有问到过我,让我说下它的实现原理。
至于面试总结,网上有很多,你可以找些比较热门的面试总结来看,比如咱们的 Android面试指南 这个小专栏。这里要提醒大家的是,看的时候建议不要全信,如果发现有问题的话那么就查下资料确认下,因为网上的面试总结其中不乏过时或者错误的内容。其实面试总结我也弄过,从我校招那年开始整理的,到后来从魅族跳槽到腾讯,再到后来内部转岗,我都是看自己的面试总结,感兴趣的可以看下 Android开发面试总结 。
读到这里你可能发现了,我看的东西都是自己总结的东西,这有什么好处呢?那就是内容更适合自己,我越是不懂的地方总结里面它可能就会出现得更多,看多了之后基本上我也就慢慢消化了那些知识难点,所以 看自己的总结是不仅不需要花很多时间,而且更有针对性更高效 ,强烈建议大家也多多写自己的总结。
5.关于如何准备算法面试
前面都没有提到算法,难道微信面试不面算法么?不存在的,算法面试肯定是要有的。因为我是异地面试,所以我的面试流程是先和面试官约好算法面试开始时间,面试官发算法题给我,我在一个小时内作答并将代码发给面试官。我当时做的两道算法题难度应该都是LeetCode上的中等难度题,答题过程还算顺利,提前20分钟左右写完。在算法面试之前我有准备算法,利用周末的时间刷了大概几十道LeetCode算法题,我校招那会LeetCode还不到200道,那时候刷的差不多,现在要想在面试前刷完就不太容易了。
这里我和大家分享下我准备算法面试的过程,之前我在Android开发面试指南的小专栏里面已经写过 《Android面试指南-算法面试心得》 ,其实按照那篇文章去准备算法面试应该是没问题的,但是那篇文章毕竟是讲枯燥无味的算法,我猜真正静下心来看完的人并不会很多。我自己准备算法的过程就是这样的,算法基础是通过看自己以前总结的 《Python数据结构和算法系列》 ,因为是自己写的,加上已经反复看过好几遍了,所以很快就看完了。
看完之后开始刷题,这次和往常不同,往常我都是在LeetCode的各种类型题目下找热门的题去做,但是这次我是先花钱买了网上的《玩转算法面试-从真题到思维全面提升算法思维》这门课程,一边看一边刷,可以说这钱花得值,有些时候知识付费确实还是有必要的。这门课程讲师对算法面试中的各种问题分门别类,做成一个个专题各个击破,这个课程比较适合我这种不是搞算法出身,只是熟悉基本数据结构和常用算法,但是在算法上一直没啥突破的程序员,或许这门课程会让你有所突破。
6.聊一聊在微信工作的体验
我来微信总部的日子还不算久,但是这段日子我见到的人和事确实让我眼前一新。工作环境在TIT创意园,园区内绿树环绕,空气很好。这里上下班不用挤电梯,因为都是几层楼而已。一日三餐是免费的,食堂的食物每天换着来。重要的是这里的技术氛围确实好,开发流程也很规范,很多人技术上都很厉害,很聪明,人很nice,对我这个菜鸟的问题有问必答。这让我感觉自己回到了研究生那会,在众多学霸之间做个小学渣,好好学习,天天向上。
OK,以上就是我这次想要跟大家分享的微信面经,如果你有意向的话可以联系我内推,坐标广州微信总部,一起来做个伟大的产品取悦自己吧!