腾讯光子 游戏客户端(游戏引擎开发方向)面经

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面问题

#腾讯##面经##游戏客户端#
全部评论
话说佬知道ue的niagara底层是怎么实现的吗,我之前面阿里也被问了
1 回复
分享
发布于 04-25 20:27 重庆
项目是啥啊
点赞 回复
分享
发布于 04-26 00:47 浙江
联想
校招火热招聘中
官网直投
半透明物体多个G-Buffer可能是想问OIT?
点赞 回复
分享
发布于 04-26 04:07 美国

相关推荐

1.你为什么要做游戏2.你喜欢做游戏吗3.你在游戏开发中的自驱力来自哪里,开发的时候会感到快乐吗4.光栅化是什么5.阴影如何实现6.动态阴影如何实现7.飞机大子弹战移动、碰撞、渲染比较多如何优化8.由于延迟导致子弹在你这打中在我这没打中如何保证同步9.Drawcall如何优化10.合并Mesh做了什么,怎么合并的11.为什么只有相同材质才能合并12.光栅化在UE的哪个模块中实现13.平时看过什么提升编程能力的书籍14.https如何加密的15.对称和非对称加密16.私钥和密钥如何使用17.FTP的上一层协议是什么18.使用UDP还是TCP,为什么19.什么时候适合UDP,什么时候好适合TCP20.说说你项目中最困难的三个点,如何克服21.想实现瞄准的时候人物动画跟着变化如何做22.Anim Offset是什么 如何实现23.ECS是什么24.导航网格是什么,原理介绍一下25.寻路算法26.A*寻找的是最短路径吗27.BFS和DFS哪个用来寻找最短路径28.BlendSpace是什么 大概说一下算法29.说一下遇到奔溃或者偶现的问题如何排查30.程序崩溃调用堆栈怎么看的31.静态可和动态库32.如何把二进制内容还原33.遇到找不到原因的崩溃怎么处理34.内存泄漏如何处理35.除了基本的GC还有什么手段36.非UObject GC37.带GC的语言 相互引用怎么办 38.IK是什么 IK常见算法如何实现39.蒙皮是什么40.权重有什么用 如何计算51.函数调用参数放哪 返回值放哪里52.CacheMiss是什么53.四叉树、八叉树44.32位和64位有什么区别45.线程安全46.重定向做了什么 大概说一下重定向的算法 #软件开发2024笔面经#  #腾讯# #实习#
点赞 评论 收藏
转发
点赞 评论 收藏
转发
10 31 评论
分享
牛客网
牛客企业服务