面试记录
叠纸一面(2021.11.12)
- 自我介绍
- 看你有用C#实现过Lua,那你有去看C语言版本的Lua源码吗?
- 对Lua优化,按照你对源码的了解有什么理解吗?
- 为什么对LuaTable做预填充能起到优化作用?
- 你自己实现Table预填充优化是大概怎么实现的?
- 有什么办法能够检查出Lua代码中全局变量的使用?
- 在Lua代码中使用Env的情况下如何检查全局变量的使用?
- 你对Lua的使用情况是怎么样的?
- 热更新方案Lua和ILRuntime的差异与优劣
- 你认为Lua维护起来很痛苦,那有没有想过做什么工具或其他方式来改善?
- ILRuntime如果查出内存问题有什么优化方案或者工具?
- 简单介绍下你写的Json库
- 你是怎么提高你的Json库性能的?
- 讲下你在工作中对代码内存分配和性能优化的见解
- 对匿名函数的内存分配理解?
- 简单介绍下你的资源管理框架
- 卸载Bundle时使用Unload(true)还是Unload(false),这两个区别是什么?
- 简单介绍下你写的红点系统
- 怎么处理一个节点的子节点被取消激活,父节点依然需要显示的问题?
- 一旦有红点变化,你会把整个红点树都刷新一遍吗?
- 红点树的构建过程是按照路径构建的吗?
- 按照路径构建的过程,路径字符串的比较之类的你是怎么优化的?
- 介绍下你做的组件自动绑定工具
- 介绍下你现在项目的换装是怎么做的
- 骨骼动画的原理
- 如果让你用数据结构来表示AnimationCurve,这个数据结构应该包含哪些内容?
- 具体说下动画关键帧包含哪些信息?
- 怎么表示曲线呢?
- 简单介绍下你在Lua层实现的简易Timeline
- 策划怎么编辑你这个Timeline?
- 如果要做一个编辑器工具让策划可以预览你有办法做吗?
- 用自定义track跑Lua的数据是吗?
- 平常你自己工作内容以外会有什么渠道去学习新知识吗?
- 网络同步可以讲下你最近了解的东西吗?
- Socket底层有了解过吗,能介绍下三次握手和四次挥手吗?
- 为什么会有三次握手?
- 介绍下UDP的特点
通过,全程基本都是我在说,属实累死
腾讯一面(2021.11.13)
- 自我介绍
- 你工作主要负责哪一块?业务还是偏底层的引擎
- C#值类型与引用类型的区别
- 说下值类型装箱过程
- 反射用过吗?一般用在哪一块?反射的原理是什么?
- 类的元数据在哪个阶段生成?
- 接口和抽象类有什么区别?
- C#弱引用有用过吗?
- 密封类和密封方法知道吗?
- C#的容器List和字典知道实现原理吗?
- Lua面向对象怎么实现?
- 说下MonoBehaviour脚本的生命周期
- 说下协程和线程的区别
- 组件隐藏掉协程会停止吗
- 说下渲染管线的基本流程
- 说下UGUI的遮罩组件
- 普通的Mask组件有哪些缺陷?
- 你做UGUI优化的时候有哪些常见的优化
- 用过哪些常见的设计模式?
通过,这问题问的感觉像是在面外包
叠纸二面(2021.11.15)
- 职业规划
- 你对框架的理解
- 你自己做过比较值得说的框架的思路
- 你在写Json库的时候怎么优化内存分配的?
- 你是怎么通过生成Json解析代码避免值类型装箱开销的?
- 你这个组件绑定工具的意义是什么?
- 你在GamePlay上做过什么值得说的吗?
- 有做过UI相关的组件或框架的东西?
- Mono内存的特点可以简单说下吗?
- 你在实现框架时会怎么去避免Mono的内存问题?
- 为什么栈上内存申请比堆上内存申请快?
- 你平时一般在哪里学习技术?
- Lua虚拟机基于栈还是基于寄存器?
- 如何在Lua源码层面加一个类似Vector3的新内置类型?对Lua源码改动量有多大?
通过,给了个很不错的待遇,比一面轻松很多,面试官也会就问题展开讨论,遇到自己出错的地方也会说自己会下去研究一下
腾讯二面(2021.11.15)
- 自我介绍
- 最近工作上的内容
- 介绍下你做的UI优化工作
- 对比过Mask和RectMask2D的CPU开销的不同吗?
- 说下这两种Mask的实现原理
- 你知道有哪些UIRebuild的Dirty类型?
- 你的UIRebuildLogger怎么处理UI名字相同的情况?
- 为什么不考虑直接在UGUI源码层做修改,直接在Dirty的时候记录整个堆栈?
- 技能CD变化导致的Rebuild应该怎么优化?
- UI合批判断是否重叠是以什么为标准?
- 假设现在需要你做个工具在编辑器下显示UI深度,你会怎么做?
- 这个工具假设现在已经有N个UI了,现在来了个新UI,要判断和N个UI是否重叠,你觉得它是个什么过程?算法时间复杂度是多少?
- 角色头顶血条Hud如何优化?
- 血条中的文字和图片能合成一个drawcall吗?
- 介绍下你做的资源管理框架
- 你的资源管理框架需要手动调用卸载接口吗?
- 怎么查出漏卸载的情况?
- 有做过一些资源层面的优化吗?比如图集的优化
- 向量a和向量b叉乘,得到的新向量是怎样的?
- 写C#时怎么样优化GC?
- 说下堆内存和栈内存的区别
- 你对自己职业规划是怎么样的?
- 最近有了解什么方向的技术吗?
- 了解哪些网络同步的方式?
- 平时会玩哪些游戏?
- C++有使用过吗?
通过,问的问题比tx一面好很多,会根据你的回答延伸出新问题出来
腾讯三面(2021.11.18)
讲下现在所做的工作
你在现在维护的项目主要做哪些东西?
你最擅长的部分都有哪些?
你觉得你本身的技术最适合哪些?
你做过哪些框架?
资源更新时是怎么做对比的?
资源清单信息里有些什么内容?
为什么对比的时候要用字节长度?
如果字节长度相同或者不同,你是怎么处理的?
资源清单通过什么去请求?
资源清单没请求下来你怎么处理?
不会做下载失败后的额外措施吗?
重试也失败怎么处理?
怎么保证资源清单文件下载下来是对的?
如何处理强更资源和非强更资源?
资源下载到一半退出游戏你怎么处理?
了解UnityWebRequest以外的其他断点续传的手段吗
你怎么确保Asset和Bundle已经卸载掉?
你只记录了资源和资源间的引用关系吗?
所有资源的引用计数是框架在维护?
在正确的成对调用了Load和Unload,有没有可能还出现了泄露的情况?
出现资源泄露了怎么去检测?
出现异常导致资源卸载失败怎么去检测?
还有做过其他框架吗?
最近业余有在学什么吗?
网络同步分哪几种?
未通过,感觉面试官并没有认真看简历,挺会挖细节的,不过提的有些问题并不适合电话面试,需要面对面画图和看代码才能讲明白
欢乐互娱一面(2022.09.13)
- 在每个项目组里承担的责任和做的东西
- 做了哪些UI优化?
- 为什么UI网格穿插会导致合批失败?
- 简历里的个人项目是开源项目吗?是空余时间自己写的吗?
- 讲一下CatLua大概是怎么实现的
- 讲一下Lua字节码指令那部分
- 除了UI方面和资源管理还有没有其他接触过的东西?比如渲染之类的?
- 讲一下你接触的渲染管线方面的东西
通过,整体流程比较短,感觉面试官也不太懂要问什么
无端一面(2022.09.14)
- 对项目代码的架构设计有了解吗?
- 换装方案里的部件有几个?
- 换装不同部位出现模型穿插是如何解决的?
- 项目的UI优化前后的性能指标有量化对比过吗?、
- ScrollView的Item你是怎么优化它的?
- 捏脸这块有了解吗?
- CatAsset有放到项目里验证过吗?
- 能整合到类似jenkins这样的集中工具里吗?
- Unity的Addressable有了解吗?
- 哪些地方觉得Addressable不好呢?
- 基于什么原因去做的CatJson?
- 有没有在实际项目中使用过?
- 有比较过和其他Json库在序列化后的大小区别吗?
- Json解析部分是怎么研究出来的?
- Unity上比较新的技术,比如dots,ecs,jobsystem有了解过吗?
- ecs的概念有了解过吗?比如e是什么,c是什么,s是什么?
- ecs依靠什么结构来降低cache miss?
- 紧密内存排布为什么能让cpu的cache miss降低?
- 了解常见的网络同步方式吗?
- TCP和UDP的区别了解吗?
- TCP和UDP的优缺点是什么?
- 渲染这一块有了解吗?有自己写过效果吗?
- 消融效果的实现思路是什么?
- 你做的项目里有印象比较深,让你觉得技术上有挑战的点吗?
- GPU Skin有了解过吗?
- GPU Instance有了解过吗?
- 做过AI吗?
- 行为树和状态机适合用在哪些地方?
- C#里的字典查找时间复杂度是多少?
通过,问的方向感觉还是比较广的
冰川一面(2022.09.14)
- 主要对哪一块比较熟悉?
- 最近项目主要负责内容是什么?
- 最近几年你觉得做的最复杂的功能是什么?
- 复杂点通过什么方式去细化和整理的呢?
- 能讲一下你的几个开源项目分别做了什么事情吗?
- 你的资源管理库有对比过同类型的库吗?
- 算法这一块有专门做练习吗?
- 动态规划了解过吗?
- 渲染这一块有了解过吗?
- 阴影是怎么生成的能讲一下吗?
- 编辑器有做过哪些?
- 性能优化做过什么?
- UI一般要做哪些性能排查?
- 有做过模型、场景、动画相关的东西吗?
- 业务这块有做过任务这种东西吗?
- 移动平台这块有负责过相关的东西吗?
- 有做过真机调试相关的吗?
- 真机崩溃的话一般怎么去做排查?
- 如果崩溃信息并不能提供给你太多信息的话,怎么去推进这个问题呢?
- 对于代码稳定性和开发效率这块有什么总结吗?
未通过,有几个问题问的太宽泛了,像个HR在问一样
勇仕一面(2022.09.15)
- 简单介绍下换装的机制
- UI性能优化做过哪些工作?
- UI的和Mask和Mask2D的原理是什么?
- 将Mask替换为Mask2D提升了什么?
- 移动端纹理压缩格式有几种?
- sRGB是什么意思?
- mipmap知道是什么意思?
- UI适合开mipmap吗?
- mipmap等级是怎么确定的?
- 分帧实例化会在表现上突兀吗?
- 怎么平衡图集和内存的关系?
- 在C#中将一个非常大的结构体作为参数传递,不使用ref,会发生什么?
- 装箱拆箱知道吗?
- 字典的key为结构体时要注意什么?
- 字典查找效率一定会很高吗?
- 简单介绍下Unity一帧所经过的流程
- FixedUpdate和Update的关系是什么?
- 动画的Update在什么时机执行?
- 你的资源管理库优势在哪里?
- 介绍下你这个的资源半自动卸载机制
- 用你的这套资源框架,如果把我加载的prefab的实例化物体全部销毁,然后调用UnloadUnusedAsset,会把prefab释放掉吗?
- 半自动卸载如果想要进一步升级为全自动卸载,你要怎么做?
- 介绍下AB的压缩格式有几种
- 为什么不能把所有资源打进一个AB里?
- 场景AB和普通AB为什么会被Unity区分开来?
- 资源冗余如何解决?
通过,待遇给的一般,而且加班严重,大概只有厦门本地人会去吧
DAN一面(2022.09.15)
- 讲讲你的CatLua
- 词法分析如何实现的?
- 词法分析后下一步做了什么?
- 如何处理嵌套语句?
- 如何保证解析下来是正确的?
- 编译阶段是如何处理的?
- 你在实现过Lua解释器后,认为Lua平常要注意哪些问题?
- 能讲下你实现了Lua的哪些高级特性吗?
- 你的Lua调用栈总大小会不断扩大吗?
- 你的Lua调用栈大小会受什么的影响变大?
- 你在公司里主要负责什么内容?
- 讲下你对性能优化的理解
- 讲讲你的编辑器工具开发
- 你这个组件绑定工具优势在哪里?
- 讲讲你对框架的理解
- 物理、渲染这些有涉及吗?
- 讲讲你的资源管理框架
- 你的资源包粒度是怎么划分?
通过,和HR聊入职时间的时候好像还挺急的
无端二面(2022.09.19)
- 为什么在游戏开发中需要使用到Lua?
- 基于Mono打出的APK可以通过替换DLL文件进行热更新,那么为什么还要用Lua?
- 为什么IOS平台只能用IL2CPP打包?
- C#方法参数中的ref和out关键字的作用是什么?
- 讲讲C#中引用类型和值类型之间的区别
- 讲讲Native内存和Managed内存间的区别
- Managed在进行垃圾回收后会马上还给操作系统吗?
- 在Managed内存和Native内存上可以做哪方面的优化?
- 讲讲Unity的垃圾回收算法的特点
- 如何在ScrollView中裁剪Item上用到的粒子特效?
- 模板缓存的运行机制是什么样的?
- 有写过一些Shader效果应用到项目中吗?
- 讲讲前向渲染和延迟渲染的区别
- 如果要你实现一个可靠的UDP,你会从哪些角度去考虑这个实现?
- 讲讲你对网络同步的了解
- 讲讲git和svn之间的区别
- git为什么切换分支很快?
- 在玩家数量很多的情况下如何维护一个前1000名玩家的排行榜?
- 哪些排序算法是基于分治思想的?
- 了解哪些寻路算法?
- 什么样的数据结构适合进行UI跳转/返回的管理?
未通过,整体难度感觉一般,HR反馈和岗位需求有点出入
欢乐互娱二面(2022.09.19)
介绍下你们项目Lua那边的UI框架是怎么样的?
- 讲讲你在UI优化中遇到的问题和解决方案
- 你们项目的UI的DrawCall上限定的多少?
- 整个游戏的DrawCall上限是多少?
- 捏脸系统你主要负责哪方面?
- 介绍下你那个GIF动图组件
- 你觉得自己优势主要在哪?
- 你对自己未来的职业发展方向是主要往哪个方向规划?
未通过,HR无反馈,面试流程和一面一样短
游卡一面(2022.09.20)
- 红点系统你的实现思路是什么?
- 红点的结构你是根据Transform层级结构来的,还是自己定义了数据结构维护?
- 你在Lua层实现的Timeline有涉及到对战斗的开发吗?
- 你在第一家公司学习到了哪些好的代码习惯或性能优化规范?
- 你在做换装项目时,觉得对你技术提升或了解最多的是哪部分?
- 换装项目里渲染技术或一些优化有学到的地方吗?
- 你有做过战斗相关的东西吗?
- 有做过什么样的工具?
- 你的GIF动图组件是如何实现的?
- 图集压缩算法有思路吗?
- 捏脸系统是改变Mesh的还是渲染出来的?
- 在工作经验中有没有对自己成长帮助最大的?
- MMO中的位置同步是怎么做的?
- 技能系统有设计过吗?
- 有做过带战斗的个人小游戏吗?
- 你的音游中下落的音符是录制的还是通过音乐去识别的?
- 歌词解析这块你是怎么实现的?
未通过,HR无反馈,感觉对方比较想招做过战斗的
英澈一面(2022.09.20)
- 做过哪些编辑器工具?
- 你的UI组件自动绑定工具是怎么去进行绑定的?
- 代码中要使用这个组件自动绑定工具所绑定UI组件是需要UI命名去遵守这个规则是吗?
- 你这个组件自动绑定工具生成的代码是C#文件还是Lua文件?
- 代码生成后程序去使用这个组件,是直接用另外命名的key还是这个组件对应对象的名称?
- 说说你做的资源管理库
- 你这个资源库的引用计数规则是怎样的?
- 你的引用计数能区别被依赖加载的资源和被程序直接用代码加载的资源吗?
- 能查到是哪个对象引用的吗?
- 被用代码加载的能查到吗?
- 你用Lua实现的Timeline支持了些什么东西?
- 接触过哪些Lua框架?
- ToLua的底层有看过吗?
- 有监控过Lua的内存泄露吗?
- UGUI的优化有了解吗?
- 职业规划是什么?
通过,面试官说话挺慢条斯理的,当天给的offer,效率挺高
米哈游一面(2022.09.22)
- 讲下C++的虚函数
- 虚函数的重定向是怎么实现的?
- 虚表在什么时候被创建的?
- 是每个对象创建的时候都有一份虚表吗?
- 是怎么在虚表中找到对应函数实现的?
- 在C++和C#中,struct和class的区别是什么?
- struct和class对应的存储空间是栈和堆吗?
- 在struct中定义class成员,struct的存储空间有什么变化吗?
- 栈和堆的区别是什么?
- 为什么栈用来存放生命周期短的数据?
- 为什么堆有垃圾回收机制,而栈没有?
- 堆为什么需要有垃圾回收来管理内存?
- 堆内存的GC是什么时候触发的?
- GC触发的时候做了哪些操作?
- .net C#的GC和Unity C#的GC有哪些不一样?
- struct的装箱和拆箱的性能消耗点在哪?
- 拆箱既然没有额外堆内存分配,那它可能的性能消耗点在哪?
- 讲一下Unity资源加载的方式
- 打一个Bundle一般需要经过哪些步骤?
- 资源的相互依赖关系如何处理?
- 冗余资源如何处理?
- 资源热更是怎么做的?
- 已经下载了一部分资源然后重新启动游戏后,是怎么让它只下载还没下载的另一部分资源?
- 在异步加载过程中,如果又发起了一个同步加载,此时如何处理?
- 资源的卸载怎么管理?
- mono和il2cpp的区别是什么?
- aot和jit的区别是什么?
- 怎么在IOS平台进行代码热更?
- 一个场景里有角色,有怪物,有可破坏物,角色可以丢炸弹炸怪物,你会怎么去设计?
- 对于怪物和可破坏物,你会抽象哪几种组件去实现它们?
- 怎么从UI层去控制角色的移动?
暂时未反馈,大概率是未通过,整体难度一般,不过一上来问C++虚函数倒是给我整懵了,感觉面试官是不看简历在问一些通用的基础问题