社招 Unity UE 游戏客户端面经
面试岗位:Unity客户端开发,UE4客户端开发工作经验:2年(只对2年经验左右的朋友有参考价值)
面试公司:网易雷火、吉比特、库洛、快手、祖龙、Funplus、竞技世界、莉莉丝、腾讯、叠纸等等等等等
关于简历参与项目:
[*]针对具体做的某个东西:你做的这个XXXX是为什么而做的呀?这个XXX如果遇到这样的使用场景,你会怎么去优化?
[*]针对负责的整个业务模块:整个这个XXX业务框架你是怎么去设计和搭建的?XXX业务功能具体怎么实现的?
[*]针对性能优化:这个XXX优化是具体做了什么?为什么做这个优化?优化后的效果怎么样?
开放性问题:
[*]你工作中遇到的最大的困难或者挑战是什么?怎么解决的?
[*]你对自己工作中做得最满意的是什么?
[*]你觉得在工作中带给自己最大的成长是什么?
[*]你觉得项目工作流中有哪些问题是可以再改进的?
[*]如果让你重新来做这个项目,并且可以决定技术方案,你会怎么做?
[*]你觉得你们的技术框架有哪些是可以改善的?
[*]你觉得你们的项目技术方案有哪些是值得复用的?
通用八股:
[*]项目UI框架是怎样的?具体某个框架功能是怎么实现的?
[*]项目网络同步怎样的?弱网环境怎么优化客户端表现的?状态同步与帧同步区别 ?为什么项目选择帧同步或者或者状态同步?
[*]ECS是怎么样的?ECS有什么优缺点?
[*]C#的GC、闭包、装拆箱、Dictionary怎么实现的等
[*]lua的闭包、GC、元表、协程、弱引用、table数据结构、table取长度添加删除数据怎么实现的等
[*]xlua如何实现C#与lua交互的?交互过程会产生GC的点有哪些?怎么优化?lua获取了C#对象后,怎么做GC管理的?
[*]UGUI合批规则?项目打图集的策略?如何减少UI的drawcall?
[*]Unity协程怎么实现的?unity加载一张纹理后,有哪些内存分配?
其他问题(就是对我而言,简历上没有,平时工作中也没有接触到的问题,然后就被问了,然后就G了):
[*]齐次坐标系是什么?干啥的?
[*]int 4个字节在内存中的分配?
[*]float的范围?float转为int后会丢失精度吗?
[*]大数的解决方案?
[*]lua的加密算法
[*]C#、lua、C++分别怎么查内存泄漏?
[*]C++的虚函数表相关( 应届生必考题····· )
因为没有实时记录每次面试的问题,只会一场面试结束后立马查漏补缺,所以到现在来写面经,只能写出还有印象的问题。
最开始面试的时候我其实心里很发虚,很怕哪个问题被问到沉默,很怕一个算法题直接让我大脑死机。面到后期的时候,自我介绍已经倒背如流了,问一样的问题的时候几乎答案也是一模一样了。算法题也基本能先暴力求出答案,再在面试官的引导下优化复杂度。被问到一个答不上的问题甚至很兴奋,心想又多学了一点儿,果不其然下次面试就又问到这个问题了。
我也不想面这么多,一天3、4轮面试真的很辛苦。我最开始的预想是死磕网易腾讯,这个项目组挂了就面下一个项目组,总不会腾讯网易加起来N个工作室全挂吧。结果,腾讯就VR的引擎开发给了面试机会(那真是10个问题,11个说不知道)。网易才面挂了一个项目,就已经处于其他几个offer要抉择的时间点了。
最后希望这篇啰嗦的杂文能给程序员打工人的你一点帮助。
QA:基于前篇文章网友们的评论
Q:有算法题吗? A:有,约么1/4。一般来说简历上可聊的越少,工作年限越少,问计算机基础,手写算法的可能性越大。
Q:面UE岗会问UE和C++吗? A:大概率不会,因为开局面试官就是知道你是Unity开发的,而且unity转ue的人也挺多的。
Q:2年大概是什么水平? A:这个只能就我自己而言,我也不清楚别的两年经验是啥层次了,吊锤我的人一抓一大把。反正我是在项目组里除了渲染层面的业务开发基本都能做(当前不会也能快速上手),无论是战斗的还是系统的,然后优化方向也能通过自己的学习和研究去切入然后完成。能看懂部分Unity、lua、C#的源码,能看懂项目组别人写的代码。计算机基础还行(并不是说面试某问题答不出来就是基础拉了)。也写过工具,写过轻量级的框架,以前也组小团队发布过几十MB的游戏。
Q:当前环境怎么样? A:7、8月的环境是真差,因为最近腾讯字节裁了很多很多很多人,所以市场上有很多人在流动,所以竞争压力就很大。 库洛吗?unreal的客户端?我也去面过。只能说它们的技术官的cpp水平……。你问问你老大知不知道deque这种东西的实现是起码需要两个以上的数组,底层采用稀疏集的方式实现的[大笑]
页:
[1]