个人腾讯技术面试经历(3)

  9月19号下午,腾讯游戏的hr就打电话过来约定好下周一下午去深圳面试了。面试者的往返交通、住宿费用所有能够报销,不由感叹大公司果真是有钱啊!
  其实在投简历以前没想太多,但在过了两轮电面后,终于开始重视起来,进腾讯的机会很大了!
  整整周六日两天时间,都在面试作准备。刚开始担忧面试是否会考察计算机原理,汇编,计算机网络,数据库方面的东西,由于这些基本忘光了。最后只是简单回顾了一下,把准备重心放在简历上提到的点。仍是看专业能力说话!
  因而把LeetCode以前刷过的题过了一遍;数据结构过了一遍,专门看了July几篇经典文章:海量数据处理、各类b树和红黑树;把作过的几个项目的底层又研究了一遍,重看了下pureMVC,robotlegs框架;学习prtocol buffer;连搭和谐号回深圳都拿着macbook重温23个设计模式的思想和实现例子。奋斗了两天,一度有回到高考的感受,不由感叹考试永远是逼人学习的最有效方式啊!java

 

—————————————————————————————————————————python


  事实证实,这两天作的准备用处仍是很大的。整个下午连续进行了4面:其中3轮技术面。c++

  腾讯游戏不在腾讯大厦总部,而是在附近的科兴科学园。2点多提早到腾讯,来接了个人人是一面面试官,简单聊了下,他作了3,4年as3,3年前来腾讯,而后居然也是从我如今的公司跳过去的(3,4年前仍是个初创小公司),泪牛满面,猿粪啊!聊着过了一会,3面面试官就过来了。面试

 

3面:
  这是整轮面试下来最有压力的一面了,面试官看起来30岁出头,坐下来后很少寒暄,一声不响拿着个人简历翻呀翻呀翻,仿佛我简历上没有一处引发他的兴趣,顿时内心七上八下...
  沉默许久以后,他终于问了我本身写的as3框架里面包括了些什么东西,因为以前心情被搅得挺忐忑,介绍这部分时显得不是颇有底气,简单介绍了框架里ui,网络传输方面的东西,就被打断了,问了我协议数据格式是怎么实现的。回答说是自定义格式写进bytearray的。而后略有“不屑”地问我为什么不用protocol buffers?(看来他们必定是长期用protocol buffers!)
还好上轮面试后就去补了相关的东西,说了公司项目一开始作就没有用protocol buffers;而protocal buffers只支持java,c++,python,公司项目后端是erlang实现的,技术受限了。(再后来才了解到,如今开源社区已经支持生成as三、erlang了)
  接着又让我讲了arpg的战斗是怎么实现的,没作过arpg的核心战斗,转而讲了我比较了解的播报制战斗,讲了个大概,面试官貌似听得不太感兴趣,心情复杂。。
  整个面试过程到这不顺利,感受面试官没承认我。不事后面问到跑酷游戏设计的问题答得不错:数据库

  1、玩过每天酷跑吧,说说游戏地图滚动是怎么作的?
  跑酷类游戏,实际没作过,但了解基本原理。就讲了地图是分块处理的,全部地图块都向左边同速移动,移出屏幕左边的部分图片会被即时清理,右边则设置好图片从屏幕右边移入,从而制造地图滚动的效果。编程

  2、而后又问了地图障碍是如何生成的?
  这也是跑酷类的核心技术点。一个跑酷游戏可能有多种不一样地形:平地,悬崖,立柱等等,彻底随机地去生成跑酷路径是有问题的:
  1.可能会出现不合理的路径:例如连续生成了10格悬崖地形,这么大的一个空隙玩家是不可能跳过去的;
  2.跑酷游戏是技巧性游戏,玩家经过训练提升本身技巧获取更高分数,从而产生快感,路径生成的过于杂乱无章,就无技巧可言,没有可玩性;
  3.彻底随机生成地形,就没法把控难度。后端

  总之,要作到既保证路径随机性,又保证路径可调控。
  解决思路是,不作成每一个格子都随机生成,而是地图样式随机生成,地图样式是指一段预设计好的路径样式;好比地图样式1是连续3格距离悬崖,4格以后有一格立柱,其他为平地;地图样式2则是有两段悬崖...随机生成一连串的地图样式,一局游戏的路径就生成了。在此为基础,还能够再为不一样样式的生成几率作不一样权重,样式序列预设...设计模式

  由于在此前有看过跑酷小游戏的教程,半加入本身的理解跟面试官分析了。听完答案,面试官就没再挑毛病了,面试也顺利结束。网络

 

4面:
  4面面试官是一中年男子,年纪估计近40了,人很nice了,过来就主动跟我握手,面试过程当中知道他是手游项目的技术总监。面试很轻松,可能跟他不是直接作as3开发的缘故,侧重问了我手游项目的经验,问了对c++的了解,让我讲出c++跟as3的区别,因而举函数调用为例,讲了c++的传值,传引用,传指针三种传参方式;而在as3中则只有传值,传引用。讲了stl容器,而后问了红黑树,因而详细讲了b,b-,b+,红黑树的定义、区别。面试官仍是挺意外我能讲出这么多,最后试探性地问我stl那种数据结构用了红黑树,乱蒙回答说map,蒙对了,哈哈!数据结构

 

5面:
  从4面开始,与其说是在面试,不如说实在作技术交流了。到这个阶段,面试者的技术能力已经考核完了,基本上被刷的概率已经很低,但也曾听到过被刷的例子,人没有自信,没有想法,对技术不敏感等等非技术因素,仍是有可能让你被刷掉的。
  5面是工做室的技术总监,感受对各类技术都挺了解,对行业动态也很是熟悉。聊了许多,从各种游戏认识,到对市面游戏的关注见解,主要聊了墨麟的风云无双的成功,除了得源ip优点,技术上也很强,用了stage3d,不少资源采用动态加载、地图加载流畅、战斗效果华丽,粒子特效很玄;聊了纸娃娃系统,骨骼动画,这点上他很感兴趣,觉得我接触过骨骼动画,其实我只知道刀塔传奇里用了骨骼动画,本来并不为人熟知,随着刀塔传奇的成功,带火了骨骼动画。我在年前也参与过一款手游开发,就是想山寨刀塔传奇,但数值、技术都不如原做,没有技术作骨骼动画,很搓逼地用帧动画作人物战斗。而后这个项目作了不久就被毙掉了。

  后面聊开了,总监直接让我用白板给他讲技术,因而边画边讲,从介绍本身的as3框架类库,讲到mvc框架,比较了pureMVC,robotlegs的优劣;聊网络协议格式定义,讲了protocol buffers的大概用法;讲对设计模式的理解,经典应用;到最后讲解本身目前正在作的box2d物理引擎游戏,总监很有兴趣的听着,时不时问些细节,结果越聊越high。
  这是一段蛮开心蛮难忘的过程,一些学的时候以为很难很复杂的技术,消化理解了以后,用浅显的语言去讲解给别人听,这种感受蛮爽的。深刻浅出,不过如此吧!~

 

6面:
  最后一面是工做室总监面,终于不谈技术了。简单谈了薪酬待遇,跳槽初衷,将来职业规划,对他提到了一点颇有印象:作出成功的项目比去大公司的意义更大。
  这点是对的,但我认为只有让本身的实力更强、份量更重了,才有更多机会选择去作成功的项目。须要看实力、人脉和运气。而前二者都须要积累。因此选择去大公司的意义在于此,不只为了更好的薪酬待遇,也为了认识更优秀的行业人才,提高水平。


  最后一面面试官送我出了腾讯大厦,已经6点多了,感受终于轻松了。事实上,从开始准备面试这几天来,就处于亢奋紧张的状态,一心想的都是如何能准备得更充分些。

  几轮面试下来,对4,5面面试官的印象很深,一样都大气稳重,有不少技术沉淀,我正是期待的将来职业状态。貌似看到了个人方向,之后成为技术总监,即便年长了,退居编程一线,仍是能够不断学习关注技术,在宏观上把控项目技术架构,技术选型。挺好的。

 

——————————————————————————————————————————

  两天以后,hr打电话过来,肯定给offer,一切终于尘埃落定。一年前我与腾讯擦肩而过,今天终于牵手成功!

  固然,这不是终点,只是新的起点,目标要更长远,仍是要不断沉淀本身,加油!~

相关文章
相关标签/搜索