腾讯光子 游戏客户端(游戏引擎开发方向)面经
offer已经有一小段时间了,其实之前就打算发,但是最近在赶前一阵因为找实习而搁置的活。这两天有点闲工夫,就把之前记录的一点点面经发一下,回馈社区。
(看其他真正的引擎佬面试强度比我高太多了,相比之下我就是个臭弟弟,运气太好了。面试中也看到了很多不足,得抓紧补起来了)
timeline
3.22 投递(过了个周末,3.25周一约了3.27一面)
3.27 一面(当天过,并约次日二面)
3.28 二面(当天过,并约次日三面)
3.29 三面(当天过,约4.3hr面,结果4.2通知改时间,约到了清明节后4.8)
4.8 hr面(当天转录用评估,第二天发云证)
4.15 offer
——————————————————————
下面是面试的记录,都是面完后凭记忆记录的,可能有遗漏,但是应该大差不差
3.27 一面
时长50min
1.问简历项目,说说你这几个项目里遇到的问题、难点,以及你是用什么思路解决的
2.说说你对PBR的了解,Cook-Torrance各项的意义
3.IBL存在什么问题
4.Shadow Mapping, PCF, PCSS
5.设计模式在你项目中的具体应用
6.看你对UE5有一些了解,那来聊聊UE5吧(问Niagara, Lumen, Nanite主要是我简历中提到了)
- 你对Niagara系统有什么了解,和UE4的Cascade相比有什么优势,GPU粒子通信?(这题血崩,我只是把玩过Niagara系统,我就随便扯了点Niagara比较基础的内容)
- Lumen
- Nanite
7.C++八股
- 智能指针
- set和map,有序无序都说说看
- 追问:那这四个容器增删改查的复杂度都是多少
- 说说栈内存和堆内存的区别。
- 堆内存分配慢有什么方法优化(不确定,随口扯了点内存池)
8.玩游戏的时候会不会去了解它们相关的技术,平时对于行业动向是否关注,一般以什么方式和渠道了解那些信息
9.反问
——————————————————————
3.28 二面
时长50min,感觉相比一面有更多的问题是开放性的,相比听到一个尽善尽美的回答,面试官可能更希望看到你的思考
(找实习过程中体验最好的一面,大部分时候都是接近聊天的状态,面试官很耐心也很擅长引导,当时打电话约面时候就说:ok那我们明天聊。让我一下子不那么紧张了)
0.聊了聊关于专业、读研的事情,还有什么时候开始做Rendering的
1.问简历项目,没有一面问得细,但是面试官中间一边打开我的Github和演示视频在看
2.介绍一下BVH吧,包括你软光追项目里的做法
- 追问1:如果让你广度优先遍历这个BVH,怎么做
- 追问2:说说BVH和八叉树的区别,各自的优劣
- 追问3:那同样一个场景,用BVH和八叉树进行划分,采用一样的粒度,哪个树深度会大一点
注:个人认为应该是个开放题,没有确切的结果。我大致回答肯定不能光看八叉树一分八就认为会更浅,BVH也有不同类型,像是UE5的Nanite里使用就是BVH4。同时根据场景中mesh分布的不同也会有不同,有可能出现八叉树到最后几层部分box里有两三个mesh,部分已经空了,这种情况下就不得不继续向下划分。而BVH虽然可能子节点少一点,但可以保证每个叶子节点bounding box都装一个mesh(平衡性更好)。
3.智能指针,以及实现原理(居然二面又问一遍,不过这次追问实现原理更加深入一些)
4.堆和栈(again...)
- 追问1:为什么栈的访问效率比堆高(一面问了分配效率,这次问的访问,扯了点Cache命中率和内存映射)
- 追问2:内存碎片,为何产生
- 追问3:内存对齐
5.前向管线和延迟管线的区别和优劣
- 追问:那游戏一般用哪个(答了都要,延迟管线固然好,但是半透明物体渲染可能就不适合)
6.那半透明物体渲染怎么处理(答了Unity Shader入门精要里看到的内容,渲染队列啥的)
- 追问1:那如果多个半透明物体叠在一起怎么办(排序)
- 追问2:为什么要排序(半透明物体的效果相当于滤光,因此叠加的顺序有影响)
- 追问3:对深度排序有什么劣势
- 追问4:这个排序效率具体低在了管线的哪个阶段(答了应用阶段,因为要在CPU端排序再Draw Call,不知道对错)
- 追问5:那有没有什么优化方法
这个没想出来,面试官提示:多渲染几层G-buffer行不行,对每个半透明物体那层渲染一个G-Buffer,最后分层进行Lighting计算
我说我觉得有一定可行性,但是也不太好(不知道怎么想的,居然反驳面试官 ),比如说当一块半透明玻璃以一个很斜的角度朝着相机,这种情况可能就得分非常多层的G-buffer(可能本身就是开放题,面试官表示我说的有道理然后就这个问题就过了)
7.(闲聊游戏经历)你简历上说全平台总游戏时长超6000小时,好家伙,那你主要玩什么类型游戏(看我玩cs,还问我练不练枪hhh ),玩不玩吃鸡类型的
8.最近两年玩的比较喜欢的一款游戏(说了Alan Wake 2)
- 追问1:为什么觉得它好
- 追问2:那有没有思考挖掘一下游戏里的渲染技术
这里我提到自己玩游戏时候看到一些效果喜欢思考用我已知的知识怎么样做。比如看到Alan Wake 2里积水中的倒影,我会想到SSR,进一步会想到SSR有屏幕空间外的倒影截断的问题,于是会尝试找角度看看能不能让它露馅
- 追问3:那你成功让他露馅了吗(没有... )
- 追问4:其实这种倒影还有很多其他方法实现,你做过IBL,想想看用类似的方法能不能做倒影
我顺着这个说了说思路,最后补充说我觉得这个对静态场景好用,动态物体太多就不太好,因为需要大量的预计算(面试官:那可能就得上光追了 )
9.反问
——————————————————————
三面 3.29
约40min,领导面,没有具体记录。偏个人向的问题较多,比如专业、论文之类的。
总的来说,感觉领导面更注重的是广泛的、宏观的理解,而非技术细节。比如让我说自己的论文工作的时候,我因为说了太多技术细节而被叫停好几次,面试官只是想知道我要去解决什么问题,用什么方式解决,这种情况下用最简洁易懂的话说清楚应该是最好的。
技术上只涉及了PBR,不太注重技术细节,而是问了我认为现在主流的PBR技术有什么不足、你觉得应该往什么方向改进之类的。
——————————————————————
hr面 4.8
就是常规的hr面,一些常见的hr面问题
——————————————————————
更新:
2024.9.13 拟留用
同bg早几天有拟留用第二天发意向的,不知道中秋节前摆了还是怎么,14号没发意向,只能等节后了
2024.9.18 意向
#腾讯##面经##游戏客户端#