先说结果吧,签了巨人网络,给到一个还算不错的薪资,n*14.5,作为一个本科生,其实还算可以让人满意。
回望我这沉沉浮浮的挣扎之旅,有这种结果,已是让我感到幸运。
我其实真不好说今年的招聘形势,但就从游戏这个行业上来看,或许是寒冬后的初春,仍有寒意,但蕴含希望。我多么希望我早生三年,或许就不会如此挣扎。
说说我本人的经历吧,我从22年暑假开始准备找工作,彼时我准大三,花了一个学期去熟悉游戏开发所需要的知识点,随后参与春招大潮,大败而归,春招我的思路很质朴,我只想参与大厂的实习,对于大厂之下,当时的我认为是没有意义的。这个观点其实不太准确,尤其是对于我而言,埋下后言。春招我是颗粒无收,但几位面试官给过我的建议很宝贵,他们认为我开发相关的知识点存在很大的漏洞,可能缺少系统性的教学,所以一直到秋招,我都在补这方面的知识点。我的秋招是从八月份开始的,各大厂开始开放提前批,我有幸被腾讯捞起面试(但是挂了呜呜),整个秋招前期我都处在全国海投的阶段,然后就是各种笔试面试,各种挂,到最后我真的很焦虑,我的清单里已经不剩下多少公司了,我没有准备考研,我没有给我留任何的退路,我真的想不到全部挂完之后,我能去哪?最后的这个阶段是纯粹的焦虑,我已经没有可以投的公司了,我没有新的面试和笔试了,我处在了人生的岔路口上,但我进退不能,我得等在路口,等一个公司把我带离这个疯狂的赛道,或者是继续下去,或许从此碌碌无为。很感谢巨人,带我开启了我期望的新篇章。真的,一念两种人生,所以说,我是幸运的。
再说说我为什么会那么挣扎吧。我确认我要从事游戏行业是大二上,晚吗?不早不晚,我当年(21年)参与了五场gamejam(一种极短周期的游戏开发活动),在这五场开发中受益良多,并坚定了我从事游戏行业的想法。但问题出在22年,22年上海进行了封城,在家的我直接激活懒汉系统,其实也没有想那么多,按照正常学生的思路,确实是窝在家里,安安心心把课程弄完。但如果从一个要参与就业潮的普通人而言,这是一个很严重的错误,现在的公司比较看重实习经验和实际技能,尤其是游戏公司,有一段当前赛道的实习经历对于后来的招聘会有着非常大的帮助,我在这一步走错了,导致后面差点满盘皆输,再加上我确实是特么懒啊,我整个22年,几乎没有进行新的游戏开发项目,我都不知道当时的我怎么能那么混日子。22年的网课时期其实是一段非常宝贵的,可以用来参与日常实习的时间,日常实习要求不高,但这段经历非常重要,很可惜,我错过了。我在准大三的阶段的选择也是去准备知识,而不是去参与实习,我又错了,两步错误导致后面非常被动。大三下要春招,春招我也有选择,这就是我上一段说过的错误,对于我这种没有实习经验的人而言,没有必要去纠结大厂,有个实习经历就行!但我选择了继续沉寂(我到底在沉淀什么),等真到秋招,看到别人都有实习经历,我有什么?我什么也没有,我甚至只是个211本,我怎么可能拼得过。这三步错误,一步一步,差点让我彻底告别游戏开发这个赛道。希望这三点错误能帮助到后来人。
简历挂或无反馈:鹰角,友塔,盛趣,叠纸,心动,莉莉丝,Apple
笔试挂:米哈游,网易雷火,optiver,百度
一面挂:字节跳动,Sap
二面挂:腾讯,阿里灵犀,快手
简历挂或无反馈:游卡,盛趣,bilibili,疯狂游戏,鹰角,完美世界,沐瞳网络,莉莉丝,心动,像素部落,游族
笔试挂:友塔游戏,米哈游,网易雷火,网易互娱,字节跳动,4399,三七互娱,西山居
一面挂:快手,腾讯天美*2,搜狐畅游
二面挂:哟尔哈
还有一些在流程中。
每场结束我都会记录对应的面经,有些是一二面合一起记录,但我怀疑我直接点名道姓这是哪家的,我会被噶,所以我不提供公司名称,也欢迎面试官来我这找题目灵感哈哈哈哈哈哈。
1. 在一款arpg游戏中,如何做到相机跟随,场景切换,同时尽量让相机的移动是平滑的。
2. 渲染线程和计算线程,两者速度不一致,如何同步
3. A*寻路原理,和dijkstra有什么区别?
4. NavMesh的生成过程简述,recastNavigation
5. 如何判断子弹射击到敌人,子弹很快怎么办?
6. 状态同步和帧同步原理,在各种场合选择哪个策略
7. 跳跃到最高点的同时自动开枪,怎么做
8. 游戏分辨率变换,窗口尺寸变换时,UI怎么适配
9. 角色可以穿脱装备,每个装备对角色的血量有不同的buff,如何设计?
10. 水的着色应该写在vertex shader还是fragment shader
11. 游戏中物品从不透明变成透明时,对渲染有什么难度
12. 单例模式作用,使用单例和只创建一个static对象有什么区别
13. Unity生命周期
14. 谈谈你对射线的理解
15. 怎么判断一个射线和一个球有交
16. 当有多个球的时候,怎么去优化性能
17. 谈谈你对状态机的理解
18. 分层状态机和有限状态机,状态机除了ifelse还有什么写法。
19. Camera的正交和透视
20. Camera怎么做到去剔除不该渲染的地方
21. 游戏引擎的GC是怎么做的
22. 内存为什么要分页
23. 内存碎片是什么
24. 内存泄漏
25. 智能指针
26. 讲一下为什么想要做游戏
1. 常用的数据结构
2. 双端队列的底层实现
3. 双端队列的双端是什么意思
4. 双端队列插入操纵的是map主控还是底下的连续空间
5. 双端队列的map的实现是什么,为什么能两头访问
6. 堆的具体实现
7. 什么是最大堆、最小堆
8. 二分查找思路和流程
9. 二分查找的mid指的是什么
10. 背包系统的实现
11. 你说背包系统可以用按钮实现,那100个按钮的情况下该怎么写(写接口)
12. 10000个按钮下呢?(用贴图代替按钮,贴图被点击传值)
13. 你用什么数据结构存储背包系统的实体(链表+数组)
14. 为什么少量实体用链表,大量实体用数组
15. 在有10000个实体的情况下,你用的是数组,那如何进行增加和删除
16. 什么是死锁
17. 死锁怎么解决?
18. 讲一下你认为游戏制作的流程,需要什么
19. 程序除了需要负责逻辑部分,还需要做什么
20. 讲一下你觉得该如何学习制作游戏
1, 为什么选择测试开发这个岗位,我看你经历都是客户端开发
2, 黑魂的缺点是什么,有什么改进方法
3, 盾反和弹反,具体讲讲
4, 如果要把盾反做得更有打击感一点,你有什么想法,从哪几个方面?
5, 讲一下你游戏开发的经历
6, 几款游戏都是在什么背景下做出来的
7, 请举例说明你最近学习到的技术。
8, 你会如何把这项技术应用到你的游戏中
9, 你的游戏包含联机吗?对联机有什么想法
1, 讲一下你的项目
2, 讲一下unity的shader
3, 讲一下玩家模型是怎么做的
4, 讲一下状态机的实现
5, 讲一下数值是怎么设定的
6, 实时渲染有了解过吗,光照模型怎么处理?
7, 有用unity做过特效吗?
8, 粒子特效是怎么做的?
9, NPC如何判断碰撞,碰撞后有什么结果?
10, Unity内存泄漏和垃圾回收了解过吗,怎么做的?
11, 对象池也会出现泄漏和垃圾问题,在很多种对象池的时候一样会出现性能上的损耗,怎么解决?
12, 你有遇到什么特别有意思的bug吗?
13, 如何解决bug?
14, 在之前的腾讯面试中,腾讯给你留的课后题是什么?有解决吗?
15, 你最近玩的手游是什么?
16, 金铲铲的内核本质是什么?
1, 自我介绍
2, 游戏经历和项目
3, 你的状态机是怎么写的,怎么操作的,玩家和游戏各有什么状态机
4, 你交互射线是用的什么
5, 手撕代码,链表奇偶节点排序
6, New和malloc的区别
7, 内存泄漏是什么,怎么解决
8, 线程和进程的区别是什么,线程共享的是什么,不共享的是什么
9, Vector底层原理,超出容量发生什么
10, Unordermap和ordermap区别,在什么场景下用什么
11, 手撕代码:模拟栈(只要思路
12, 优化方案
13, 手撕代码:最大K(只要思路
14, 用的最大堆最小堆
15, 最大堆是什么?
16, 最大堆最坏情况下的性能是什么
17, 用快排可以解决吗,性能怎么样
1, 手撕算法题,搜索旋转排序数组
2, 什么时候能入职
3, int类型的空间大小,int32位全一是什么值,全一再加一呢?
4, 指针的空间大小是多少
5, 指针和引用的区别是什么?
6, 如果一个int指针赋给一个double指针,double的地址是什么?
7, C++强转是什么?
8, Sizeof的大小是多少
9, 内存对齐是什么
10, 结构体,一个int,一个bool,一个int,一个bool,内存大小是多少
11, 堆内存和栈内存的区别
12, 堆内存和栈内存的性能差距
13, 一直频繁操作堆内存会发生什么
14, 内存除了堆和栈,还有什么
15, Vector和list的底层实现和区别是什么
16, Vector的扩容机制是怎么做的
17, 函数的多态是怎么实现的,虚函数是什么?
18, 子类继承基类,为什么使用子类会调用到子类的虚函数,会不会是基类的?
19, 析构函数是什么,做了什么?
20, 基类的析构函数为什么是虚的?
21, 为什么子类要覆写基类的析构函数?
22, 你的camera是怎么做的,四十五度角是什么?
23, 45度角对场景的作用是什么,物体会有什么变化?
24, Camera的正交和投影是什么?
25, 你所说的用update监听玩家是什么?
26, 你说到了状态机,状态机怎么写的?
27, 为什么要用状态机?
28, 知道行为树吗?行为树是什么?
29, 你对lua熟悉吗?index和newindex区别?
30, 你第二个项目的场景切换是怎么做的,位置变换是什么?
31, 你写到的,射线检测和碰撞体边界是什么?怎么做的?
32, 你的npc是如何检测到玩家的?他什么时候被激活,怎么激活?
33, Npc的子弹是什么?有碰撞体和射线检测吗?玩家被攻击是怎么做到的?
34, 为什么说要用对象池优化?
35, 除了对象池,unity还有别的优化方法吗?
36, 动态批处理的条件是什么?需要物体有什么东西?
37, 除了对美术资源,gpu,对象池的优化,还有别的优化方法吗?
38, 讲一下unity脚本的生命周期
39, 知道协程吗?协程是在生命周期的哪一步?
40, 协程的运作机制是什么?每一帧之间是怎么做的?为什么能把压力分摊下去?
41, 如果有一帧的逻辑运行时间特别长,怎么处理?
42, 了解过图形学吗?知道矩阵的几个变换吗?
43, 拆箱和装箱是什么?为什么要避免?
44, UGUI,对UI进行对齐锚定的anchor和Pivot是什么,讲一下。
45, 你看的性能优化的那本书都讲了什么?
1, 自我介绍
2, 你为什么会对游戏开发产生兴趣?
3, 你大一的实习经历可以讲一下吗?
4, 对大四有什么展望和目标?
5, 说说你为了这个目标,付出了什么,做了什么?
6, 你印象最深刻的项目是什么?为什么深刻?
7, 子弹的对象池是怎么做的?
8, 我想知道你对象池的数据结构是怎么实现的?
9, 子弹的碰撞体是怎么做的?碰撞体是怎么实现检测的?
10, 说说其他的性能优化相关的技术
11, 在你项目结束后,有没有回过头来去复盘去优化?如果有的话,说一说你印象最深刻的一个
12, 你最近有在玩什么游戏吗?
13, 说一说你觉得玩法或者策略上很有意思的一款游戏,讲讲实现?
1, 自我介绍
2, 做一道题:一副牌,能不能全凑成顺子和同花
3, 对C++是什么级别的认知。
4, 内联函数可不可以是虚函数
5, New和malloc有什么区别
6, 多态有几种
7, 静态多态是什么,动态多态是什么?
8, 什么是拷贝构造函数
9, 什么情况下要自己写拷贝构造函数
10, 什么是移动构造函数
11, 深拷贝和浅拷贝区别
12, 虚函数表是什么,原理是什么?
13, 虚函数表底层是怎么存放的?
14, 虚函数表是在什么阶段被初始化的
15, 析构函数为什么要用虚函数
16, 构造函数为什么不能用虚函数
17, 构造函数里可以用虚函数呢?
18, 虚析构函数是动态多态还是静态多态
19, 菱形继承怎么解决?
20, map和hashmap有什么区别
21, 哈希表的底层原理是什么?
22, 你如何构造一个哈希表
23, Vector什么时候会访问失效(迭代器失效)
24, Vector的扩容机制
25, 红黑树的底层原理是什么
26, 红黑树的复杂度,哈希表的复杂度
27, 什么时候用map,什么时候用hashmap
28, Map,你要从里面删一堆数据,你要怎么做
29, 对lua有了解吗
1, 自我介绍
2, 讲一下你的三个项目,详细介绍你做了什么
3, 你刚才讲到,你的项目里面都用到了状态机,而且你写的比较简陋,你状态机的优化要怎么做?
4, 状态机有几个类?每个类做了什么?状态类的接口怎么写?
5, 状态类应该是子类还是基类?基类怎么写?
6, 讲一下碰撞体检测是怎么做的
7, 你说碰撞体检测有射线检测,那如果你有一个很大的炮弹呢,就是说,一个面怎么做检测?
8, Unity里的OnTriggerEnter是什么?怎么做的?还了解其他碰撞体检测算法吗?
9, 在C++中,malloc和new的区别是什么?
10, 指针和引用的区别是什么?
11, 右值引用是什么?为什么要右值引用?
12, 什么是匿名函数?匿名函数一般用在哪?
13, 有时候要具体命名函数,有时候要用匿名函数,什么场合?
14, 你说到匿名函数可以节省栈的消耗,为什么?
15, 动态多态和静态多态的区别?给一个静态多态的具体例子
16, 为什么基类定义虚函数,子类覆写,基类指针指向子类会调用子类的函数?
17, 为什么析构函数要写成虚函数?
18, 讲一下volatile关键字
19, 讲一下staticcast与dynamiccast区别
20, 我们来讲stl吧,讲一下vector的底层原理
21, 讲一下map和unordermap的底层原理
22, 讲一下红黑树的用法以及底层原理
23, 知道C#委托吗?讲一下?
24, 会lua吗?(不会。。)
25, Lua和java的差别你有什么感觉吗?
26, 协程了解过吗?协程的作用和原理是什么?
27, 协程为什么能在这一帧定格,然后在下一帧从这一点重新恢复?
28, 协程和线程的区别是什么?
29, 信号量和互斥量的区别是什么?什么时候用互斥量?什么时候用信号量?
虽然我个人对后续的春招感觉希望渺茫,但这或许只是对于我而言,毕竟我是真的比较菜。。
祝愿各位没有得到offer,或没有满意offer的同志们,后续能有个好消息。放平心态,提升自己是最好的良药。
我曾经真不信命,我现在却觉得一切皆有定数,自己做出的努力,付出的一切,在将来的一天,会带给自己意想不到的收获,不是命,亦是命。
祝各位武运昌隆,万事胜意!
#游戏客户端开发工程师##游戏开发##面经##校招##我的秋招记录#