灵犀互娱游戏客户端面经
一面 5.9 约40分钟
自我介绍
简述简历项目
项目(各个项目均有提问)
arpg游戏demo:
1.为什么使用c#和lua编写脚本
(c#是unity需求,lua是部分插件需要)
2.如何将lua与c#结合
(注册c#方法到lua引擎,再通过lua代码调用,大致讲了一下,没涉及细节)
3.战斗系统做了什么
(主要是战斗操作与逻辑计算,回答自己实际做的东西)
4.与敌人的战斗交互具体是怎么做的
(碰撞检测判断是否受击,受击事件触发回调函数,表现层进行动画处理,逻辑层进行状态转移与伤害公式计算)
5.主角操作的实现
(状态机,大致讲了实现思路)
6.敌人逻辑的实现
(也是状态机,讲了一下敌人状态转移的逻辑)
渲染引擎项目
1.使用的光照模型
(pbr光照模型,手写了渲染方程)
2.简述一下渲染方程的含义
(简单说了一下BRDF函数,从材质到角度来解释,没有深入细节)
3.渲染方程的求解
(黎曼和,蒙特卡洛积分)
4.项目中还实现了什么图形学算法
(回答了几种阴影算法)
5.场景管理是怎么做的,采用了什么方式
(ecs架构)
6.为什么要使用ecs架构
(模仿unity的实现)
7.ecs与oop的区别
(ecs避免了oop继承体系复杂性,将同类数据由统一的逻辑进行处理等,回答得比较粗糙,跟面试官交流了一下)
8.场景中怎么管理对象
(不同模型划分为不同对象,建立对象层次结构等)
八股
1.虚函数与纯虚函数
(简述虚函数相关)
2.c++如何确定一个对象的类型
(不是很明白,面试官向下展开说了一下,涉及到内存对齐、类型转换可能出现的问题等,比较深入,回答得不是很好)
3.简述快排原理
(每次选取一个key值,找到一个位置使左边元素比它小,右边元素比它大,每轮递归)
4.快排的时间与空间复杂度,什么情况下最坏
(具体细节不太记得,根据理解答了一下,空间复杂度说错了)
5.快排是稳定排序吗?举例一个稳定排序
(不是,选择排序)
6.堆的作用
(得到一组数据的最大值或最小值,堆排序)
7.堆怎么插入和删除元素,最大堆化怎么做
(根据数据结构定义简述过程)
没有手撕算法环节
闲聊
1.为什么想加入游戏行业,是早有打算吗
2.参加过什么游戏比赛,谈谈经历感受
3.最近玩了什么游戏,感觉怎么样
反问
1.最近玩什么游戏
2.感觉这次面试交流得怎么样
总体感觉偏向于项目,从项目来问一些实际的东西,问题广度比较大。因为一些个人原因有比较长时间没有准备面试了,所以一些问题答得不是很好。
已约二面。不知道这个时间是不是太晚最后没hc了。
二面 5.12 约30分钟
自我介绍
项目介绍
全程聊项目,讲了讲一些程序设计的问题(程序结构问题建议还是画一下图,口述确实讲不太清楚),无八股,涉及具体内容的问题也不多,感觉像KPI了,应该到此结束了