游戏客户端面经 腾讯天美(一面、二面、HR面、OC)
目录/时间线
- (返回汇总帖)
- 09141100 一面
- 09151000 二面
- 09181900 HR面
- 1007 意向书
- 10311915 OC
- 1102 正式Offer
09141100 一面
总共87min。
Lua
- 实习用过Lua的话,那讲一下Lua中元表的含义
- 解释下Lua中闭包的含义
- 解释下Lua中协程是怎么实现的
- 了解过Lua中的垃圾回收吗
- 可以讲下垃圾回收第一步Mark是怎么找到不可达对象的吗
- 讲一下C#和Lua是怎么进行交互的
- Lua怎么动态修改C#函数的
- Lua热更新怎么修Lua代码中的BUG的
- 能讲下C#反射的原理吗
图形学
- 在二维平面内,如何判断点是否在三角形内
- 除了刚刚说的叉积之外,还有别的方法吗
- 有没有了解过Shadow Map,讲一下
- 如果一个像素点在Shadow Map中找不到,会怎么处理
- 多个光源的阴影怎么处理
- 了解延迟渲染吗,讲一下
- 如何处理透明物体
- 了解过蒙皮动画吗,讲一下大概原理
- 知道前向动力学、逆向动力学吗,讲一下对IK的了解
- 了解IK的算法吗,讲一下
- 了解PBR吗,讲一下
编程/应用题
- 判断射线是否与球体相交
- 除了刚刚写的解一元二次方程的方案,还有别的方法吗,讲思路就行
- 给群里N个人随机发红包,保证每个人所得期望相同,且预算要刚好用完
- 除了刚刚说的思路{N个随机数},还有别的更简化一点的方法吗
- 怎样进行随机洗牌,使得每张牌出现在各个位置的概率均等
- 拟合圆周率
- 除了刚刚说的思路{撒豆子},还有别的方法吗
- 除了刚刚说的思路{数值积分},还有别的方法吗
- 除了刚刚说的思路{栅格化},还有别的方法吗
- 给定若干硬币面额,用最少数量凑到给定金额
反问
- 项目组研发的游戏的情况:不给说
- 游戏引擎:当前项目的引擎是Unity,不过可能下个项目就是UE了
- UE项目的技术栈
- Code Review:有人工和ChatGPT的Code Review
09151000 二面
总共90min。
C++
- 解释下对C++多态的理解
- 虚函数为什么能做到动态多态
- 虚表指针在内存中的位置
- 对象的内存布局是怎样的
- 进程的内存空间是怎样的
- 虚表在其中的哪个区域
- 假如存在5个父类对象(含虚函数)、5个子类对象,那么内存中有几份相关的虚表
malloc
和new
的区别- 怎么删除它们动态分配内存的对象
- 什么是野指针
- 什么是内存泄漏
- 说下智能指针
shared_ptr
的底层实现shared_ptr
有什么坑或缺陷- 有什么办法解决这种循环引用造成的泄漏
- 看代码说四种情况下sizeof的结果
- 数组和链表的区别
- 它们插入元素的复杂度是怎样的
- 堆和栈的区别
- 说下哈希表
- 说下平衡二叉树
编程题
- 判断一棵树是否是平衡二叉树
- 对于刚刚写的代码{朴素的递归DFS},还有优化的空间吗
- 除了刚刚说的{递归转迭代},还有优化的空间吗,比如避免额外的判断
- (剪枝、提前终止递归)
- 好像是LC上寻找数组中重复元素的一题,要求O(N)时间复杂度、O(1)空间复杂度的那题,而且官方解法是要利用传入数组中每个元素本身的高位来记录出现次数。
计算机基础
- 知道大端和小端吗
- 网络字节序是大端还是小端
- 工厂模式在什么情况下会被用到
- 知道Windows的内存管理机制吗
- 虚拟内存是什么
- 知道Linux的内存管理是怎样的,和Windows有什么区别
- TCP和UDP的区别
- 你觉得MOBA游戏需要什么样的传输协议
- 怎样达到这种即正确又高效的协议呢
图形渲染
- 可编程管线分几个阶段
- (发一张照片,)假如要渲染这张图片,可能涉及到哪些技术细节
常规面试题
- 为什么在简历后面附上游戏经历
- 假如对方智力尚可、但尚未接触过游戏,推荐三个最好玩的游戏
- 最喜欢的游戏是什么
- 为什么最喜欢逆转裁判
- 对于自己的职业规划有什么想法
- 游戏类型有什么偏好
- 觉得自己有什么需要提升的点
反问
- 存在怎样的培训:有,...(分享了很多),但是大多数情况下大家的成长其实还是在做的过程中学
- (这一点成为了我选择Offer的最主要依据、且几乎是唯一依据——项目的技术深度)
- 会进怎样的项目组:可能是公开的,也可能是在研的
- 项目规模如何:客户端团队规模范围可能会是10~100,但平均下来10~30
- 会要求提前实习吗:推荐,但不强制
09181900 HR面
总共42min。
自我介绍。
(问的比较杂乱,我调整了下顺序)
关于实习
- 详细介绍下实习的经历和产出
- 个人觉得最有成就感的是哪部分
- 除了Lua源码,觉得对客户端的其他什么方面学得比较扎实
- 是个人的评价还是周围人的反馈
- 在实习过程中与哪些人协作
- 有没有遇到过重大的困难和挑战,怎么克服的
- 有没有遇到协作上的重大困难
- 如果让协作方反馈,你认为他们会怎样评价你
- 他人或你自己认为你在哪些方面可以改进和继续提高
- 专业之外的其他方面呢
- 对市面上的游戏、玩过的游戏有过技术调研吗
- 在解决项目难点的时候有去看过怎样的文档、做过怎样的研究
- 团队的认知上限会成为自己的认知上限吗
关于个人
- 之前打过算法竞赛是吗
- 当时三个人是怎样分工协作的
- 个人觉得在写代码方面是天赋型还是别的什么
- 有什么比较能证明自己努力型的事情
- 为什么想从事游戏客户端开发
- 为什么春招没有去其他游戏公司,而选择了快手游戏弹指宇宙
- 当时为什么拒了吉比特
- 从小到大的成长过程中谁的帮助/影响比较大
- 为什么是游戏和动漫,而不是家庭什么的
- 父母的职业
意向
- 为什么选择保研本校
- 对天美有怎样的印象
- 为什么意向部门是魔方
- 有投其他公司吗,进展最靠前的是哪家
- 对工作地点有偏好吗
其他
- 在腾讯有直系亲属吗
- 既往病史
反问
- 项目组:是J6工作室下的(后来OC时才得知是魂斗罗)
- 有项目用UE吗:目前没有,看未来新项目的技术选型
- 工作地点、工作时间:深圳、新项目冲上线期间的加班强度会很大
- 后面还有面试吗:没了,HR面就是最后一轮