游戏客户端面经 剑心互娱(一面、二面、三面)
目录/时间线
- (返回汇总帖)
- 09151600 一面
- 09191400 二面
- 09271630 三面
- 0930 邀约线下四面时主动终止流程
09151600 一面
总共30min。
自我介绍。
常规面试题
- 为什么要应聘游戏开发
- 玩的比较久的是哪一款游戏
- 最喜欢哪一款游戏
- 入行游戏开发需要哪些能力或品质
- 实习之后是怎么安排的,有留用吗
C++
- 讲一下虚函数
- 虚函数底层实现
- 在构造函数中调用虚函数会怎样
- 用
static
修饰全局函数有什么作用 - 遍历数组和遍历列表哪种更快
- 根据局部性原理,可以实现怎样的优化,举例说明
- 宏和内联有什么区别
- STL里面的
map
和unordered_map
有什么区别 - 哈希表有什么问题吗
- 除了无序,还有什么问题
- 除了空间占用高,还有什么问题(假设是手写的,而非STL版本)
- (还有负载过高时性能下降的问题)
图形学
- 讲一下整个渲染管线
- alpha测试、模板测试、深度测试的顺序
- 讲一下蒙皮的原理
- 了解PC和移动端的GPU架构上的区别吗
反问
- 项目组分配了吗:先统招招进来实习三个月,然后看情况决定项目组的分配
- 用哪个引擎:Unity、UE都有,看个人偏好决定哪种项目
- 基于UE的项目的客户端技术栈:C++、Lua
- Code Review:似乎只有入职后的前期有mentor来review,后面上道后就没啥review了
09191400 二面
总共59min。
自我介绍。
C++
- 看代码找错和判断输出(想要动态绑定但漏了virtual)
- 派生类的函数需要加virtual吗
- 派生类的函数需要加override吗
- 为实现重写,编译器做了什么工作
- 编译器怎么通过虚表查到要调用的函数的
- 看代码判断相关变量的内存使用情况
- 静态局部变量什么时候初始化
- 静态局部变量什么时候分配内存
- 是否存在内存泄漏
- 有没有办法在程序退出之前将函数体内申请的内存释放掉
- 除了利用函数外的内存管理器,还有别的方法吗
- 怎样释放堆上的数组
delete []
是怎么知道要释放的内存的大小的
- 判断含虚函数和不含虚函数的空类的
sizeof
- 看代码找错(该传引用但传了值、内存泄漏、多次释放)
- 对同一指针多次
delete
必会崩溃吗 - 更正代码,要求给出多种修改方式
- 对同一指针多次
算法编程题
- 有打过算法竞赛对吧
- 为什么后来没继续打了
- 最小生成树
游戏
- 玩过哪些游戏
- 最喜欢哪一款
- 觉得逆转裁判有哪些技术难点
- 最近有在学习游戏开发的技术吗
- 为什么决定要学UE
实习
- 具体实习的内容是怎样的
- 觉得实习过程中学到的最大的技能和经验是什么
- 开发过程中和后端同事是怎样协作的
- 实习过后有转正吗
- 这次秋招投了哪些公司,进度最快的是哪个
没有反问环节。
09271630 三面
总共65min。
自我介绍。
C++
- 看代码找错
- (无符号整数导致for死循环)
- (该传引用但传了值)
- (传出指向局部变量的指针)
- (访问权限)
- 除了这些,该函数在效率上有没有问题
vector
扩容时会使用memcpy
还是逐元素拷贝- 函数返回
vector
对象时会产生拷贝吗
编程题
- (模拟题)给定仅含取值0~9结点的二叉树,要构造出一个镜像二叉树,并保持结点集合(数量和各结点取值)不变。
- (堆、贪心)LC253原题转述版。
场景应用题
- 在二维平面上,划定10000x10000大小的方形区域,再给一大堆的点,要求能够快速查询任意10x10大小的区块内包含的所有的点
- 怎么划分栅格,划分粒度是怎么决定的
游戏
- 简历附件上的游戏经历是从什么时候开始算的
- 现在平常会花多少时间玩游戏
- 平时只玩单机吗
- 对于项目游戏类型有什么要求和偏好吗
- 剑网三主要玩哪个方向
- 最近在玩啥
- 什么时候开始有做游戏开发的打算的
其他
- 觉得自己图形学学得怎么样
- 图元裁切发生在坐标变换前还是之后
- 为什么不能在变换前做呢
- 图元裁切发生在坐标变换前还是之后
- 觉得实习期间的工作内容符合自己的预期吗
反问
- 和西山居在技术团队上有关联吗:基本上彼此独立,没什么技术交流,只有内部平台上公共资源是共享的(如公开课)
- 对于正式员工有什么样的培训:会有mentor带着在参与项目的过程中学习(看来minigame和入职培训可能比较欠缺,因为回答中没提及)
- 假如获得了Offer,可以提前来参观公司吗:下一轮综合面试就是线下的