金山集团星辰训练营—游戏客户端—暑期实习—面经

24届,双非本科,暑期实习

5.16 邮箱投递简历

5.18 简历过

5.20 笔试过 比较基础,80分钟

5.29 HR面 聊聊天,介绍一下公司和训练营,20分钟

6.05(上午) 技术面 训练营做虚幻的,但我本身是做Unity,所以传统的C++八股文比较少,主要涉及C++/C#/操作系统/网络/设计题,面试官很和蔼,答不上来的题会给出答案。 60分钟

6.05(下午) HR OC + Offer

总的来说,流程非常丝滑,体验很棒!

技术面面经

1. C++虚函数

2. C++和C#区别和优势

3. C++和C#的编译流程

4. C#的虚拟机

5. C#的内存管理 GC

6. 其他的垃圾回收算法

7. C#中的协程

8. 协程和线程

9. C#的值类型和引用类型

10. C#怎么把一个值类型转换为引用类型

11. C#委托

12. C#Lambda表达式?性能?

13. C#反射?Unity中的反射怎么使用?反射的其它应用场景

14. C#Winform窗体?

15. Unity的Playerprefs的使用和原理?

16. Xml和Json的区别和优点?

17. protobuf?

18. 设计题:设计一个存储系统(类似Playerprefs)?对外提供哪些接口?用户需要关心数据存储在内存还是硬盘?如何在游戏崩溃的情况下尽可能保存数据?

19. C#容器?C++容器?

20. 哈希表?内存占用怎么样?

21. 结构体内存对齐的问题?一个结构体里有(1char 1short 1int)

22. new申请的内存是放在内存的哪个区?在内存上是否连续?

23. 堆和栈?

24. 怎么避免内存碎片?

25. 设计题:优化一个对象池?池中对象的淘汰策略和淘汰时间?

26. HTTP?访问本地网路/远端网络需要经过网卡吗?服务器可以主动给你HTTP报文吗?

27. Socket?

28. CPU存储数据的硬件结构?

29. MVC?

30. Unity项目如何做的?如何学习?

31. Unity中的异步加载?单核CPU能开协程吗?

32. 如何看待游戏引擎?有接触过别的引擎吗?

写在最后:

如果想做游戏客户端,准备参加校招、暑期实习...的朋友,一定要准备好算法题,投了很多份暑期实习,总是因为笔试被刷(默默吐糟一句,笔试题真的好难啊,难度大概比肩leetcode周赛吧,之前也没专门学过,费劲学了几个月只能应付面试题)。然后即使做Unity的朋友,也好好学一下C++,一方面有些面试官喜欢考C++的题目,另一方面如果有虚幻的岗位你也可以去争取一下。

以上,24届艰难的春招路,暂告一段落,好在抓住了这最后的一根稻草,真的很不容易,很感谢金山给我这个机会,也感谢各路网友的分享应聘的经验,希望在游戏开发的道路上继续前进吧!

#晒一晒我的offer#
全部评论

相关推荐

1. 在网络游戏中,你是如何实现网络对战的?具体使用了哪种网络协议?能否详细说明一下你的实现方式?2. 你是否有在大学课程中学过TCP和HTTP网络连接的知识?能否举例说明这些协议在实际项目中的应用?3. 在你的游戏项目中,你使用的是帧同步还是状态同步?这两种同步方式有什么区别和优缺点?4. 你是如何实现游戏的实时同步的?能否详细说明一下同步的间隔和帧同步的具体实现方法?5. 你对帧同步和状态同步这两种同步方式有什么理解?能否详细解释一下它们的原理和应用场景?6. 你是否有学习过UDP和TCP协议的底层通信逻辑?能否详细说明一下这两种协议的通信机制?7. 在你的游戏项目中,服务端是自己编写的还是选择的现成方案?能否详细说明一下服务端的实现过程?8. 你使用什么语言和架构来实现服务端?能否详细说明一下服务端的设计和实现细节?9. 你使用的是哪个版本的Lua?你对Unity引擎的了解程度如何?能否详细说明一下你的使用经验和心得?10. 你对Unity资源机制和AB包文件结构的了解程度如何?能否详细说明一下Unity的资源管理和优化方法?11. 在你的游戏项目中,你是如何设计和实现网络通信的?能否详细说明一下你的设计思路和实现方法?12. 你是否有学习过计算机网络相关的知识?能否举例说明一下这些知识在游戏开发中的应用?13. 在你的游戏项目中,你是如何实现服务端和客户端之间的数据同步的?能否详细说明一下同步机制和优化方法?14. 你对Unity引擎中的资源加载和优化有什么了解?能否详细说明一下Unity的资源管理机制和优化技巧?15. 在你的游戏项目中,你是如何实现多人在线对战的?能否详细说明一下你的实现方案和遇到的挑战?
查看15道真题和解析
点赞 评论 收藏
分享
1. Unity中`Update`、`FixedUpdate`、`LateUpdate`区别?实际开发中,比如处理角色移动和物理碰撞,你会分别把逻辑放在哪个函数里?能结合实习项目举例说明吗?2. 你提到用值类型减少GC以优化性能,那在“模拟农场”demo中,具体哪些数据被你封装成了值类型?这么做后,性能(如帧率)有哪些具体提升?3. 设计射击游戏网络同步时,你提到同步玩家状态和位置,但子弹运动是实时的,仅同步状态可能导致其他客户端子弹位置“跳变”。除了状态同步,有没有考虑过用“插值”或“预测”技术优化同步效果?4. 你在实习中接触过ET框架,了解它的核心架构(如Actor模型、消息机制)吗?在基于ET框架开发UI模块时,你是如何处理模块间通信的?比如技能面板和背包面板的数据交互。5. 你说对象池用于频繁创建的对象,那在实现对象池时,你是如何处理“对象回收时的状态重置”?比如子弹对象回收后,是否会清除它的碰撞状态、速度等参数,避免下次复用出错?6. 学习图形学渲染流程后,你有没有尝试在Unity中自定义Shader?比如为“模拟农场”的作物添加动态光照效果,具体是怎么实现的?7. 你提到DoTween通过扩展方法实现功能,那你自己有没有封装过Unity组件的扩展方法?比如给`Transform`加一个“平滑移动到目标位置”的扩展方法,核心逻辑是什么?8. 关于公司的Roblox引擎学习期,你之前用的是Unity,两者在开发逻辑(如场景管理、脚本编写)上有差异,你打算通过什么方式快速掌握Roblox Studio的开发技巧?9. 你在实习中主发现问题后,是先和美术确认资源正确性,还是先和策划确认需求?整个沟通和解决流程是怎样的?10. 你提到期末兼顾考试和找实习时会做时间管理,具体是怎么分配时间的?比如每天花多久刷算法、多久学Unity技术、多久复习课程,这种时间管理方法对入职后的工作有帮助吗?
查看10道真题和解析
点赞 评论 收藏
分享
后端开发实习生 - 技术一面(oc已拒)面试问题速览1. 自我介绍一下。2. 大学课程和专业背景是什么?3. 为什么在学习了C++之后,选择Java和Python作为主攻方向?4. 你的学习方法是怎样的?如何保证学习的系统性?5. 具体谈谈你是如何学习Java的?6. 详细介绍一下你的AI Agent项目,它是如何实现的?7. 你使用的Spring AI框架和常见的开源基座有什么区别?8. 你的知识库是如何构建的?为什么选择自定义数据处理流程?9. 如果需要开发一个能扮演特定游戏角色的定制化Agent,你会如何设计?10. 在这个定制化Agent项目中,数据的重要性如何?如何获取和处理这些数据?11. Docker和K8s有什么区别?12. 微服务架构和单体架构的区别与优势是什么?13. 如何设计一个高并发系统的架构?14. 常见的负载均衡算法有哪些?15. Java中遇到死锁该如何分析和解决?16. 如何处理前端的跨域问题?17. MySQL查询性能如何优化?18. 你对前端技术了解多少?我的回答策略与核心亮点针对问题:开场自我介绍,展示个人技术全貌回答策略/框架:我采用了“技术栈 → 项目经验 → 学习理念 → 全栈能力”的结构化叙述方式,旨在快速建立一个技术扎实、有实践、爱钻研的立体形象。核心案例与亮点:项目经验具体化:通过“库存管理系统”引出性能优化能力(ES提升检索、RocketMQ削峰、Redis缓存热点)。突出前沿技术:通过“智慧农业项目”展示AI应用开发能力(Spring AI, RAG问答引擎),并用“大创国家级”奖项来量化成果。展现学习深度:主动提及学习MIT课程并实现Raft算法,强调自己对底层原理的追求和强大的自驱力。针对问题:考察学习能力、技术视野和决策逻辑回答策略/框架:我提出了一个“实践驱动”的学习模型:“先概览框架 → 快速上手实战 → 深入底层查漏补缺”。对于技术选型问题,我从“场景适用性”(如C++底层 vs. Java业务)和“技术趋势”(如Python for AI)两个维度进行阐述,展示了我的决策逻辑。核心案例与亮点:这个回答的亮点不在于某个具体案例,而在于其方法论本身。它向面试官清晰地传递了我的核心优势:拥有高效、系统化的自学能力,能够快速掌握并应用新技术,同时具备清晰的技术判断力。针对问题:深入考察AI应用项目的技术实现细节和原理理解回答策略/框架:我采用了“What-How-Why”的解释框架。What:这是一个基于Spring AI的RAG Agent。How:通过添加外部知识库、使用Redis持久化对话记忆等方式实现。Why:着重解释了为何自定义数据处理流程(PDF转Markdown、语义分块、向量化),而不是直接使用框架自带功能。核心案例与亮点:本环节最大的亮点在于对“PDF按页切分会破坏语义完整性,从而影响检索精度”这一细节的深入分析。这不仅展示了我对RAG原理的深刻理解,更体现了我在工程实践中追求细节、主动优化、解决问题的能力。此外,在回答定制化Agent问题时,我提出了从提示工程 → RAG → 模型微调 (LoRA) 的分层解决方案,展现了全面的技术视野和对成本效益的考量。针对问题:考察后端核心架构与概念(分布式、高并发、数据库等)回答策略/框架:对于架构设计类问题(如高并发),我采用“多维度拆解法”,从多级缓存、熔断机制、高可用架构(主从/集群)等多个角度系统性地展开。对于概念类问题(如死锁),我采用“原理+解决方案”的模式,先清晰阐述其形成的四个必要条件,再讲解如何通过破坏其中条件来解决。核心案例与亮点:回答的系统性和深度是关键。例如,在谈论负载均衡时,不仅能罗列出轮询、哈希等算法,还能进一步分析“最少连接/空闲实例算法”相比于简单轮询的优势,这体现了对技术背后原理的深入思考,而非简单背诵。针对问题:考察技术广度和知识边界(前端/容器)回答策略/框架:对于熟悉的部分(前端跨域),同样采用“原理+解决方案”模式,并提供了前端(反向代理)和后端(CORS配置)两种维度的解法,展示了全栈视野。对于不熟悉的部分(K8s),采取“诚实承认+阐述已知基础”的策略,先表明自己主要使用Docker Compose,然后从理论层面尽力对比二者。核心案例与亮点:对跨域问题的双端解决方案是加分项。同时,坦诚自己对K8s实践经验不足,并尝试进行理论分析,展现了诚实和积极思考的态度。这也提醒大家,面试中遇到知识盲区,诚实是最好的策略,如果能补充一些理论理解会更好。
查看18道真题和解析
点赞 评论 收藏
分享
评论
4
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务