巨人网络、点点互动、哔哩哔哩、库洛、网易、米哈游、腾讯、腾娱、阿里巴巴、英雄游戏、莉莉丝、途游

巨人网络、点点互动、哔哩哔哩、库洛、网易、米哈游、腾讯、腾娱、阿里巴巴、英雄游戏、莉莉丝、途游 · 面经

完整信息

157 条问法 · 107 道题

本篇目录

前言

我的秋招结束了,非常艰难,一度以为自己找不到工作了,感觉经历了一段至暗期。期间牛客的帖子帮助很大,所以秋招结束后也想分享一些面经、建议、经历、和心路历程, 希望能够帮助到一些想加入游戏行业的同学。我投递的几乎都是游戏客户端开发岗位,本文也主要围绕这个岗位进行分享。

个人简介

简单介绍一下背景:25届硕士,毕业于美国某名牌大学,计算机专业,游戏开发方向。学校是挺好的,同届同学很多也早早加入游戏大厂,而同时间我却挣扎了很久。主要是参加了25届的春招的一些补录和26届的秋招,所以今年秋招有一部分被挂掉有可能是由于毕业时间。至于为什么晚了一年找工作,只能说纯是自己太昏头,需要以我为戒。同时如果有类似背景的同学也可以参考我的经历。

简历上两段游戏实习经历,一段国内某中厂UE相关,也就是整个小型demo;一段国外小工作室Unity VR项目,非常小的团队。两段经历的含金量都不高。项目经历包括一个毕业项目和两个课程项目,含金量也很一般。总之,毕业院校还不错但经历非常普通。

游戏客户端面经

首先直入正题,先分享一些八股和面经

八股

C++

  • 多态(静态/动态多态,虚函数,虚表,是什么以及原理)
  • 智能指针
  • 析构函数(为什么是虚函数、内存泄漏、继承下析构顺序)

以上为C++高频,这几条几乎每场必考

  • 内存布局(堆、栈等)
  • 指针和引用的区别
  • 源代码到可执行文件的流程
  • Lamda(是什么、使用时需要注意什么)
  • 继承(内存长什么样,有/无虚函数时又长什么样)
  • 菱形继承(有什么问题、虚继承、内存长什么样)
  • new/malloc区别
  • 构造函数(能不能为virtual、继承下调用顺序)
  • vector和list的区别(局部性、性能、结构)
  • vector扩容机制
  • unordered_map/map(底层结构是什么、哈希冲突怎么解决)
  • 模板(能不能声明定义分开写)
  • static/const用法
  • 常量指针、指针常量

其实可能很多没写全的,可以去看一些更全面的资料,附上一些我看过的:

<a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fleetcode.cn%2Fleetbook%2Fdetail%2Fcmian-shi-tu-po%2F" rel="nofollow noopener noreferrer" target="_blank">**********</a> (力扣上的书,要会员,有些东西可能有点老,个人觉得还挺全面,高频也很准)

<a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fgithub.com%2Fhuihut%2Finterview" rel="nofollow noopener noreferrer" target="_blank">C/C++ 技术面试基础知识总结</a>

计算机网络

  • TCP/UDP
  • 三次握手
  • 可靠UDP
  • 帧同步/状态同步

考得不多但第一条非常高频

操作系统

  • 进程/线程(协程有时候会一起问)
  • 线程同步(锁、条件变量、原子操作)
  • 死锁(是什么,怎么解决)
  • 进程同步(几乎不会考)

考的不多但第一条比较高频

图形学

  • 渲染管线(最高频)
  • 判断点在三角形内(叉积、重心坐标、面积法)
  • 抗锯齿(各算法、优劣、有什么问题)
  • 透明混合
  • 前向/延迟渲染
  • 阴影(light map、shadow map原理)
  • 碰撞检测优化:BVH/空间划分(八叉树)
  • 光线追踪
  • 欧拉角/四元数(优劣、差别)
  • Early-Z(什么时候会失效)

这个也挺牛的,很多人分享过

<a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fzhuanlan.zhihu.com%2Fp%2F430541328" rel="nofollow noopener noreferrer" target="_blank">【游戏开发面经汇总】- 图形学基础篇</a>

算法

  • Top-K
  • 判断链表是否有环,找到环入口(怎么证明)
  • AStar(流程、是否最优)

口撕是这些比较高频,AStar可能是我简历有相关所以这个问的也多

Unity

  • C#值类型/引用类型
  • AB包(打包注意什么、加载卸载要注意什么、引用计数)
  • 合批(静态/动态/UI)
  • 装箱/拆箱
  • 模板(有什么好处)
  • UGUI的理解(底层/怎么用,很少会问)
  • Collider/Trigger
  • 垃圾回收
  • 协程(IEnumerator/Coroutine)

其实很少会问Unity的八股,Unity项目可能会问,但也非常少

<a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fzhuanlan.zhihu.com%2Fp%2F693441602" rel="nofollow noopener noreferrer" target="_blank">Unity与.NET的垃圾回收(GC)</a>

<a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fzhuanlan.zhihu.com%2Fp%2F59879279" rel="nofollow noopener noreferrer" target="_blank">浅谈Unity ECS</a>

<a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fzhuanlan.zhihu.com%2Fp%2F1897298518709892937" rel="nofollow noopener noreferrer" target="_blank">Unity八股总结</a>

UE

  • 反射系统(原理、UTH)
  • UPROPERTY等宏
  • 大地图流式加载

其实也没什么了,引擎相关的知识其实很少问,UE项目有可能会问到反射相关,其余也不深究

<a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fzhuanlan.zhihu.com%2Fp%2F22833151" rel="nofollow noopener noreferrer" target="_blank">《InsideUE4》GamePlay架构</a>

也是很多人分享过的很厉害的作者了,其他文章也值得看。虽然面试可能不会直接问,但是能展现出理解我觉得也是优势

面经

分享一些公司的面试中遇到的还记得的提问和经历

巨人

  • vector中去重(erase会有什么问题、迭代器)
  • 导致游戏卡顿的因素
  • 找最短路径用什么算法、数据结构(BFS、FIFO)
  • 状态同步

点点

一面:遇到的唯一一家纯问Unity,参考上文

  • 装箱/拆箱
  • 模板(避免装箱)
  • C#值类型/引用类型
  • 接口和抽象类的区别
  • trigger和collider
  • drawcall优化的方法
  • 静态/动态合批及条件(动态小物体,不超过300顶点)
  • UI合批,合批条件:不能被打断、不能穿插、要一个图集
  • AB包(如何设计、打包、加载/卸载、引用计数)

对于我没回答好的问题,面试官会给出解答

二面为策划面

  • 项目中的团队合作,如何和不同成员沟通、互动
  • 如果同时有几个策划在和你对接,水平可能参差不齐,你如何沟通、整理需求、实现功能

没给反问环节,面完就感觉寄了

Bilibili

UE在研(一面)

  • UE反射系统
  • C++高频八股(多态、智能指针)
  • 有一堆2D坐标,快速找有哪些落在半径为r的圆范围内
  • skinning原理
  • 哈希冲突
  • 垃圾回收机制
  • UE的字符串
  • UE和Unity的区别
  • 渲染管线
  • 抗锯齿

感觉答挺好,一面挂

库洛

一面纯八股

  • C++高频
  • 栈什么情况会爆
  • 类大小计算(内存对齐)
  • 菱形继承(有什么问题、虚继承、内存布局)
  • Lamda(要注意什么)
  • AStar流程
  • Static
  • TCP/UDP
  • 口撕:链表找环入口(快慢指针、数学证明)

二面问项目/实习,没什么参考价值

  • Unity实习项目的代码结构
  • 项目功能实现

二面挂,有点像KPI面

雷火

一面有两轮

第一轮纯做题

  • new int()和new int的区别
  • 从给出的strcpy代码中找问题
  • 排列组合数学题
  • 继承例子中构造函数和析构函数的调用顺序

第二轮纯八股

  • C++高频
  • placement new
  • 进程通信
  • 大端小端
  • Unity垃圾回收机制
  • 堆排序
  • 判断点是否在三角形内部
  • 死锁,线程同步
  • 光追原理
  • 渲染管线

二面主管面

  • 死锁,线程同步
  • C#值类型/引用类型
  • 进程通信的方式
  • C++移动语义
  • 简历项目
  • 手撕:循环小数找循环节

二面挂,非常看重C++基础和算法,面试官说如果这两方面能对答如流,他们会觉得你很有潜力,如果中等的话,也可以考虑,下等就不好说了。我以为我是中等,但可能别人认为是下等

米哈游(Gameplay方向)

一面纯八股

  • C++高频
  • i++和++i哪个是左值哪个是右值
  • C++四种cast
  • 模板(什么时候知道T的具体类型)
  • 遍历数组和链表哪个更快(局部性、cache命中、cacheline)
  • 哈希表最差情况复杂度,哈希冲突怎么解决
  • 线程同步(自旋锁和互斥锁的区别,底层实现)
  • 空类占多大内存
  • delete是怎么知道要delete多少字节
  • 口撕:无序数组找前k小(堆、快速选择、时/空间复杂度)
  • 有没有了解过设计模式
  • 手撕:单例模式

面试官很友好,面试体验很好,开始时会介绍接下来会问到什么。即使回答不出来,也会做一些引导和提醒,会给你机会对没问到的方面进行补充说明,结果出来的也很快,第二天立马挂。米哈游是出了名的重八股的,会问的比较细,后面什么环节就不知道了。

米哈游(UE5在研)

  • C++高频(vptr、虚表)
  • 菱形继承(内存中长什么样)
  • 射击游戏的一定范围内散射怎么做(就是锥体内找随机偏转方向,找角度)

这次八股问的不深,并且没有手撕。同样第二天立马挂

腾讯(CFMobile)

一面

  • 口撕:找到有环链表的入环口,然后反转从头到环口这一段(就是找环口+反转链表、数学证明)
  • map的底层是什么,复杂度(红黑树)
  • vector扩容
  • GPU skinning
  • CPU和GPU间的通信
  • 类似新战神里演出的无缝切换怎么做的
  • 有没有了解过业界的一些新技术
  • OOP、数据驱动、对UE的一些框架/设计的看法、ECS(主要是简历有相关才问的)

二面

  • Shadowmap原理
  • 狙击开镜怎么做的
  • 2000个顶点的模型,vertex shader和frag shader各执行多少次(vs逐顶点,fs看分辨率)
  • strcmp怎么做的(一个个char对比)有没有更快的方式

其他的都是问了一些简历有关的,面试官对我评价很一般,说是看过我的github,觉得作品完成度不如很多同学,二面挂

腾娱

光环:和平精英组,社招

一面

  • C++高频(多态、智能指针)
  • new和malloc区别
  • 析构时先析构子还是父
  • final
  • 模板声明写头文件定义写cpp里有什么问题
  • TCP/UDP
  • 抗锯齿
  • UE的EQS是什么,和Navmesh怎么搭配用
  • 如果想自己实现EQS的话,要怎么做(框架)
  • 如果希望AI只寻找当前楼层的点,防止找到其他楼层(高低差),怎么做

二面

  • 简历实习项目相关
  • C++17新特性了解过吗
  • C++和C#优缺点,有没有什么C#功能是你想移到C++的,或者反过来
  • 如果你写的AI功能有性能问题,如何排查

三面

  • 项目的难点
  • Navmesh问的比较多
  • 如果想实现可视化从人物当前位置到指定位置的路线,怎么做;如果中间有障碍物能跳过去呢,怎么做

腾娱是腾讯子公司,说难听点就是内包,光环是给光子工作室做事的。不过面试官都是腾讯正式员工,有三场技术面。

灵犀

一面:UE在研SLG

  • ECS是什么,component在内存中的布局
  • TCP三次握手
  • 判断链表是否有环和找入环口
  • 问了一些简历相关

一面挂

腾娱(王者荣耀)

一面

  • ECS component更新顺序
  • ECS怎么debug
  • 找前10最小(Top-K),复杂度
  • 父类构造函数调用父类virtual时,具体调用的是哪个函数(父的还是子类重写的)
  • C#的array和list区别,linkedlist、stack、map
  • 对UGUI的理解
  • 还问了一些简历项目相关

英雄

潘神工作室

一面

  • C++高频(多态、智能指针)
  • 模板原理,性能和虚函数比如何
  • 常量指针、指针常量
  • 堆和栈区别
  • new和malloc区别
  • 用迭代器遍历vector的同时用push_back有什么问题
  • 判断点是否在三角形内部(叉积)
  • C++11特性
  • Lamda是什么,捕获怎么用
  • 手撕:合并区间
  • 多线程中使用share_ptr时,引用计数会怎么更新,会有问题吗
  • 法线贴图(法线怎么存的、为什么一般多为蓝色)

有一些问题可能是面试官突发奇想,没有硬性要求要回答出,总体体验不错

二面

  • 问了一些简历相关
  • 手撕:给一个string找合法DNS(xx.xx.xx.xx,每个xx为0-255)没做好,讲的也不好,花了很长时间
  • 喜欢玩什么游戏

腾娱(游戏AI)

一面电话面试

  • 内存碎片
  • 怎么设计一个内存管理系统避免内存碎片
  • ECS相关

二面

  • C++高频(智能指针)
  • AStar算法
  • using怎么用
  • Image-based lighting
  • 阴影技术
  • placement new
  • 如何计算一个类大小(内存对齐)
  • 一个怪会掉不同稀有度的装备,各有不同概率(0.1白、0.2蓝、0.15橙),如何实现
  • 正态分布如何转换为均匀分布

莉莉丝

  • UE5 GAS
  • GameplayTag怎么用的,有什么好处
  • 用GAS实现一个沉默效果怎么做
  • GameFeature是什么,如果有依赖关系怎么办
  • 项目寻路系统相关
  • SIMD原理

主要是基于简历问的,参考价值不高

  • C++智能指针(为什么要有weak count)一面挂

途游

Cocos2d项目

一面

  • Unity和UE的区别、理解
  • TCP/UDP
  • 三次握手
  • 问了一些项目相关
  • 平常喜欢玩什么游戏、玩什么手游

对我反馈还不错,但没后续了

投递情况

有些可能是因为卡毕业时间直接刷掉,也有可能只是因为我不够优秀,但也有一些公司在我毕业时间不匹配的情况下仍发了笔试面试的,供大家参考。

长时间不理人的也当挂了,我没有一个个官网去复查,有些公司也不更新。以下除非明确注明都为26届秋招:

简历挂:鹰角、搜狐畅游、XVERSE元象、三七互娱、完美世界、朝夕光年、盛趣、游卡、华娱游戏、西山居、散爆网络、紫龙游戏、深蓝互动

笔试挂:沐瞳、Funplus、诗悦(不难,感觉做挺好还是挂)、吉比特、吉比特无界计划(笔试形式为24小时作业,做的挺用心的但依旧挂)、快手、友塔游戏(太难了)、掌趣、波克城市、库洛(感觉这次秋招比春招笔试难很多)、网易互娱

一面挂:灵犀、莉莉丝、诗悦(TA方向,客户端笔试就挂了但居然TA捞了,但其实不太对口)、Bilibili、Garena(发了一面通知,预约了但没发会议链接,联系了hr说当周约满了等之后发通知,然后就不了了之了,追问也不回,最神人的一集)、途游、巨人网络、米哈游、腾娱(王者荣耀)

二面挂:点点互动、腾娱(游戏AI方向,反馈还可以但没消息了)、腾讯(CF手游、春招)、网易雷火(春招)、库洛(春招)

接下来就是搞心态的了,有两家是技术面全过并且hr面也结束,处于等待offer的阶段,最终因为各自的理由把我拒了,基本都是拖了一到两周,甚至还得自己追问,已经被遗忘掉了。在此之前一直以为到了hr面就稳了。

个人建议

基于这段时间的求职经历和自己的学习历程分享一些个人拙见,比较浅显,也许可以帮助到一些新手。

简历

关于我自己的简历,模板上就是用的最简洁的纯黑白,没有什么花里胡哨的格式/分区,也是网上最推荐的。内容上除了基本的教育经历、实习经历、项目经历,还加了专业技能(注明熟练程度)、个人简介。我写简历的经验也不丰富,主要是说下我踩过的一些坑。

首先你的简历是为了你投递的岗位量身定制的,在一页纸内尽可能多填岗位相关的内容。以游戏客户端为例,我之前把游戏项目中做过的事全写进去了,包括找素材、配动画、剪预告片、设计、做playtest等,看起来很全面,但问都不知道能问什么,面试官大概率不会关心。需要写上一些技术相关的条目,包括用到的技术栈、算法等,也算是用来引导面试官的提问方向。并且需要熟知写在简历上的每一个点,不要抱着侥幸心理,觉得可能问不到。

关于编简历,有看过网上说可以编实习或者项目经历的,无中生有是有点难度,但我觉得半真半假是可行的。写在简历的东西不一定非要是你真的上手做过的,可以是想过但没做的功能、其他地方看到过相关解决方案、其他成员做的功能等,只要能讲明白怎么做的、涉及到的技术、原理、细节。毕竟面试官只能从问答中了解你的经历,并不会看你的代码。当然,对于这一块需要深度准备一下,只是草率地了解一下是经不起拷打的。有时间甚至可以打开自己的项目自己拓展一下,或者是针对某个功能做个简单demo,这样被问到了也能回答得更自信。这种方法可能更适合个人项目经历,像涉及到比较大型或成熟项目的实习经历可能就不太好编了,每个人情况都不一样。如果是在快要求职或是正在求职的阶段,可以尝试这个方法。如果是还没到求职阶段,那准备时间还长,提前考虑好求职方向,做好眼前的项目就好。

学习

分享一些简单的学习建议,如果你想要加入游戏行业,有充分的时间准备但不知道从何入手,也许能够有所启发。

首先,C++必学,几乎所有游戏公司的笔试和面试都会问到。而且不能只是简单知道语法怎么用,会写点算法题就行了,背后的一些底层原理、功能特性、STL等都要有理解,可以参考网上的C++八股。如果能上手一些C++项目,尤其涉及内存管理、多线程相关的代码则更好。我没做过,这方面不太懂。其实我觉得面试也很少会去问很深度的C++的应用,但我觉得如果你项目里有这方面的经验应该能算一个亮点。

其次是图形学,即使是面客户端也会经常被问到。如果没学过可以从Games101开始,作业也是C++,顺便也一起练了。这个作者的其他系列我认为也蛮有趣的。如果对图形API和游戏引擎开发感兴趣可以看看Cherno的教程。

项目

其实我也没什么经验,但回顾经历,感觉踩了一些可能看起来很理所当然的坑。我的建议就是提前了解想做的岗位是做什么的,考察什么,然后针对性的做这岗位相关的项目,并且要有深度。以我为例,当时游戏设计课就做了一个技术上没什么含金量的游戏,侧重点全放在怎么让画面好看点、玩法完整一点,但我又不是要做策划。还有毕业项目也是加入了一个全是小白的团队,我这水平还当了个leader,做出来的东西也没什么含金量。反观其他同学,制作组都是大佬,最终项目还的奖了。总之人还是得脱离舒适区,和比自己厉害的人多相处,向他们学习,并且这样也有机会获取更多信息。

求职

校招很重要,当然大家都知道,边上学边求职是肯定的,关注多点官号公众号等可以及时收到消息,开了就投就好了,别像我一样时间都搞不明白。可以做个表格记录一下投递了哪些,方便回顾和总结。

之前和两个从业者交流过,我总结出来他们有一个相同的建议,就是培养出一个自己的长板。一位是我实习的老大,他说可以自己挑一个感兴趣或者岗位需要的点作为长板,围绕着进行准备。当时我就想那就图形学,我挺感兴趣。但是以我为例,这样临时抱佛脚其实并没有什么用,只是单纯看看资料背点八股,没有项目支撑并不能怎么突出这是一个长板,而且客户端岗一般也不会那么深入关心你的图形学经验。

还有一位是腾讯的三面面试官。当时是问了我有没有什么研究的比较深的方面,不一定是游戏的,计算机方面的都行。我的确没什么长板,就扯了个之前了解过的gpu-driven pipeline。然后他又问有没有代码相关的经验,并没有,所以回答得很无力。整个面试让我觉得,他重点关注的是大学期间我做了什么,怎么学的,有没有为这个加入这个相关岗位而学习和钻研,做出了什么成果。总而言之,除了八股、算法的基础,还需要有上述提到的有一定钻研深度的亮点和长处。从我这次这个大厂面试经历就可见一斑了,如果你还有时间的话,可以往这方向努力。以这次面试中问到的一个问题为例,他问我喜欢玩ARPG,那对动作系统或者这方面相关的技术有没有了解,然而我并没有什么了解。总而言之,既然喜欢玩游戏,想要成为从业者,就不能只是作为一个消费者看待游戏,可以按自己的兴趣去对某一领域的技术进行深入,甚至可以挑选个课题,做个项目等等。很可惜这些我都没有实现。顺带一提,感觉腾讯不怎么考太深入的八股文。

结语

最终不包括被鸽掉的,我也就只收到两个offer,并且最后还是选择了那个非游戏行业的offer。这篇文章去年十二月份就写了一大半了,本想入职前就分享出来,结果一直拖到现在我都转正了才写完,而且写到后面感觉也有点草率了。以上都为一些个人拙见,理解尚浅,望多多包涵,也希望能够为各位的求职提供一些帮助和避坑。

本篇目录
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07
  8. 08
  9. 09
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
  101. 101
  102. 102
  103. 103
  104. 104
  105. 105
    如果想实现可视化从人物当前位置到指定位置的路线,怎么做;如果中间有障碍物能跳过去呢,怎么做
  106. 106
  107. 107
  108. 108
  109. 109
  110. 110
  111. 111
  112. 112
  113. 113
  114. 114
  115. 115
  116. 116
  117. 117
  118. 118
  119. 119
  120. 120
  121. 121
  122. 122
  123. 123
  124. 124
  125. 125
  126. 126
  127. 127
  128. 128
  129. 129
  130. 130
  131. 131
  132. 132
  133. 133
  134. 134
  135. 135
  136. 136
  137. 137
  138. 138
  139. 139
  140. 140
  141. 141
  142. 142
  143. 143
  144. 144
  145. 145
  146. 146
  147. 147
  148. 148
  149. 149
  150. 150
  151. 151
  152. 152
  153. 153
  154. 154
  155. 155
  156. 156
  157. 157

相关公司