• 【求职经历】网易游戏实习生面试体验


    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明。如果你喜欢这篇文章,请点【推荐】。谢谢!

    网易游戏面试准备

    如果你大学里有想过从事游戏开发的话,你对网易游戏肯定不会陌生,网易开发出过梦幻西游,倩女幽魂这种端游大作,可惜在页游和手游方面现在依旧毫无建树,网易游戏的特点有以下几个:

    • 工作环境非常好,或者极端点说,可能是国内所有公司里工作环境最好的,具体可以参考知乎里的这个问题里的国内有哪些工作环境很赞的互联网公司?第一个回答
    • 工资待遇非常高,实习生的工资具体数额一般是其他互联网公司的两到三倍左右,各位可以自己算算,应届毕业生的薪资水平也可能是国内IT行业最高的(最低每年在250k以上,280K比较多 ,360K也有),当然你要非拿阿里星来比我也没有办法。
    • 基本上只招C9的学生加上北邮,华南和华科这几个学校的硕士及以上学历,如果你是其他学校的学生或者是C9的本科生却没有好的经历的话在HR筛选简历时会把你直接刷掉。
    • 培训体系非常完善,毕竟是当年云风他们一手搭建的培训机制。如果你是实习生的话,你会和其他实习生(包括策划,开发和美术)组队做一个MiniGame,然后在两个月的实习期结束之后,分组做ppt演示,然后评分,一般刷掉50%的人,留下剩下50%的人。不是像其他公司一样实习生跟版本打杂,这个机制挺有意思,但是具体好坏也不好评判。
    • 加班较少
    • 实习生不需要租房子,网易提供单身宿舍和餐厅,就是说食宿基本不花钱。但是你非要下馆子我也没办法。。。

    关于学历的事情强调下,下面是各个学校的录取比例:

    netease

    哎。。。我怎么说了好多网易游戏的特点好像都是在夸网易游戏啊,那再说下网易游戏不太好的地方吧。

    • 手游包括端游砍项目或者回炉重做的现象比较频繁,手游的话一般十个项目砍掉八九个?感觉面试的时候面试官在项目上的压力还蛮大,一直说手游的竞争很激烈,但我感觉网易游戏的内部竞争更激烈,被砍的依据大多不是市场表现,而是部门老大的评价和判断。
    • 网易游戏还是偏保守,网易基本上已经错过了页游的巨大市场,现在看也基本上错过了手游,不过网易是个好学校,非常适合应届生去。

    还有更多的观点可以参考知乎上的这个问题:你为什么从网易离职?我就不一一列举了。

    前面说了网易游戏基本不招本科生,那我为什么去面试了呢?因为网易游戏最近移动游戏这边看来是比较缺人,所以在招聘要求上特意标明了可以招收本科生,我又对移动游戏很感兴趣,学习了很多相关的知识,对Cocos2d-x,Lua等游戏相关的技术也算用的比较熟了。最终HR就给了我电话面试的机会。

    网易游戏电话面试

    第一轮的电话面试是在周一上午十点,可是我一直等到10点40才接到面试官的电话,第一面的面试官是南京大学的学长,人非常nice,没有问什么很难的问题,基本上一开始就是从我做过的战棋游戏的项目入手,因为我负责的主要是GamePlay,所以问的问题也都集中在这一块,比如游戏中的状态机的设计,动画曲线的设计,相机的移动,游戏中如何使用MVC之类的(可以参考我的这篇文章)等等。然后就是我一个人在扯一些Cocos2d-x的事情了,因为我本人对Cocos2d-x还算有点研究,就把Cocos2d-x的一些重要的特性说了下,但是学长好像是做Unity3D的,感觉有点对不上路。算法方面的问题倒是一个也没问,面试结束后,我问了下学长对我的印象如何,学长说各方面都还不错,我就觉得这一轮差不多了。

    总之第一轮的电话面试,还算简单,只要你有几个拿得出手的项目就行了,最好是移动游戏,实在不行的话,做过移动App也行吧。当然,熟悉Unity3D或者OpenGL之类的有加分,要是获悉一些后端的东西,比如网易的Pomelo就更好了。

    网易游戏二面

    过了一周之后,网易发来了通知,叫我去杭州参加第二次面试,知道这个消息还是蛮兴奋的,因为网易的本科生录取率还不到5%吧。。。又过了一周,果断买票赶往杭州!

    网易的第二次面试实际上是三次面试,就是三个工程师会轮流对你进行面试,然后综合评价之后,再判断是否给你下一轮的机会。对于这次面试我还是做了不少准备的,我不但专门为这次游戏做了一个游戏Demo,用MVC架构做了一个Cocos2d-x的游戏,源码在这,而且专门准备了一份自我介绍和一些想问面试官的问题。

    去进行面试的一共有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,只好下次再战。。。

    网易游戏到底招什么样的应届生?

    网易游戏的面试流程整体走下来,感觉还是蛮规范的,网易确实在认真的招人和面试,我的感觉是网易希望招聘的应届生除了有一个拿得出手的项目之外(最好是游戏相关的),还要在以下这两个方面至少熟悉一样

    • 计算机图形学
    • 游戏服务器编程

    然后再说一下网易的基本要求,当然了,什么数据结构,操作系统,数据库,编译原理这些的基本原理和应用就不细说了,都是本科生基础必会的东西,说些和游戏相关的要求:

    • 对C++的模版的高级用法要了解的比较深入。
    • 对C++的内存管理的各种解决方案要非常熟悉并亲手实验过。
    • 对AI的各种算法要有了解:比如博弈论中的极大极小算法,A*算法的优化等等 
    • 对C++的装载链接过程和Lua的虚拟机的一些底层实现要有了解
    • 对VS或者Xcode这两种IDE需要可以熟练的应用
    • 需要的项目经历:自己开发过 一个简单的游戏引擎或者是做过比较复杂的 游戏Demo(大概是Kingdom Rush这个级别就可以了吧)
    • 对Unity3D或者Cocos2d-x有着丰富的使用经验 (可以没有,有的话加分)
    • 对OpenGL或者是DirectX要有了解,做过一些Shader和Renderer (可以没有,有的话加分)
    • 了解过网易的后端框架Pomelo(可以没有,有的话加分)

    再说一下,网易手游这边目前的一些相关信息,

    • 游戏引擎:主要是Unity,有部分Cocos2d-x
    • IDE:主要是Xcode
    • 后端:主要是Pomelo
    • 项目前景:大部分是被砍

    好了,这篇文章就写到这里,有什么其他不明白的问题,可以到微博上私信我,QQ不想加人了。。。好友太多。

  • 相关阅读:
    C# 读写ini文件
    How to Create DLL(Dynamic link library)
    运算符优先级
    汇编指令:lea
    AT&T汇编语法与x86语法基本区别
    栈的生长方向理解
    Mac Mojave 10.14.5安装python tesserocr
    一台电脑发布多个网站
    局域网内电脑之间互相访问网站
    判断两个对象是否相等——javascript实现
  • 原文地址:https://www.cnblogs.com/neverdie/p/3799189.html
Copyright © 2020-2023  润新知