到了找实习的时期,据说网易游戏福利不错因此就投了个简历,最后一路下来也是顺利拿到了实习Offer, 这里分享一下经历。编程
岗位是游戏研发岗。后端
投递简历
通常来讲到那时候随便上网搜搜就有,我是由于比较喜欢玩游戏,因此就顺手投了个网易游戏。网易游戏分网易互娱与雷火&盘古。互娱作手游,雷火&盘古作端游。网络
简历中英文都备一份,把大一到如今好看的东西往上填就好了…具体的简历写法网上一大堆我也是随便找了个模板改了改就上传了。数据结构
笔试
网易游戏的面试题是在牛客网上在线作的,能够用本地IDE, 只能使用Java or C++, 其余语言不能用。一共3道题,2个半小时,第一第二题都不是很难,第三题我当时没作。 这里提醒一下,Java不知道牛客网那平台怎么实现的,匿名类用不了,我当时第一题是个很是简单的文本处理,用的Java, 1.7的JDE不能用lambda表达式,并且不支持匿名类, 用匿名类会报编译错误,因此请采用保守的方式编程,C++的话感受要好不少, 我最后第一题就是由于这烂平台死活过不了。不过过了一道第二题就有面试机会了,也是挺意外的。
面试前
收到面试通知后会发个连接,确认网上面试时间。我我的没怎么准备,以前面过其余的已经准备过面经之类的了,因此基本上就是裸上的。
面试
网易游戏只有一面,面完就有结果,这一点我仍是面完才知道的… 面试的时候牛客网的平台我听不到面试官的声音,最后采用电话面试,可是打字面试官仍是能够看到的, 也方便发一些连接什么的,因此和网面差很少了。
自我介绍
面试官先让自我介绍,以及传一份更新的简历等等。我因为研究生是系统方向,面试官好像不是很感兴趣,一直很关注我本科的项目经历。
项目经历
听完自我介绍后面试官就开始问我各类简历上的项目经历,首先是研究生期间作的虚拟化部分,我作了简单介绍。以后是大四的软件测试和嵌入式开发,大三的LeapMotion和Android App开发, 以前接触过的Kinect开发等等。了解完后就开始问我熟悉的编程语言(我说的Java & Pure C)。
了解到LeapMotion是作的有关一个游戏的内容后就开始问我详细内容,因为里面用到了交互设备和图形学的简单知识,问我了不了解OpenGL。(我说的不了解,可是说了一些概念)。 以后聊到 游戏开发引擎,我只说了我据说过Unity和Unreal.. 而后说的是我不了解,专业是系统方向。
游戏经历
这个我其实挺意外的,面试官问了我很久的游戏经历,基本上先是从国内著名手游开始介绍,面试官问我端游,开始介绍网易代理的暴雪游戏、腾讯、盛大、空中网、久游代理过的游戏等等, 中间面试官问过我是否是只玩日系,我赶忙补充的韩国冒险岛、DNF、跑跑卡丁车,俄罗斯的战舰世界等等.. 还补充过页游弹弹堂。而后大吹本身游戏经历(小学三年级开始玩泡泡堂,一直吹到如今).. 面试官又问我是否是只玩网络游戏,又赶忙吹主机游戏Gravity, 仙境传说奥赛德(这两个是PSV上的游戏,当时舍友买的我玩过), 恰好当时Nier Automation刚出赶忙也是介绍一番。基本上都是说到 xx国xx开发商xx代理商xx平台的什么游戏,本身玩到什么程度等等,可能这个还挺加分的?
语言知识
以后面试官开始问C++问题,因为用的是Pure C, 因此其实这个答的很是糟,一度让我觉得本身要被刷。我把纯虚函数和虚函数弄混了,vtable答了上来,普通的继承多态啥的根本不问, 致使我Java的知识根本用不上…问我有没有用过 C++和C交叉编译(没用过)、STL库(我没用过), 图形学的一些知识(不会)我当时真是尴尬万分…不过我说我用Lambda表达式,Java是1.8 的特性,C++里面是C++11的特性,面试官就问我Lambda的用法和好处,而后问我其余C++11的新特性有没有用过(没…)
算法&数据结构
算法题问了一道一串数只出现一次,给定一个输入,让返回全部数对,数对中的两个数之和等于输入。我考虑了1min回答两种思路,第一种快排后两边向中间遍历,大了右边-1,小了左边+1, O(nlogn)的复杂度,而后就是说不排序就和冒泡同样遍历,O(n2)的复杂度。
又问了游戏排行榜的数据结构应该怎么设计,我先说只取前几名的话堆排序,若是不是前几名的话要看查询多仍是改动多,而后说目前只能想到BST。而后又聊会说能够先分组,再排序,就和Query 的select同样,最后join就能够了。后来上网上看了下,网上答案是桶排序和红黑树,虽然本身回答的不精确,不过看来思路仍是差很少的。
以后要求我写快排,基本上就是说下思路就能够了,没什么难度。
操做系统
可能面试官了解到我是系统方向,因此让我解释一个Hello World程序从C到最终运行起来的过程。 基本上就是先编译,获得Symbol, 连接器Resolve Symbol, Printf属于动态连接库里面的内容 因此涉及到GOT和PLT表,而后操做系统开新的进程,Load二进制文件,将控制流跳到程序入口Main函数执行等等。面试官听到动态连接库,又问了我一些动态连接库的内容和进程的地址空间和 内存的映射(基本上就是回答新进程的地址空间只是映射了Kernel代码,不用建立新的,动态连接库也是映射过来能够执行balabala)
Misc.
其中还问过我一些图形学的知识,不过我不是很了解,因此只是介绍了一下景深、3D里面摄像头balabala,把当时大三LeapMotion项目的内容说了一点点…
提问
最后就是我问问题,我也就问了下网易研发和策划之间的协做和不一样,研发是有本身的考核机制,也有与策划的反馈机制,因此能够影响游戏的设计,不过影响不大云云。
第二个问题就是问我这种方向差别比较大的要怎么跟进,面试官也是介绍了那边的培训制度,不用担忧云云…
结果
最后也是顺利拿到了实习的offer. 网易游戏的实习待遇仍是挺不错的,除去薪资和补贴,有饭补、来回路费和员工宿舍。因此外地的小伙伴仍是不用怎么折腾的。
连接:https://www.zhihu.com/question/21851929/answer/27052723
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。
第一轮的电话面试是在周一上午十点,但是我一直等到10点40才接到面试官的电话,第一面的面试官是南京大学的学长,人很是nice,没有问什么很难的问题,基本上一开始就是从我作过的战棋游戏的项目入手,由于我负责的主要是GamePlay,因此问的问题也都集中在这一块,好比游戏中的状态机的设计,动画曲线的设计,相机的移动,游戏中如何使用MVC之类的(能够参考个人这篇文章)等等。而后就是我一我的在扯一些Cocos2d-x的事情了,由于我本人对Cocos2d-x还算有点研究,就把Cocos2d-x的一些重要的特性说了下,可是学长好像是作Unity3D的,感受有点对不上路。算法方面的问题却是一个也没问,面试结束后,我问了下学长对个人印象如何,学长说各方面都还不错,我就以为这一轮差很少了。
总之第一轮的电话面试,还算简单,只要你有几个拿得出手的项目就好了,最好是移动游戏,实在不行的话,作过移动App也行吧。固然,熟悉Unity3D或者OpenGL之类的有加分,要是获悉一些后端的东西,好比网易的Pomelo就更好了。
网易游戏二面过了一周以后,网易发来了通知,叫我去杭州参加第二次面试,知道这个消息仍是蛮兴奋的,由于网易的本科生录取率还不到5%吧。。。又过了一周,果断买票赶往杭州!
网易的第二次面试其实是三次面试,就是三个工程师会轮流对你进行面试,而后综合评价以后,再判断是否给你下一轮的机会。对于此次面试我仍是作了很多准备的,我不但专门为此次游戏作了一个游戏Demo,用MVC架构作了一个Cocos2d-x的游戏,源码在这,另外还有一个用Unity3D作的应用,MrNerverDie/MiniWeChat-Client · GitHub,并且专门准备了一份自我介绍和一些想问面试官的问题。
去进行面试的一共有6我的,五个是应聘实习生的,一个是春季补招的,也就是说,网易对实习生的招聘和正式员工的校招要求的水平基本一致,这点各位注意一下。通常过了第一面以后,在杭州这一次是6个里面淘汰5个,这6我的基本都拿到BAT或者同级别的的offer了,除了我和个人一个同窗(我两以前一块儿作了那个战棋游戏。。。)是本科生外,其余人基本都是研究生,可见网易的选拔仍是比较严格的。
接下来讲一说二面都问了些什么问题吧,我一一列举以下,各位能够参考一下(网易的人别打我,我这不算泄露机密吧):
- 如何对手机游戏进行优化,个人回答基本上是如下这样的
- 通常分为内存优化帧数优化,内存优化和运存优化。
- 帧数优化能够考虑对一个message loop中的逻辑运算进行优化,好比能够考虑A*的剪枝。或者进行time slice,具体能够参考个人这篇文章
- 体积和运行内存优化有如下几点
- 使用工具对资源进行打包,使用TexturePacker等工具把多张资源合成一张图片。
- 采用png压缩工具,在打包图片以前对每张图片进行压缩,下降图片质量。
- 针对不一样的平台使用特定的压缩格式的图片
- 若是项目中帧序列占的比较多,那么能够采用降帧的方式来优化。
- 缩放图片,将原来图片缩小为原来的70% ~ %80,再对图像进行放大
- 采用编辑器,将大图转化为拼接,那么就能够利用地图编辑器、动做编辑器等从而减小体积,下降内存的使 用。
- 如何在对游戏的“手感”进行改进:
- 游戏手感通常指的是打击感,那么我就在打击到一个游戏对象时,游戏对象要产生击退的效果,产生该对象被打击的感受。
- 时间控制要恰当,要让某个对象(好比火球,拳头)打击到另外一个游戏对象的时候,才产生击退效果,这就须要进行使用消息机制和回调来解决。
- 如何在数据库中存储一我的的全部装备
- 创建一我的物ID和装备ID的关系表。
- 将人物的全部装备的id序列化为一个JSON字符串存储为人物的一个字段。
- 这两个最大的区别是在修改装备时,第一个只会影响一条记录,当时第二个会影响全部装备,一旦出现bug还让玩家损失全部装备。二者各有利弊,根据使用场景本身权衡。
- C++11的新特性?
- 如何对一个快排进行优化使得它的最坏的时间复杂度达到O(LogN)?
- Lua和Unity中的协程是怎么使用的,都有什么区别?
- 个人游戏Demo中AI的设计思路是怎样的。
- 若是让你设计一个暗黑破坏神的简化版手机游戏,你会从哪里开始设计。
只记录了一些我认为比较有价值的问题,有些问题没有记录,其实除了这些问题以外,我和面试官的许多交流都围绕在我作的游戏Demo上了,讨论了许多关于这个游戏AI,架构和Cocos2d-x相关的问题,我还把本身的游戏代码给面试官看了,不少问题都是边看代码边聊的,仍是和第一次同样基本没问算法,大部分时间是在聊项目。因此各位同窗们,有个拿得出手的项目仍是很重要的。
总而言之,和这几个面试官的聊天过程,仍是比较开心的,大部分问题都能答得不错,几个面试官对个人评价也不错,顺利进入下午的三面。
要注意的是二面的时间比较长,每一面的时间都有30分钟以上,还要连着跟三个面试官聊天,前一天必定要休息好,要否则可能撑不住。
网易游戏三面三面是总监面,到了三面的时候,6我的又被淘汰了几个,而后我第一个被叫过去总监面,三个总监貌似是主策,主美和主程。这一面的压力仍是蛮大的,问的问题明显要比二面的时候难了很多,我整理了一下三面中一些比较难的问题,供你们参考一下:
- C++11有那些特性?
- C++11模板中的特化和偏特化分别指什么?都在那些状况下应用?
- C++11模版的高级使用有那些?请举出例子。
- Java Runtime和Lua Runtime有什么区别和相同点?
- 游戏中状态机如何实现REDO,UNDO和MERGE?(用stack便可实现)
- 极大极小算法的原理和在AI中的应用?
- 3D游戏中相机是有那三个元素构成的(Translate,Target和Up Vector),分别起什么做用,如何使用四元数进行相机的变换?
因为本人计算机图形学比较菜,不少相关的问题无法打上来,在第三次面试中真实蛮失败的,最终很惋惜,没拿到offer,只好下次再战。。。