腾讯面试经历
自我介绍下,本人就是个屌丝程序猿,大学很普通名字就不说了,软件工程专业,两年iOS开发经验。经历了一个月左右时间的面试最后非常幸运的拿到了腾讯的offer。找工作这段时间自己也有不少体会想分享给大家。之前从没写过博客,一直都是学习别人分享的,所以我今后的博客就从这篇文章开始吧!
先说说我面试的流程吧,一共6轮:组员、组长、项目经理、技术总监、GM、HR。这次面试下来给我的感觉就是面试周期长,面试官对求职者的要求严格。在和面试官的交谈过程中了解了这次社招之所以比以往严格是整个互联网经济形式下造成的,据说百度和阿里的社招都停止了。所以我觉得这次能拿到offer真的是很幸运。
第一次去面试是下午两点半,到了约定的地点联系到面试官后先是让你做笔试题,时间是一个小时。内容一些是iOS的基础题涉及到多线程、网络、数据存储等知识点,还有一道算法题n个元素排序并去重的题目,还有一些是终端通用的技术背景题目比如数据库优化、设计模式的简述等。整个笔试题目我基本都写满了,感觉自己答得还行时间刚好一小时。然后第一轮的面试官就开始面试我了,先叫我自我介绍了一下,然后问的内容有iOS中多线程之间的不同点、网络方面断点续传的原理、CoreDatad多线程下数据安全问题,还有一题关于UIImage的问题,如何实现一张图片的像素颜色变化,这题我当时没有答上来,面试官说思路上是从Bitmap Graphics Context上实现,还问了我一个像素点占用的内存大小,当时也不知道乱猜的,面试官看出我没有研究这方面的东西也就没再问下去。之后他开始现场出了好几道算法题有几题感觉自己答得不算很好吧。之后就是和面试官谈谈自己做过的项目中有哪些亮点有哪些是需要改进的之类的。 整个过程中问的不仅仅是iOS的知识还有数据结构和算法方面的问题,根据他们问的题目来看,觉得他们对基础知识、性能优化、编程思想方面的要求很看重,毕竟他们的产品面对的是亿万级的用户量。和那个面试官前后聊了大概一个来小时然后他叫我稍等一下,我心想估计有戏。
之后第二轮面试官来了,首先叫我自我介绍了一下,然后他向我介绍了他负责的工作内容。首先听他说话就能感觉到他应该是做事逻辑清晰的那种人,要表达的意思很清晰。 先是问了@property中assign和weak的区别,这个很好答。之后问了app需要下载大量图片时如何做本地cache,这题我基本是参考SDWebImage的缓存策略答的。然后问了开发一个支付SDK在业务逻辑和安全性上你的考虑是怎样的,这题我就是参考平时使用支付宝的经验回答的,由于是临时的题目在一些细节上回答得不是很严谨,不过看面试官的表情感觉他还是比较满意的。还问我开发时遇到的最难的问题是什么,我说最难的问题只是相对不同的阶段而言,有些问题当时很难但是你只要掌握了回过头看就不是难题了,最重要的是你解决问题的过程中的方法,要善于总结之类的。我也举了一个例子来说明当时开发过程中的一个难点,我是通过什么方法怎么解决的。最后是一个App中如何收集crash日志,如何定位代码,这个问题来之前有准备,因为我知道像微信、手Q这种用户过亿的应用来说对crash肯定是非常重视的所以答得还行。之后面试官叫我稍等,估计还有下一轮。
果然又来了一位面试官,又叫我自我介绍一下,没办法我又说了一遍。面试官也简单介绍了一下,知道了他是项目经理。他问我之前有没有面试过腾讯,我说没有这是人生第一次来腾讯面试老激动了。又问我如果安排你去完成一个你和其他人都没有做过的开发任务你会怎么做。我说既然是公司安排的工作任务我肯定会认真对待,首先我会通过公司现有的资源去快速了解和熟悉任务,并且通过网络、文档、书本等查询相关资料去进一步学习来完成之类的话。面试官问这个问题是想看你对待一件你没有做过的事情的一个态度和做事方式。之后问了我线程锁的原理,这题我根据对iOS中线程锁的了解来回答的,但是感觉答得没有什么深度,只是抓住线程安全本质是多个线程同时对同一个资源的操作时只能有一个线程来操作。还问了我线程间之间的通信,我说在iOS中每个线程都有一个Runloop对象,通过Input sources和Timer sources来处理异步消息和同步消息,还说了子线程在什么情况使用,主线程的主要功能是什么之类的。他还问了我一些个人问题,问我住哪,之前在哪工作之类的。最后他说觉得我专业能力和态度都还行,说他们总监今天出差了只能下次约个时间,由于之后就是中秋国庆的假期,这第四轮面试要等两个礼拜之后了,到时候会联系我之类的,我就一直说好好好行行行。走出公司看看时间,不知不觉6点多了,一个下午接近4个小时的面试,喝了他们公司两瓶水,来腾讯面试真是个不轻松的事。 想想自己第一次去鹅场面试就面了3轮而且有戏这是我自己来之前都没有想到的。
国庆期我有找过一些曾经拿到BAT offer的大神们写的经验和总结,知道腾讯需要面试者不仅是要具备专业技术方面的硬实力还要看到面试者具备的软实力,比如你的表达能力、学习能力、够沟通能力、适应能力、执行能力、抗压能力等等。通常程序猿给人的印象都是不爱说话就知道对着电脑撸代码,然后各种宅不爱运动,穿着看上去给人一种邋遢的感觉,所以如果你同时具备专业能力和其他优秀的素质时,你是很容易在你的工作中脱颖而出的。想想如果一个程序猿不仅技术碉堡而且其他方面也出色的时候这个程序猿就具备屌丝逆袭的条件了。
经过两周漫长的等待,腾讯终于联系我了,时间定在上午十点。到了约定地点后我在一个会议室等待他们总监的到来,那个时候心里真是紧张从没想过腾讯和我之间的距离能这么近,也正是心里开始有了一些想法的时候接下来发生的事情给我好好的上了一课。之后总监过来了,看上去比较文艺,说话的声音很亲和很淡定,这完全超出了我得想想。相比之前面试过的一家在国内比较出名的互联网公司,他们的技术总监的脸真是能臭死人,就跟我欠他们家钱一样。惯例先是自我介绍,然后他就看我简历上的项目问了我一些问题,主要涉及到App的包大小控制、数据 安全性、项目中有哪些难点亮点和提升改进空间等等,整个过程下来聊了大概半个小时左右,之前以为会被总监虐,出门前一分钟还在想某个算法的实现。看面试官觉得我还行接着把我带到GM的办公室,然后就发生了之前说的事情。
一走进GM的办公室看到一位比较瘦的中年男子坐着在椅子上,心想这就是传说中的GM哇!然后叫我坐下来,看了我简历一会后问了我一句“你觉得你的能力是什么?”,我这次来面试之前满脑子都是技术和代码来应对技术总监的,没想到能面到这一轮像这种面试问题我之前还真没好好的想过。于是就只能硬着头皮当场组织语言说了,回答的重点都放在了项目技术能力上,过程中手机还震动了我自然地低头关了震动。GM就开始摇头了说“说实话你说了这么多我没有看到你的能力”。 当时一听我就慌了,于是我说我可能没有说清楚又重新回答了一遍,GM还是说没有看到我得能力,说我准备得很糟糕。但是我心都凉了,心想完蛋了之前的努力都白费了。GM还在批评我的面试准备状态而我已经没太听进去了心理只有一个念头就是完蛋了。我用了一点时间冷静下来和GM说了一下我的情况,说我之前确实没想到能面试到您这一轮,之前的重心都放到技术上了,对于您的这些问题我确实没有好好的准备,导致回答的逻辑不清晰结结巴巴。当时的我满脸的懊悔和失落我到现在还能想象,之后GM说了一句话让我暗淡的眼睛亮了,他说“你能面到这个阶段不应该是这个状态,我再给你一次机会,你回去好好准备下,到时候会再通知你过来“。从谷底到山顶的起伏是什么滋味我在这短短的几分钟内算是真正体会到了!我只记得我当时说得最多的一句话就是谢谢。出了办公室后我向面试我得总监说了一下刚刚我的问题,他很热心的给了我一些意见。
之后的一个星期我一直在做准备,问了一些腾讯的前辈,还找了专业人士给我些建议,做了个展示项目的PPT,在家无数次的对着镜子表达脑子里的话直到没有一点不流畅。话说这周我都没有怎么睡好,满脑子都在想自己是不是还有什么地方没有准备充分。我也发现这几天让我的心态有所改变,重心都放在准备上,不去想结果让我觉得这次不管最后怎样都是一种收获,毕竟自己是尽全力努力过就好。一周以后我再次去面试GM,这次来的目的就是把自己的能力表达出来,做到不卑不亢。见到GM后先说了对上次的情况表示抱歉,然后非常感谢给我这次机会。在和GM聊的过程中说到的内容主要是工作中我的角色、执行力、应变能力、学习能力、最后结果怎样。大概聊了有半个多小时后我就从办公室出来了,接着就是HR的面试。HR是个汉子,个子不高,总之不是想象中的气质美女。他问了我之前的工作情况,我对腾讯的看法等等,最后他说会在这两天有结果通知我,完了之后腾讯的面试终于是结束了,这一周以来心里的石头是彻底放下了。
其实面试完了我也不知道能不能拿到offer,心里真的没底,因为当时我没有感觉到是否符合GM心里的人选。反正我自己觉得能够展现出自己的能力是最重要的,至于结果就耐心等待吧。过了两天收到了腾讯的offer,回想这段时间找工作的日子真是感慨万千,技术上和心态上都有了不少进步。平时在逛一些论坛上经常看到找工作的程序猿们的一些吐槽,像面试官的专业水平低,招聘公司态度傲慢,有些面试者等了很久最后草草结束的等等各种情况。我在这段时间也碰到不少类似的情况,开始找工作的时候,碰到一些态度差水平不高面试官的时候,我心态很容易失衡,总是觉得对方问的问题根本就像是傻X问出来的,表现出来的是看不起对方的态度和语气,面试的结果自然是对方公司不会招你,可能自己会觉得就算对方给你发offer了哥还懒得去呢!后来我的方法是和身边的家人朋友交流自己心里的感受,听听他们的意见,然后静下心想想面试过程中发生的也许你就不会是当时的态度了。大家都是打工的何必要互相为难,有些事情没必要争当时的一口气。之后的面试心态摆好是一方面,同时我也在不断提升自己的专业知识,其实面试问的很多问题正好能体现你大脑中的知识基础和细节是否严谨。我碰到过几个很nice的面试官,和他们面试的过程感觉就像是在互相交流学习,这种感觉很好,因为你有对方认可的地方同时能看到自己可以提高的地方,这种面试其实对面试者来说是非常好的学习机会。后面一段时间有面过几家比较中意的公司,技术面试感觉回答得没什么问题,但是最后都没有结果,这也是求职者常常感到郁闷的地方,其实我个人觉得能去到一家中意的公司真的是需要运气和缘分的,虽然你感觉你的技术过硬但是公司对你背景有其他的要求,或者是和你交流的过程中你说的一些话让公司感觉不符他们的意向都会造成这样的结果,作为求职者能做到很坦然的接受结果就是优秀的一面了,总结积累面试经验才能抓住下一个更好的机会。回过头看我这段经历我就是这样的,从最早的吐槽招聘的公司到逐渐能平静坦然面对各种面试官最后才有了腾讯的offer。我一直在做的事情就是不断的总结和提升,虽然有时候会感觉面试来回奔波挺累的容易感到浮躁,但是时刻做好准备向前看才是当下应该做的。面试的过程就是在不断的检验自己完善自身,你能把软硬实力展现出来BAT也会向你招手。