【游戏开发面经1】游戏客户端开发岗(阿里 | 游戏 | 凉面面经)

转载自【林新发】  本文只是用来分享,如有不妥,请联系删除。

文章目录

一、前言

嗨,大家好,我是新发。
我最近在看工作机会,投了阿里,游戏客户端开发岗,收到面试通知,总共三轮面试。
从约一面到最终得知结果,时间跨度23天,平常心,做一次总结,希望可以给大家一些参考。

二、流程
1、简历
2021年11月23日早,我在某直聘上看到阿里游戏客户端开发的招聘信息,看了下职位要求,

[职位要求]
1 本科以上学历,两年以上工作经验
2 能独立承担复杂系统开发,熟练把各种设计模式和算法运用到工作中,掌握一两门脚本语言(lua / python)的使用
3 具备一定的图形学基本知识,有U3D等常见游戏引擎的使用经验
4 有游戏性能优化经验和游戏框架搭建经验的优先考虑
5 热爱游戏,沟通能力强,抗压能力好,有团队合作精神,保持技术好奇心

挺符合自身条件的,于是投了简历,以下是我的简历格式(简约为主)

HR收到简历后打电话过来问了一些基本情况,电话中聊了项目内容、游戏经历、薪酬等,沟通过程比较轻松,初步感觉可以。
接着就是把简历递交给业务做评估,当天下午三点半左右收到了答复,通过了业务评估,

HR约了一面面试时间,发了正式邮件,面试方式是视频面试,要先安装阿里会议。

注:建议提前测试一下电脑摄像头和麦克风,特别是麦克风要确保拾音功能稳定,不然声音忽大忽小对面试过程体验不好。

2、一面,技术面
面试时间:2021年11月29日 19:30
持续时间:75分钟
面试方式:视频面试

一面的面试官是客户端主程,长得跟我以前的同事有点像,沟通上也挺舒适,平易近人。
以下是面试中的部分提问(凭记忆回想)。

2.1、技术题
1、水面波浪起伏的效果是如何实现的?波光粼粼的效果又是如何实现的?
2、静态合批与动态合批的原理是什么?有什么限制条件?为什么?对CPU和GPU产生的影响分别是什么?
3、一个正方体多少个顶点和三角形,为什么?如何合并顶点?
4、什么是DrawCall,如何减少DrawCall?
5、资源生命周期如何管理?如何加载与释放资源?资源打包颗粒是怎么设计的?资源压缩格式是什么?
6、一个相机中如何做分层渲染?底层原理是什么?
7、渲染管线的流程,后处理泛光效果如何实现?
8、项目中热更新流程是怎样的?热更包颗粒如何设计?资源如何加密?协议如何加密?
9、如何实现物体被墙遮蔽后显示轮廓的效果?shader的pass是什么东西?
10、TCP连接的流程是怎样的?
11、项目中的打包工具做了什么事情?如何做自动化打包?
12、lua的闭包是什么?闭包产生的内存泄露如何解决?
13、A*寻路算法的原理是什么?还知道其他寻路算法吗?
14、求一个大型排行榜的Top100用什么算法,过程是怎么样的?
15、lua的table的底层实现原理是什么?为什么这么设计?
16、如果让你自己实现C#字典,你如何设计?
17、3D转2D碰撞检测的实现过程,使用什么算法进行检测?
18、讲讲你对URP的了解。
19、讲讲你对ECS的了解。
20、lua与C#或C语言相互调用的底层实现原理是什么?
21、代码安全具体做了什么内容?
22、性能优化做了什么内容?

2.2、常规题

1、原公司上下班时间是几点到几点?
2、加班情况怎么样?
3、为什么离开上一家公司?

2.3、面试结果

整个面试环节节奏很好,基本都能答出来,面试结束后基本心里就有底了。

第二天收到面试通过的通知,发了二面的通知邮件,与一面隔一天。

3、二面,技术面

面试时间:2021年12月1日 19:00
持续时间:40分钟
面试方式:视频面试

二面也是技术面,同样是视频面试,面试官也是主程,全程笑盈盈的,很放松,以下是部分面试提问(凭记忆回想)。

3.1、技术题
1、讲一下你在项目中的工作内容。
2、项目中遇到的最大的挑战是什么?
3、LineRenderer的底层实现原理是什么?
4、讲一下二维碰撞检测的算法实现,四叉树。
5、热更新的流程,如何做版本管理,如何校验热更包,如何确保下载过程,热更包的颗粒策略。
6、讲一下UGUI与NGUI有哪些不同的地方。
7、讲一下你搭建的游戏框架的内容。
8、对自研引擎的看法。

3.2、常规题
1、为何在上一家公司呆这么久?这次离职的原因是什么?
2、加班情况怎么样?这边的项目开发紧张,能否适应工作强度?
3、你的职业规划是什么?

3.3、面试结果
二面提的问题比一面少一些,感觉很有把握。

第二天收到了面试通过的邮件通知,约了三面的时间,与二面间隔三天多,最后一面是HRG面。

4、三面,HRG面
面试时间:2021年12月6日 18:00
持续时间:40分钟
面试方式:视频面试

三面是HRG面,与发邮件安排面试的HR不是同一人。
面试官一打开摄像头我就感受到了气场,跟前面两面技术面气氛完全不同,开场惯例自我介绍,然后开始提问(凭记忆回想)。

4.1、HR问
1、说一下你的游戏经历,平时都玩什么游戏?
2、讲一下你在项目中的工作内容。
3、项目的技术难点是什么?为何项目时间跨度这么长?
4、为何在一家公司呆这么久?中间有过离职的想法吗?
5、你这么多年U3D的工作经验,我们用的是自研引擎,为何投递这个岗位?
6、你的职业规划是什么?
7、我们用的是自研引擎,做的是重度游戏,你这块缺乏经验,工作强度大,你能做好吗?
8、目前有其他公司或团队在跟你谈吗?
9、聊一下薪酬,低于期望薪酬是不是不来了?

4.2、面试结果

面完我其实就有预感了。
今天是2021年12月16日,时隔10天,终于等到了结果。

三、总结
技术面多问的是底层原理,这块务必打好基础,认真复习准备,问题不大。

HR面其实问的问题都不是什么难回答的问题,注意回答的时候要言简意赅,不要慌。

平时要多锻炼表达能力,写文字是不够的,要用嘴巴去讲出来,条理清晰,有应变能力,要说到点上,不要让对方感觉没听明白,甚至产生相反的结论。

另外要不卑不亢,如果你天生自带气场最好。

好了,就先写这么多吧,这次就当做一次小小的经历,也是自我认识的一个过程,继续加油。
 

 ————————————————
版权声明:本文为CSDN博主「林新发」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/linxinfa/article/details/121762610

### 游戏服务端开发的面试经验及相关技术问题 游戏服务端开发涉及多个领域和技术栈,通常需要候选人具备扎实的基础知识和丰富的实践经验。以下是关于游戏服务端开发面试可能遇到的技术问题及其解答: #### 1. **游戏服务器架构设计** - 设计实时多人在线游戏时,应考虑以下几个方: - 使用专用的游戏服务器架构来实现低延迟交互[^3]。 - 实现游戏状态同步机制以确保客户端之间的数据一致性。 - 部署内容交付网络 (CDN),优化静态资源分发效率。 - 利用 WebSocket 或 UDP 协议支持高效的数据传输。 - 负载均衡与自动扩展策略,应对高峰流量需求。 #### 2. **并发处理能力** - 多线程编程是游戏服务端的核心之一。常见的解决方案包括但不限于: - 基于事件驱动模型的设计模式(如 Reactor 模型),适用于高并发场景下的 I/O 操作管理。 - 异步非阻塞 IO 的应用,减少因等待操作而浪费的时间资源。 - 锁机制的选择与优化,避免死锁现象的发生。 #### 3. **通信协议选型** - 对于不同类型的应用场景可以选择不同的通信方式: - 如果追求稳定性和兼容性,则可以选用 TCP/IP;如果注重速度且能够容忍一定范围内的丢包率,则推荐使用 UDP[^3]。 - JSON 和 Protobuf 是两种常用的序列化工具,在实际项目中可根据具体需求权衡两者优劣。 #### 4. **数据库设计与性能调优** - 数据库层需要注意的地方有: - 分布式存储方案可以帮助缓解单点压力并提高可用性。 - 缓存系统的引入可显著提升读取密集型业务的表现效果。 - 定期分析慢查询日志找出瓶颈所在,并针对性调整索引结构或者重构 SQL 语句。 #### 5. **安全性考量** - 加密算法的应用保障敏感信息的安全传递; - 认证授权流程的确立防止未授权访问行为发生; - DoS/DDoS 攻击防护措施部署保护整个系统免受恶意攻击影响。 ```python import socket def create_udp_server(host, port): server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_socket.bind((host, port)) while True: data, addr = server_socket.recvfrom(1024) print(f"Received message from {addr}: {data.decode('utf-8')}") create_udp_server('localhost', 9999) ``` 以上代码片段展示了一个简单的基于 Python 的 UDP 服务器创建过程,这在某些轻量级即时通讯场合下非常实用。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值