原文:科韵路游戏客户端裸辞后半年近况(附面经) - 知乎 (zhihu.com)


第四家公司

科韵路园区,小型公司,人数25人左右,内部环境干净,密度相对可以。

目前还没有了解薪资待遇以及公司福利相关问题

笔试题+填表

1、在循环中遍历删除一个字典的值以及通过索引器直接对字典进行赋值会出问题吗?

2、从1、2、3、4、5中选取4个数字做组合,并输出所有对应的组合。

3、什么是装箱拆箱,什么情况下会导致装箱拆箱?

4、mmo的状态同步是如何实现的?

5、如何优化游戏内存?

6、draw call和set pass call的区别是什么?如何优化?

技术面

1、自我介绍。

2、离职原因。

3、之前一直在做unity吗?用的c#还是lua?主要用什么语言?

4、如果我要在Dictionary中进行删除该怎么做?

5、直接通过索引器进行赋值dict的键值会出现问题吗?

6、什么是值类型,都有哪些,字符串是值类型吗?结构体呢?枚举呢?放在堆还是栈。

7、拆箱过程的堆栈操作是怎么做的?为什么要避免装箱拆箱?装箱拆箱主要性能消耗在哪个?

8、jpg和png的格式有什么区别?他们在显存上有没有差别?

9、主要做什么功能比较多?

10、介绍一下红点系统。

11、如何显示3d模型到ui界面?

12、lua中的local作用域是哪里?

13、lua的.和:的区别是什么?

14、lua的table的list的索引从几开始?

15、重复的活动模板的设计思路

16、fgui和ugui都使用吗?业务逻辑的mvc是怎么设计的?怎么处理界面的网络协议?

17、ui的释放时机

问的题目不算太难,比较基础实际,就是提问的时候可能会挖坑,会听到有很多和实际情况有出入的纠正,但我的做法是坚持了自己的观点,因为我有去做过。

简历上列举的技术点基本上没怎么问。面试官整体上挺不错,会引导你回答,并讲述原理。

反馈+感受

说下周一给答复,结果没有,周三去问,说太忙忘记了,没给原因就挂面试了,还说可以推荐给其他公司。

问了下原因之后,主城对我印象不错,并且也有一定的认可。被薪资要求更低的卷批抢走机会了…可你jd上明明标的是18k起!我只是要12k诶!

但说实话也不能怪人家,毕竟你也不会多掏钱去买性能过剩的cpu/显卡吧?能用就行。双向选择,嗯,就是这样。

第五家公司 offer

规模大约40人,在科韵路那边好像。

九九双休,项目赶的时候会加班,周末加班调休,加班晚第二天和晚来,且有打车补助

业务代码使用lua,双端开发,前端unity、c#、ts,后端c++、ts,项目流程比较规范。

卡牌类,带rpg的回合制战斗,有slg要素。风格偏向古风。不算业绩。

每个版本都有时间节点,程序那块比较安静,项目节奏不紧不松。

策划发布需求需要通过主策审核,然后给主城审核,然后再发布到对应的负责人。

项目使用fgui,界面由美术进行拼接,系统界面需求前会提供界面白版。

美术小改动可直接在原组件改动,改动较大必须新建组件另外改动。

整体感觉对策划和美术要求比较高,不能不带脑子写需求以及乱改界面。

内部环境比较清爽,人员密度适宜,若描述属实,撇开工作时间是个好地方。毕竟项目会一直在赶。

hr面

问离职原因,负责什么工作内容,前司的情况,交代项目组情况,印象最深的需求,交代公司工作情况等…

技术面

1、自我介绍

2、c#和lua哪个用得多,掌握的程度怎么样?

3、c#接口与抽象类的相似点是什么?区别呢?

4、接口可以定义字段之类的属性吗?

5、结构体与类的区别?结构体存在什么内存区,类呢?

6、ref、in和out的作用是什么?ref与out的区别是什么?

7、c#中,委托是个什么样的概念?

8、c#当中的协程是什么?与平时上写的代码有什么流程上的区别?

9、lua遍历一个table有哪几种方式?iparis和paris区别是什么?

10、lua如何实现面向对象编程?

11、lua当中的闭包是一个什么样的概念?

12、lua当中的弱表是什么?怎么样开启?

13、描述一下lua的垃圾回收?

14、对c++有了解吗?

15、主要在引擎组做过什么事情?

16、怎么优化ab包的加载,让它在内存和性能上取得一个比较好的表现?

17、内存中的资源是一个怎么样的保存策略?

18、了解资源热更新的技术吗?描述一下其过程。

19、项目中lua包的分包策略。

20、如何判断一个资源是否需要更新?

21、假如玩家错过了几个版本,该如何更新到最新的版本?

22、简单介绍一下你写的技能编辑器的技术以及服务的具体游戏类型和实现细节。

23、战斗后端会走验证逻辑吗?

24、了解图形学吗?写过shader吗?扭曲的实现原理是什么?

25、了解过什么寻路算法?介绍一下a星算法和势能寻路,它俩区别是什么?

26、业务逻辑方面都参与过什么?

27、前端如何实时展示一个特别大的排行榜?后端该怎么实现这个排行榜的快速排行?

28、堆排序的流程是什么样的?

29、接触过服务端开发吗?对双端有兴趣吗?了解过js语言吗?

30、离开原公司的原因是什么?

技术总监面

1、自我介绍。

2、项目用到了ecs吗?它对性能有多少提升?为什么ecs会对性能带来提升?

3、介绍一下gpu skin和gpu instance。

4、什么情况下使用状态机,什么时候使用行为树?

5、帧同步如何解决外挂的问题?

6、如何对lua进行调试?如何分析lua的性能?profiler的工作原理是什么?

7、客户端的协议加密解密的做法是什么?

8、客户端的网络是怎么实现的?

9、tcp的粘包问题该怎么解决?

10、个人发展方向规划?

11、slg的视野同步是怎么做的?发协议的时机的策略是什么?

12、有看什么书或者是教学吗?

13、期望薪资?最低的要求?

整体上面试感觉还挺不错,面试官会引导提问,往深度的那一方向走。感觉三位都比较平易近人。

问得比较多,口干得要死,讲话都含糊了。

答复

时间答复比较快,基本上昨晚面的今天就有答复,被面试官告知是众多候选人中技术相当了得,专业性比较强。(虽然不知道是不是每个人都这么说,但听到的时候还是有点飘了,很高兴。)

重复讲述了一下工作流程,以及工作时间,以及项目组的情况,以及一些要求(主要是工作内容上的,提到了要求较为严格),业务占八成,剩下的主要是主城根据成员的能力水平,

决定让他们对某些方面的技术进行攻坚。在工作内容上派单可能时间会比较紧凑,在无法完成前必须报告问题。

最后提到了薪资问题,虽然说这个是最后谈的,不过还是给我透露了薪资情况,并告知我有两天的思考时间,在下周一早前可以通知她。

试用11k,转正13k,试用期三个月,我怀疑我听错了,但好像也不是很意外。如果我真的缺钱用,并且愿意将自己绝大部分的时间都投入到工作中的话,这个我还是会收下的。

感受

虽然说他的母公司有很多丑闻,但和这个公司相处下来感觉应该是一个十分不错的地方。

*第六家公司

公司挺大的,装修还算不错,在一个十分巨大的园区。在鱼珠那边。

一楼是一个十分大的展厅,有冰柜,二楼是办公区域,前台那边有等待室以及面试的地方。

因此没法进去看看工作环境怎么样,但应该不差。

在面试表现上个人认为挺差的,没能把个人的优势表现出来,很吃亏,估计凉透了。

技术面

1、问项目经历以及负责内容。

2、技术挑战最大的内容是什么?

3、技能编辑器对项目类型有什么要求吗?支持什么样的技能?什么项目使用了?

4、吸血鬼幸存者的性能痛点在哪方面?

5、框架内封装的Transform的同步时机。

6、轻量碰撞库的实现细节。

7、协议工具库都提供了什么。

8、首包优化方面?

9、什么是势能寻路?

10、重写的fgui的包异步加载流程是怎么做的?有没有评估效率差?

11、网络协议加密解密的方案?

12、做过什么游戏的插件和mod?都增加了什么功能?使用的语言是什么?

13、ecs做过的尝试是什么?碰撞哈希桶是怎么做的?怪物的重叠解决方案?

14、技术发展规划?除了gp那块还对哪方面比较感兴趣?

15、gpu instance gpu skin

16、使用chatgpt做过什么尝试?

17、你还有什么要问吗?

抓了项目里很多宽泛的内容深问了,虽然我都做过,但一时半会答不出来…

当然也和我没准备这方面的内容也有关,问的问题都比较实际,不问八股,也不问什么乱七八糟的问题。

我反而答不好了…不应该…总之这一次的面试经验还是挺珍贵的。

hr面

和其他公司一样的流程,然后还问了为什么觉得 fps 和 arpg 这种很有趣的问题…

*第七家公司(网面)

不在广州

网面,在过去有技术交流会,在策划提单流程算还算比较规范。

面试感觉发挥不是很好,不是很能表现出自己的优势,凉透了。

技术面

1、animator的update三个选项的作用

2、还记得unity mono的生命周期吗?

3、结构体一般用法以及注意事项?

4、结构体Vector3比较相等是怎么做的?

5、结构体作为字典key的时候的注意事项?如何避免作为key的装箱?

6、元表元方法__index的用途及过程?

7、图集的作用?

8、合批的条件?

9、网格重建的原因、单位以及过程?

10、介绍技能编辑器。

11、ECS中搜集含有指定组件的实体的过程?

12、决定一个相机在空间中的方位需要几个参数确定?

13、openGL渲染管线的流程有几步?

14、讲一下a*?

15、两条线段的交点的计算方式?

16、扇形和圆形相交的算法?

17、简述一下状态同步以及帧同步?

18、知道随机数算法吗?

19、帧同步除了浮点数和随机数导致不同步,还有其他情况吗?

20、正儿八经的游戏逻辑里面,可能会导致不同步?

21、讲一下势能寻路?

22、如何确定一个点在哪个三角网格内?

23、六边形的坐标系是怎么建的?

24、使用profiler做过什么优化?

25、有了解过framedebugger吗?

26、有没有做过粒子相关的合批?

27、gameplay负责哪一块?

28、系统逻辑负责哪一块?

29、资源管理负责过吗?是怎么样的?

30、打包ab的粒度?文件很多时的搜索效率?

31、ab卸载的unload函数的区别?如果没有成功卸载该怎么管理?

32、protobuf的gc是怎么处理的?

33、优化首包流程指哪方面?

34、充值那一块对接比较困难的地方怎么解决的?

35、迷雾算法的实现?

36、判断点在六边形内怎么判断?

37、判断点在三角形内该怎么判断?

38、你有什么想问的…不对,有做过3c吗?

39、虚拟相机的过渡是怎么样过渡的?规则是什么?

40、角色相机的锁定敌人是怎么做的?

41、同事的代码质量不咋滴你怎么办?

42、如何设计实现buff?

43、角色的属性是怎么设计的?

44、角色的表现状态属性是怎么设计的?如无敌状态。

45、有相同优先级的布尔修改器吗?无敌buff的设计思路?

46、还有什么想问的吗?

感受

没有自我介绍环节,整体上面试官比较友好,并且也比较耐心。基本上不问八股,会在简历里深挖。

同时也暴露出我的一个比较大的问题,算法基础不牢固,并且没太去巩固自己做过学过的东西。

大部分题目没有答出来,个人认为应该凉透了,再一次意识到自身实力差距以及知识转化效率的问题。