腾讯 光子工作室游戏客户端开发面经(一二三面已)
先交代下背景,某211软件工程专业大四,已与杭州某游戏公司签约,前段时间被HR主动找上门约面,本来直接拒掉了,结果面试官又打了个电话,于是面了。
目前已发Offer,比杭州有诚意,去深圳了。
废话不多说,直接上干货
一面(90min):
C++:
- 多态,静态多态与动态多态
- 虚函数,虚表原理
- 虚函数表确定时期(编译期)
- 为什么在虚函数表在编译期确定,如果在运行时确定会怎样
- C++的内存模型
- 堆内存与栈内存的区别
- 函数栈
- printf函数是如何实现可变长参数的原理?
- C++函数的调用约定?
网络:
- TCP、UDP
- UDP可靠化
- WebSocket
- 帧同步、状态同步
算法:
- 排序算法(归并、快排、堆排序)
- 排序算法的适用场景(基本有序,基本无序)
- 大数据量的TopK(变体快排)(口述)
- 栈实现队列、队列实现栈(编码)
- 自选一道Leetcode中等难度动态规划题(选择了Leetcode #64-最小路径和)(编码)
- Leetcode #72-编辑距离(嫌64太简单了额外加的)(编码)
二面(120min+):
算法:
- 进制转换(将一个长度最多为30位数字的十进制非负整数转换为二进制数输出)
- 视野争夺(本质上是Leetcode #1326 灌溉花园的最少水龙头数目 (Minimum Number of Taps to Open to Water a Garden))
- 数独(因为不知道数独规则多花了点时间)
图形学:
- 布林冯模型
- N·L(cosθ)的物理意义(朗伯余弦定律)
- 半球积分的计算
- 透视投影矩阵(作用、推导)
- GPU渲染管线
- 渲染管线中输入装配器阶段的图元拓扑
- 质心插值
- 贴图UV与法线贴图
- 顶点着色器阶段可以处理的数据
- 顶点着色器阶段不能处理的数据(数学原理)
- 像素着色器
- 深度测试与Early-Z
游戏引擎:
- UE4的反射系统
- Unreal Header Tool
- UE4蓝图如何调用C++函数(底层原理)
- UE4的GC
三面(40min):
- 项目
- ECS(项目涉及到了)
- Unity的DOTS
- UE4的渲染流程(ParticleSystem PreRender->Z-PrePass->Occlusion Culling->Hierarchical Z Buffer->Shadow depth->BasePass(Gbuffer)->Lighting->Translucency)
- 延迟渲染与前向渲染
- 遮挡剔除详细算法
- UE4的动态合批与静态合批
- UE4的Gameplay框架(下图基本都涉及到了)
-
- 简单地算法题 Leetcode #445 两数相加 II(限定只能用递归,不能用栈,不能倒转链表)
- 闲聊(学习方式、学习路径)
总结
大致就是以上这些了,难度还是有一些的,不光是涉及到的内容广,深度也较深,如果某些知识点只是简单概述一下的话面试官会连续追问直到完全答不出来为止。
此外非常注重算法,三面总共做了8道算法题,而且不光是单纯的AC就行,经常会给一些限制条件或者要求在特殊情况下完成
此外非常注重算法,三面总共做了8道算法题,而且不光是单纯的AC就行,经常会给一些限制条件或者要求在特殊情况下完成
学习能力也是考察的要点,三个面试官都问到了学习的方法、看什么书。
#面经##秋招##校招##游戏工程师#