游戏客户端面经 完美世界(一面、二面)
目录/时间线
- (返回汇总帖)
- 09121630 一面
- 09141530 二面
- 1027 流程结束
09121630 一面
总共47min。
自我介绍。
算法面试题
- 介绍一下数据结构中的堆
- 介绍一下堆排序的过程
- 空间复杂度是怎样的
- 是稳定的吗
- 讲一下建堆的过程
- 建堆是从哪个结点开始的
- 用两个栈实现队列
- 怎么判断链表有没有环
- 接着刚刚的算法{哈希表},怎么找到环的入口
- 可以讲下快慢指针怎么找环的入口吗
C++
- 递归深度过深会出现什么问题
- 简单介绍一下什么是面向对象设计
- 知道多态的实现原理吗
- C++的类默认会有哪些函数
- 怎么阻止编译器创建默认的构造函数
- 子类和父类的构造函数执行顺序是怎样的
- 构造函数可以调用虚函数吗
- 子类的析构函数不是虚函数会有什么问题
- 怎么让类的所有实例之间共享数据
- 静态数据成员会影响类的大小吗
- 如果静态数据成员是私有的,那么还可以通过类名限定访问到吗
new
和malloc
有什么区别- 内联函数的作用是什么
- 有什么缺点吗
- 和宏有什么区别
- 了解右值引用吗
- 怎么将一个左值转换为右值
- 介绍一下STL
vector
和list
的区别是啥- 对于插入和删除,哪个数据结构效率更高
计算机基础
- 介绍一下线程和进程的概念
- 线程有自己的资源吗
- 它共享了进程的哪些资源
反问
- 这个岗位{游戏C++客户端开发}和另一个岗位{游戏UE客户端开发}有什么差距:不太确定
- 为什么这个岗位没有安排笔试:不清楚
- 有决定项目组分配吗:有,是MMORPG,用UE5开发的(后来在二面问到了——诛仙世界端游)
- 客户端的技术栈是怎样的:C++为主、Lua做界面、蓝图给策划用
- Code Review:之前有说要搞过,但没搞起来,只是偶尔看下SVN提交记录,但不会作为研发流程的一部分,因为目前研发工期还是比较紧的
09141530 二面
总共42min。
自我介绍。
项目
- 介绍自己做了哪些事情,以及做了哪些比较好的事情
- 详细介绍一下这些比较好的事情
- 对ECS是怎么理解的
- 采用ECS有什么好处
实习
- 做了哪些工作
- 做的还挺多的,就三个月期间内完成的吗
- 了解虚幻引擎吗
计算机基础
- 堆内存和栈内存的区别
- 怎样降低动态创建大量对象的性能开销
- 如果这些对象大小不一呢
- 这些不同粒度的内存池能合并在一起吗
- 有办法减缓内存碎片的负面效果吗
C++
vector
在扩容时会对其内现存的对象调用拷贝构造和析构函数吗- “不会调用这些函数”这一事实,意味着有哪些需要特别注意的坑(答错了,事实上会调用到)
算法面试题
- 给定1000x1000的二维平面,其中有大量半径为R的圆,要求能够快速查询给定的一条直线段与哪些圆相交了
反问
- 项目的规模和进展如何:客户端加引擎差不多30人左右;在准备二测
- 既然已经首测公开过了,那是什么游戏呢:诛仙世界
- 对正式员工会有什么形式的培训:公司层面不太清楚,项目内部会有指导、有导师指引
- 入职后大概会从事什么工作:主要是做Gameplay层的开发,从界面入手,然后到场景相关的。