腾讯 游戏客户端 面经

转眼又到了暑期实习招聘的时间,分享一下去年的面经。希望对大家有帮助

工作室A

一面

  • 图形学中常见的光照模型
  • 描述一下blinn-phong光照模型
  • 有没有学过ue
  • 有没有使用过unity的动画系统和物理系统
  • 有没有了解过动画系统的物理系统的原理
  • 虚函数的原理
  • 虚函数表存储在哪里
  • 虚函数指针存储在哪里
  • 构造函数能声明为虚函数吗? 析构函数呢
  • 内存对齐
  • 手撕: 如果链表有奇数个结点点, 反转中间结点的前面部分和后面部分, 如果有偶数个结点, 分别反转前半部分和后半部分.
  • 红黑树的原理
  • 哈夫曼编码
  • 如何实现一个轻量的可靠UDP
  • 有没有使用过多线程编程

二面

  • C++有几年使用经验
  • C++是怎么学习的? 学校里的课程还是自学的
  • 课外的话通过什么书籍学习的C++
  • STL了解到什么程度, 知道智能指针吗
  • 还了解C++的其他内容吗
  • 知道哪些高级数据结构
  • 非线性的数据结构知道哪些
  • 树和图的遍历方式
  • 喜欢什么类型的游戏
  • 最擅长的游戏 ???
  • 擅长到什么程度 ???
  • 实习的目的
  • 具体想提升哪些方面的技术
  • 实习只有3个月, 你说的这些学不完 ???
  • C++类的大小由什么决定
  • C++类的内存模型
  • 多重继承的虚函数表指针的数量由什么因素决定
  • 虚继承
  • 在构造函数中可以调用虚函数吗
  • 虚表指针的赋值时机?
  • 虚表是什么时候生成的
  • 虚表存储的位置
  • 内存对齐的规则

手撕

无重复最长字串

工作室B

一面

  • 一个类中有一些成员变量, 如何确定这个类的大小
  • 如果类中添加了静态成员变量,函数,虚函数呢
  • 虚函数指针的作用
  • 如果一个派生类重写了基类的虚函数, 虚函数表会有什么变化
  • 析构函数为什么要是虚函数
  • 如果不通过delete, 而是离开作用域时自动销毁, 会调用派生类的析构函数吗
  • C++内存模型
  • 堆和栈的区别
  • 如果自己实现一个vector, 你会怎么考虑
  • 进程和线程
  • 进程访问的内存地址是实际的真实的内存地址吗
  • 线程访问其所属进程的内存地址时有什么限制, 可以跨线程访问栈空间吗?
  • 可以访问堆内存
  • 栈访问风险 共享所有内存, 每个线程都有独立的栈空间, 不应该跨线程访问栈, 因为其他线程的栈可能随时被修改, 直接访问可能导致数据不一致.
  • 同步问题 多个线程同时修改同一全局变量或堆内存时, 需通过锁或原子操作保证数据的一致性
  • 多个线程同时访问一个变量时产生竞争条件怎么解决尝试获取被占用的互斥锁, 进入阻塞, 等待锁释放
  • 线程尝试获取被占用的互斥锁进入什么状态(阻塞)
  • 死锁产生的条件
  • 互斥条件(Mutual Exclusion):一个资源在同一时间只能被一个线程或进程占用。
  • 占有且等待条件(Hold and Wait):一个线程或进程在持有至少一个资源的同时,仍然尝试获取其他线程或进程所持有的资源。
  • 不可抢占条件(No Preemption):资源不能被强行从一个线程或进程中抢占,只能由占有它的线程或进程主动释放。
  • 循环等待条件(Circular Wait):存在一个线程/进程等待序列,其中每个线程/进程都在等待下一个线程/进程所持有的资源。
  • 有没有了解过UE
  • 从设计角度看为什么GameMode只存在服务器,GameState存在所有客户端
  • 图形渲染管线

算法

  • 无重复最长字串
  • 表达式计算 + - * /

二面

  • 在游戏开发中喜欢做哪方面的内容
  • 以后是想往gameplay方向发展吗
  • C++中调用普通函数和调用虚函数在性能上有什么区别普通成员函数在编译时已经确定地址, 调用直接通过函数地址执行(如果函数简单直接被内联优化)虚函数调用需要先获取虚表指针, 找到虚函数表, 再从虚函数表中找到对应的函数地址
  • 虚函数表存在哪个区常量区,只读数据段
  • 类的实例中会存储虚函数表吗
  • 虚函数指针是什么时候确定的
  • 虚表是什么时候确定的
  • 构造函数可以为private吗
  • 两个没有关系的类能互相转换吗不能, 需要在类中实现对应的类型转换运算符
  • 指针的大小
  • new和malloc的区别
  • C++中是否可以先分配内存, 再在已分配的内存里进行构造对象(placement new)
  • vector和map以及unordered_map
  • 在插入10000个数据时, 上面三个结构的内存大小和布局是怎样的
  • 以上三种数据结构的查找时间复杂度
  • 哈希表扩容的原因
  • 如何判断一个圆形技能可能击中哪些敌人
  • 如果敌人在移动而且分布不均匀要怎么解决
  • 如果敌人全在某个点上呢
  • 如果在2D平面内有很多小球, 如何处理小球之间的碰撞
  • 有不使用包围盒的方案吗
  • 半透明物体的渲染, 透明物体渲染时要进行深度写入吗
  • 线程执行的顺序是确定的吗
  • 如何使线程按照一定的顺序执行 (条件变量)
  • 线程之间如何通信
  • 使用信号量和全局变量来进行通信有什么区别
  • 全局变量: 忙等待
  • 信号量: 阻塞
  • 可以使用一个锁来使两个线程按照顺序执行吗
  • cache是什么, 实际程序中怎么利用cache

看代码回答问题

  • 引用/指针相关
  • 内存对齐相关, 给定类结构回答类的大小
  • 虚函数相关
  • 内存分配相关 栈/堆
  • 深拷贝/浅拷贝, 移动构造函数

手撕

实现一个程序, 要求给定学生姓名能够立即得到其年龄, 不能使用任何STL容器, 但可以自己实现(前缀树/哈希表).

三面

  • 项目相关
  • 子弹的命中是怎么实现的
  • 讲一下shadowmap的原理
  • 如何优化静止的物体的shadowmap
  • 静止物体的shadow和运动物体的shadow怎么叠加

#大厂##游戏客户端##面经##腾讯##暑期#
全部评论
牛逼,竟然可以做到记这么多面试题,感谢
2 回复 分享
发布于 03-09 03:21 广东
都三面了啊,这是已经oc了吧
点赞 回复 分享
发布于 03-22 19:30 陕西
虚函数表存哪
点赞 回复 分享
发布于 03-18 10:32 北京
这是客户端吗?怎么感觉这么多shader内容
点赞 回复 分享
发布于 03-14 04:55 陕西

相关推荐

04-08 13:35
已编辑
门头沟学院 游戏后端
bg:京2本信息安全 川9硕软件工程 一段本科小厂三个月引擎岗实习timeline:2月过年前不知道多少号投递的游戏客户端提前批3.13 集体笔试真的以为简历挂了,实则L1开始的比较晚一共12道题时长一小时,一道算法,剩余全是读程序改错,添加功能的题-----------------------------------------------------------------------------------------------------------------------------3.24 第一次一面时长半小时 面完一小时平级释放给同部门其他组(当时还以为是过了)纯八股无手撕无项目无实习内容,跟这个链接里面的题目85%相似https://www.nowcoder.com/share/jump/1775621209350这次是我第一次处女面,面的很烂很紧张,很多会的都没答上-----------------------------------------------------------------------------------------------------------------------------3.26 第二次一面时长一小时,面完5分钟秒过约下一面无手撕1、自我介绍2、为什么想做游戏,心路历程C++八股3、多态的种类4、多态的底层实现机制5、map和unordered_map底层实现6、哈希表底层实现7、哈希冲突解决方法8、在一个程序运行中发现,哈希表冲突严重,在不修改哈希函数的情况下如何缓解冲突9、map为什么用红黑树而不是AVL10、SIMD10、为什么要内存对齐11、内存对齐规则12、当场给了一个strcut问在内存里大小13、如何快速判断OS是32还是64位14、如何设计智能指针(shared_ptr)15、为什么要有强弱引用计数16、weak_ptr如何打破循环依赖17、cpp编译过程18、编译阶段发生了什么图形学17、渲染管线18、shadowmap pcf pcss19、AABB 八叉树20、实习相关图形学aicoding21、你的实验室项目如何用ai帮助你完成项目22、少量个人项目反问这次面试明显感觉好了很多也不紧张了,除了simd基本都答上了,五分钟秒过-----------------------------------------------------------------------------------------------------------------------------3.27 二面时长一小时,无手撕1、自我介绍2、学校实验室研究方向c++八股1、不用sizeof的情况下如何快速判断cpp程序是32bit还是64bit的OS2、空类大小是多少3、为什么空类大小是14、有个派生类继承了空类,派生大小是多大5、什么是虚继承6、虚继承解决什么问题7、栈和堆的区别,回答了之后追问本质区别,没答上实习经历8、问了15分钟实习工作内容个人项目和AIcoding超级拷打9、问了半小时个人项目实现细节,细到不能再细,真的人麻了个人生涯规划做游戏的初衷AICcoding看法能实习时长关注哪些游戏行业的动态反问-----------------------------------------------------------------------------------------------------------------------------4.8 催面秒挂等太久了没消息发邮件询问进度,太经典了,催就秒挂,好无力。其实我觉得二面面的还将就吧,个人项目底层确实有些答不上来,天美L1真的地狱难度
腾讯求职进展汇总
点赞 评论 收藏
分享
接到了一个腾讯面试,客户端的,当时没细看以为是游戏客户端,毕竟我投的也是这个(后面才知道是企业微信的)。这点蛮重要的,在接受面试那里可以看到,还是得针对面试官的具体方向做一点处理,不然双方都很难受。面试官一口广普,说话不利索,开局也没有自我介绍,也没让开摄像头。我一开始还以为对面是个ai。上来甩给我三道题,在文档里写:合并有序链表,寻找旋转排序数组和shared_ptr实现。甩给我之后就下线了,45分钟后上线,也没监控,就不怕我用ai吗。第一道题没什么问题,追着我对头节点插入的逻辑问了好一会;然后第二道题我脑子抽了写错了,想半天也没想出来,后来我拿纸笔推演了一下才给出正确结果。第三题基本逻辑都写了出来,但是没有做特殊情况处理,比如数据处传入一个nullptr的处理(当时脑子抽了,在抛异常和直接接受里选了在构造函数里返回空指针......),还有右值引用时传入自身的特殊处理(确实是草率了,cherno视频都有讲来着,只能说是经验不足)。然后进入了项目环节,让我讲讲自己的项目,这时我就感觉到了不对,一种鸡同鸭讲的感觉。我跟他讲我怎么用GAS实现状态互斥,他问我怎么让游戏变得更好玩;我跟他讲AI怎么设计,他问我AI模型这么大,怎么放在本地跑,当时我听到这句话的时候脑袋是懵逼的,于是跟他解释我的AI是用行为树做的,这部分自然也是没什么好结果。最后反问环节,我问面试官觉得我表现如何,他说我算法功底不错,但是习惯不好,缺少实践,二分用的也不太熟,还得多练。后面又问他是哪个方向的,这时我才知道他是企业微信的。总的来说,还是吸取上面的教训,至少得确认面试官是什么方向的。也不知为什么会让我去面,感觉是KPI面,不过面试官人挺好的,就是说话不利索,听不清楚,也不开摄像头,让我很疑惑。
朴临希:兄弟我投的也是游戏客户端,然后被腾子的企业微信捞了,虽然不知道是不是kpi但是收到面试申请还是挺开心的
查看4道真题和解析
点赞 评论 收藏
分享
评论
27
170
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务