游戏客户端开发一面面经
完整信息
本篇目录
#秋招面试记录#面试官刚进入面试间,打开摄像头,露出神秘微笑,然后说——
面试官:我对你的项目和技术栈经历都非常地感兴趣
我:???吓哭了
9.17游戏客户端开发一面
1.自我介绍
2.你做这些项目的初衷是什么?说说你的项目中你觉得做得不错、做得有意思的地方?(答了一些手感上的优化)
3.你做的这些手感上的优化,是基于某些需求还是自己的体感还是教程?
4.说说你在项目中解决了哪些问题?(答了解决时序问题和npc行为抽搐问题)
5.关于你提到的npc行为抽搐的问题,你可以详细说说这涉及了哪些引擎的机制吗?这些机制的原理是什么?
6.状态机是什么?你认为行为树和状态机有什么关系?
7.能不能详细说明一下你的chase行为中开火任务节点的具体逻辑?
8.你能不能用通用的状态机模型去解释你设计的行为树节点间的切换关系?
9.你之前说换弹期间task节点持续返回in progress来避免抽搐,那么抛开这个行为树机制,让你基于通用状态机去写的话怎么实现呢?
10.如果npc换弹期间可能有投掷物飞来,我想要让它主动躲避,基于行为树或者状态机怎么实现?条件和状态怎么设计?
11.假如说飞来的是个大石头,需要全身躲避;飞来的是个小石头,只需要歪个头。这种情况下换弹期间的状态机怎么设计比较好?
12.如果现在状态非常多、很难管理,你认为怎么构建整个行为系统比较好呢?是继续用行为树还是设计别的数据结构?具体怎么做?
13.你提到用一张配置表,具体的字段和内容怎么设计?针对刚刚提到的那些状态和功能,你在配置表中会怎么配置?
14.有没有考虑过对状态进行分层?如果想做状态分层,你在配置表中具体怎么设计?基于前面提到的状态和功能举个例子。(不会)
15.你之前提到行为树中出现低优先级任务被打断并重新执行到高优先级任务的情况,那么在配置表中这种打断机制怎么设计?
16.你认为你在学习、工作或生活中做得比较好的事情是什么?
17.你在学校课程中学得比较好的是哪几门?你比较喜欢的是哪一门?(OS和数据结构)
18.操作系统这门课程你觉得它的核心或者比较有用的部分是什么?把它们对应到游戏开发的场景中能起什么作用?(说了进程线程、内存管理)
19.你提到线程和进程,、那具体说说你对于游戏开发中如何使用线程的理解?(这里简单说了一下UE的线程模型)
20.你对游戏开发场景下内存的使用有什么理解吗?(说了下对象池,其实我也不太熟)
21.你觉得为什么要设计对象池?(说了频繁申请/释放内存和创建/销毁对象有开销)
22.为什么申请/释放内存和创建/销毁对象有开销?(说了查找、合并、排序空闲块)
23.new/delete和malloc/free有什么区别?(多了构造和析构)
24.详细说说malloc到底是怎么管理内存的?
25.你认为malloc为什么会对某些空闲块排序?缺点和优点是什么?(说了大内存排序)
26.空闲块排序的操作是由独立的进程或线程去执行的吗?这是OS自己负责的。为什么会拖慢用户程序对内存的申请?
27.你理解用户态和内核态有什么区别吗?上述的内存管理是基于用户态还是内核态?
28.你对于malloc的理解还有哪些要补充的吗?(无)
29.你最近觉得自己比较努力做并且做出成果的事情是?(写博客)
30.能说下你是怎么写博客的吗?这个过程给你的收获是什么?
31.你在哪些场景下会使用ai?(学习、编码、项目复盘)
32.了解AGENT.md吗?有写过一些东西进去吗?
33.你从什么时候开始接触大模型的?你自己手写过哪些项目呢?
34.你主要用过哪些模型?你觉得它们各自的特点是什么?(gpt、deek、豆包)
35.gpt从5到6的过程中你的使用体验有了哪些变化?
36.为什么不使用UE MCP去写蓝图?(没api key)
37.学校里有没有教导ai项目和提供ai资源?
38.gpt有幻觉吗?你写代码时如何判断模型出现了幻觉?你怎么纠正的?
39.你觉得你用ai相对于身边人是多还是少?你身边有其他经常用ai的人吗?有没有和他们交流一下ai的使用方法?
40.你在上一段实习中怎么使用ai开发需求的?如果现在让你重回那段实习,你会如何利用ai快速上手?
面试官诚不欺我,特别热情,特别对我感兴趣,一个小时直接问了致死量问题,而且啥内容都涉及。。。前面一直揪着状态机问,问到一半已经开始听不懂他在问什么,他也听不懂我在答什么了,纯胡言乱语[围笑]而且一开始还会礼貌性打断我回答,因为他说面试时间比较紧张(原来预计面半个小时),后面直接问嗨了,不仅不打断我,而且是想到啥问啥,有点十万个为什么的感觉[切][切]后面反问环节他也是非常殷切地问我还有什么想了解的,给我回答的时候也是长篇大论的,感觉非常健谈[笑cry][笑cry]
虽然面试官非常热情,但我整体其实答得非常一般,不知道有没有过的希望[叹息]
本篇目录
当前问题0141
- 01
自我介绍
- 02
你做这些项目的初衷是什么?
- 03
说说你的项目中你觉得做得不错、做得有意思的地方?
- 04
你做的这些手感上的优化,是基于某些需求还是自己的体感还是教程?
- 05
说说你在项目中解决了哪些问题?
- 06
关于你提到的npc行为抽搐的问题,你可以详细说说这涉及了哪些引擎的机制吗?这些机制的原理是什么?
- 07
状态机是什么?你认为行为树和状态机有什么关系?
- 08
能不能详细说明一下你的chase行为中开火任务节点的具体逻辑?
- 09
你能不能用通用的状态机模型去解释你设计的行为树节点间的切换关系?
- 10
你之前说换弹期间task节点持续返回in progress来避免抽搐,那么抛开这个行为树机制,让你基于通用状态机去写的话怎么实现呢?
- 11
如果npc换弹期间可能有投掷物飞来,我想要让它主动躲避,基于行为树或者状态机怎么实现?条件和状态怎么设计?
- 12
假如说飞来的是个大石头,需要全身躲避;飞来的是个小石头,只需要歪个头。这种情况下换弹期间的状态机怎么设计比较好?
- 13
如果现在状态非常多、很难管理,你认为怎么构建整个行为系统比较好呢?是继续用行为树还是设计别的数据结构?具体怎么做?
- 14
你提到用一张配置表,具体的字段和内容怎么设计?针对刚刚提到的那些状态和功能,你在配置表中会怎么配置?
- 15
有没有考虑过对状态进行分层?如果想做状态分层,你在配置表中具体怎么设计?基于前面提到的状态和功能举个例子。
- 16
你之前提到行为树中出现低优先级任务被打断并重新执行到高优先级任务的情况,那么在配置表中这种打断机制怎么设计?
- 17
你认为你在学习、工作或生活中做得比较好的事情是什么?
- 18
你在学校课程中学得比较好的是哪几门?你比较喜欢的是哪一门?
- 19
操作系统这门课程你觉得它的核心或者比较有用的部分是什么?把它们对应到游戏开发的场景中能起什么作用?
- 20
你提到线程和进程,、那具体说说你对于游戏开发中如何使用线程的理解?
- 21
你对游戏开发场景下内存的使用有什么理解吗?
- 22
你觉得为什么要设计对象池?
- 23
为什么申请/释放内存和创建/销毁对象有开销?
- 24
new/delete和malloc/free有什么区别?
- 25
详细说说malloc到底是怎么管理内存的?
- 26
你认为malloc为什么会对某些空闲块排序?缺点和优点是什么?
- 27
空闲块排序的操作是由独立的进程或线程去执行的吗?这是OS自己负责的。为什么会拖慢用户程序对内存的申请?
- 28
你理解用户态和内核态有什么区别吗?上述的内存管理是基于用户态还是内核态?
- 29
你对于malloc的理解还有哪些要补充的吗?
- 30
你最近觉得自己比较努力做并且做出成果的事情是?
- 31
能说下你是怎么写博客的吗?这个过程给你的收获是什么?
- 32
你在哪些场景下会使用ai?
- 33
了解AGENT.md吗?有写过一些东西进去吗?
- 34
你从什么时候开始接触大模型的?你自己手写过哪些项目呢?
- 35
你主要用过哪些模型?你觉得它们各自的特点是什么?
- 36
`gpt`从5到6的过程中你的使用体验有了哪些变化?
- 37
为什么不使用UE MCP去写蓝图?
- 38
学校里有没有教导ai项目和提供ai资源?
- 39
`gpt`有幻觉吗?你写代码时如何判断模型出现了幻觉?你怎么纠正的?
- 40
你觉得你用ai相对于身边人是多还是少?你身边有其他经常用ai的人吗?有没有和他们交流一下ai的使用方法?
- 41
你在上一段实习中怎么使用ai开发需求的?如果现在让你重回那段实习,你会如何利用ai快速上手?