网易游戏面试经验

2021-07-05 15:02发布

作为国内唯二的游戏大厂,腾讯,网易,是好多苦逼游戏打工人心中向往的地方,虽然都是被压榨,但是找个有名气的被压榨的地方也是好的呀。下面说说面试网易的过程。时间是2020年10月份。

一、学历要求

 本科以上,学校必须211/985

二、面试岗位

 二年以上工作经验,中级开发者,年薪20W左右

三、面试过程

 1、先是在网上做一道算法题,初步筛选,筛选过了会有一面。

 2、一面一般持续一个小时左右,主要是问算法,游戏逻辑(根据你简历所写做过的功能),性能优化方面。问了20多个问题吧。全方位无死角的考察你的真实水平。面试官一般是里面资深的程序。如果面过了,会当场告诉你过几天有二面。

 3、二面的面试官是项目的主程之类的,问的点少了,但是深度会增加,主要是对内存优化,图形学方面的(网易都是自研引擎,脚本是python,所以unity,c#方面问的少,主要是原理),持续半个小时左右,要是满意了会当场告诉你过几天收offer,如果不太满意,会说五天后给结果(一般说这个就意味没戏了)。

四、技术要求

  • 算法部分

 1、 快排的时间复杂度和具体实现

 2、一篇英文文章,求每个单词的出现频率?算法的时间复杂度是多少,优化这个算法,能否加快这个过程?

 3、一个数组,求前k大的数值。时间复杂度是多少

 4、list ,dictionary 和 hashtable的区别,dictionary的底层实现 原理。

 感觉算法部分问的还是比较多的,平时得多刷题,在问的过程中不断的问一些细节问题,如果是死记硬背,会把你问懵。得真正的理解。

  • 游戏逻辑部分(根据自己简历所写功能)

1、简历上写用过动态图集。问为什么要打图集?为什么打图集能优化drawcall图集为什么是2的n次方大小的,比如512*512,1024**1024的?图集如何压缩?图片压缩算法知道哪些?unity支持png么?为什么把Png格式转换成其它的格式?怎么用动态图集?什么时候用动态图集(具体到哪些功能,比如背包,商店里的item icon)?动态图集的大小如何设定?动态图集的优劣势?图集如何做缓存?缓存的策略是什么。

 图集的问题非常多,也非常深,因为游戏包体和内存占比最大的一部分就是图集,还有drawcall优化的很大一部分也是图集相关的。

2、简历上写实现过UIManager。问UIManager都需要哪些功能?UI中的界面层级如何管理(都分哪些层级,如何相互遮挡)?界面的互斥如何实现?打开界面慢如何解决?界面的缓存策略是什么?

 不是泛泛的问,而是举例说明,问具体是如何实现的。比如游戏中的悬浮窗是划分到什么层级?悬浮窗的开关策略是什么?

3、背包是如何实现?如何优化?如何实现对象池?如何分页查询?反复打开背包会重复向服务器发消息么?背包里删除一个物体,其它页面会重排序么?背包里加入一个新物体,其它页面会重排序么?

4、断线重连如何做?是需要重新登录么?网络底层做的断线重连还是逻辑层做的。

5、打开界面时候播放一个几秒种的动画如何做?

6、加载界面时卡顿如何处理?如何优化?

7、游戏种的战斗系统如何实现?放技能时如何判定对方是否受到伤害?如何实现技能打出一段时间就冒伤害数字?

 不是泛泛的问,而是根据你的回答,往具体功能上问,对问题一知半解,或者工作里没做过,或者没思考过一般答不出来。这就要求面试者,平时工作里,把功能做完了,得花时间去思考为什么这么做,原理是什么。

  • 优化部分

1、什么是GC?GC的原理是什么?GC为什么会卡?游戏中如何减少GC

2、mono内存,资源内存的区别?堆和栈的区别?托管和非托管内存的区别?代码中如何优化内存?

3、如何减少DrawCall.静态合批的原理(为什么静态合批能减少DrawCall),静态合批的注意事项?动态合批的原理?同屏几百个角色模型如何优化?

4、如何减少手机耗电量?

五、总结

1、平时一定多刷题,算法,数据结构方面的。耐下心来,把基础的算法敲出来。快排,哈希,二分查找,字符串逆序,数组找头N个大的数字,贪心,动态规划,红黑树的实现之类的,刷个50道就差不多了。好多问题都可以从基础的算法里演化出来。比如找数组中头N个数字大的数字,最简单的思路就是先快排,然后返回头N个数字就可以了。

2、工作中自己做过的功能,一定多思考思考,不能网上找个解决方案,能实现就行了。一定要思考原理?为什么能这么做,有没有更好的方案。功夫要下在平时。

3、性能,性能,性能,一定要注意性能,CPU,GPU,内存,网络。这几方面的优化策略一定要知道,还得知道原理。引擎系统帮你做的事情一定要知道原理。

4、简历上的技能点不能随便写,一定时自己很熟悉的,自己真正做过的东西才敢写上去。

5、好多同学在平时工作里由于任务多,工作量大,加班严重(996),导致对工作缺乏热情,功能实现就完事了,不会去多思考,这就导致工作做了不少,但是本身技能没有任何提高。这样做出的产品,卡顿严重,Bug多,画面落后。对公司对个人都不是好事。

 对程序员个人来说,一定要避免这样的情况,抽出一定时间去思考,所作工作有没有更好的解决方法。

 对公司来说,一定每隔一段时间,开个技术研讨会。对前段所作工作做复盘,多关注前沿技术,不断更新技术储备。