腾讯 面经 游戏客户端 光子工作室 HR已完成,干货!
背景
一面:
UE4部分:
为什么选择ue4,为什么不选择unity
常见的一些类
Pawn和character的区别是什么
Ue4蓝图和c++如何相互调用(宏)
网格体动画的原理(骨骼,蒙皮,权重什么的)
动画蒙太奇介绍一下
运行时生成物体的函数是什么
图形学:
整个渲染流水线
刚刚说深度测试放到最后面,请问有没有放到其他地方的情况(没答出来,面试官说这跟移动端什么的有关)
实时阴影的原理,算法
矩阵怎么求逆(ORZ不会)
主要还是聊了很多自己的项目
项目里主要用c++还是蓝图
介绍一下你刚刚说的动物森友会***形地面的怎么实现的
(好像问了一个什么数值驱动,不太懂)
IK运动学(我只是说我用了ue4的preview的这个功能,具体的内部实现不太懂)
C++
多态是怎么实现的(讲了一下虚表指针,虚表,运行时确定地址,好像面试官不太满意)
虚表是哪时候生成的(编译时)
Inline标识符的作用
算法
如何获得链表中倒数第k个数
给你一个圆的圆心(0,0)半径为R,实现给出一个在圆内的一个随机点
快速排序的时间复杂度,最坏情况是多少
二面:
C++&算法:
多态实现
关于虚析构函数的问题
堆和栈区别
寄存器维护堆还是栈
说一下智能指针
宏是在哪个阶段进行处理(预编译),const呢(编译)
如何判断链表中是不是有环(我说了使用快慢双指针,然后又要我说另外的方法,提示是可以使用额外的内存空间)
说一下重载
图形学:
渲染管线
说一下opengl有哪些缓冲
说一下法线贴图,干嘛用的,他是在vertex shader 还是 fragment shader里进行使用
(其他的忘了呜呜呜)
UE4:
Pawn和actor的区别;
我创建了一个uobject对象,在没有其他引用的情况下请问我该如何保证它不会被gc?(根据提示原来使用UPROERTY宏进行标记就可以防止被回收,然后又问还有什么方法,我真不知道啊,他就问我umg怎么进行使用,说到add to viewpoint他说就是用这个可以把这个引用放到根结点,就不会被回收了)
我自己做了个类,不是继承自uobject的,请问怎么使用ue4自带的垃圾回收机制(这个我真不知道)
Actorcomponent和scenecomponent的区别
用什么方式可以维护actor之内的层级关系:(SetupAttachment进行组件间的子类父类的关系维护,其底层是调用了SetAttachParent(InParent);actor之间是attachActorToActor)
说一下动画蒙太奇(balabalabala)
说一下动画的混合吧(blend pose之类的,两套动作,哪个作为basepose比较好,balabala)
请说一下uobject和Aactor创建和销毁方式(生成actor:spawnActor,生成object:NewObject();销毁actor:destoryActor,销毁object:conditionalBeginDestroy)
三面:
三面之前我真的紧张死了,头一天晚上都睡不好觉,网上说三面多难多难,不得不说鹅厂的面试官真的很nice,自我介绍完就不紧张了,哈哈哈;
三面主要聊天为主,问技术问题不过我还没到这个层级,基本都不太会(果然应届生的水平也就停留在会用哈哈哈),问的问题都是见仁见智了,没有标准答案,下面是问题:
1. 为什么选择UE4,当初有什么考量(应该是面试官自己想了解的)
2. 学ue4多久了?
3. 对于你未来的职业规划怎么考量?做商业化的游戏和比较理想化自己做的游戏你更倾向于哪种?
4. Shadowmap是什么?
5. 了解过剔除吗,他是在哪一步执行,知道剔除有什么算法实现吗?(最后不知道啥实现了)
6. UE4底层你了解过多少?(我说了ue4自己实现了内存回收和反射功能)
7. 那内存回收过程讲一下吧?那中型的游戏,内存回收需要多少耗时,你猜一下。(我猜一帧以上吧,他说那不得卡死?)
8. 聊一下项目,问项目一开始怎么确定方向的,然后人员结构,然后我在自我介绍的时候带了一下这个项目参加腾讯大赛没过复试,并且总结原因
HR面
总结
1. 其实可以发现,对应届生的要求真的不是很高,来来回回的话c++就考那些,数据结构和算法要有一个基础,感觉有项目是非常加分的
写简历的时候照着这个要求去写,可以说我本身的技能与光子工作室想要的人比较匹配,面试的时候就觉得问的问题和我知道的方向非常对口,所以总体来说是很流畅的(感觉主要是ue4这个引擎比较匹配,毕竟光子需要会ue4的人😂)
3. 不得不说,腾讯的面试官真的很nice,我卡壳的一些东西他会一步一步引导你,不会让你太紧张