BG:中九25届,ICPC金(有点混,cf就1900左右),投的暑期实习,问protobuf、kcp、定点数都是因为项目里用到了,学校课程水所以显得绩点高,其实排名不高。
一面
处女面,很慌,但面试官很好,问的偏基础,不过面试官没开摄像头。
问题
- 数组和链表的区别
- 新增一个元素,数组和链表的区别
- 快速排序的原理,时间复杂度
- 二叉树的遍历,三种遍历顺序
- bfs和dfs的区别,用到的数据结构
- dfs压栈
- 进程与线程的区别,进程间通信的方式
- 死锁,如何避免
- 指针和引用区别
- 多态原理
- new和malloc区别
- 装箱和拆箱
- tcp和udp的区别
- 帧同步和状态同步
- unity脚本的生命周期
- update,lateupdate和fixedupdate
- unity协程
- unity协程和C#多线程使用上的区别,C#异步
- 渲染管线
- 工厂模式
- kcp相关(可靠udp)
- 除了重传,还有什么办法减少udp丢包?(没答出来,应该是想问我拥塞控制和流量控制相关的)
- kcp确认机制
- protobuf VS json(protobuf:variant,zigzag)
- 定点数的实现
- 子弹与人物的碰撞
- 对象池
- 喜欢玩什么游戏
- 有考研打算吗?看我绩点高(绩点高不应该问保研吗)
反问
- 什么引擎多:UE,Unity 55开,手游unity多,端游ue或自研引擎
- 实习生有培训吗:一般会发一些学习资料
- 工作时间:早9晚6,暑期实习一般3个月及以上
做题
(怎么是最后做题)
- 最大子数组和
- 判断括号字符串是否有效,有三种括号
{},[],()
,()
里面有[],{}
也是非法的,[]
里面有{}
也非法。
二面
面试官开摄像头了,感觉很有资历,面试的时候一会我没听清面试官说话,一会面试官没听清我说话,有点尴尬。。。
问题
- 做这个项目之前用过unity吗?用过unreal吗?
- 你读研吗?
- 对地域的要求,老家在哪。
- 我看你绩点挺高的(咋又是这个
- 怎么了解到帧同步的
- 状态同步与帧同步的技术差异、优缺点
- 有深入了解过2D/3D物理引擎的框架吗?(没有。。。)碰撞怎么检测?(四叉树、BVH、KD-Tree)问的很细,BVH的划分原则,等等
- 项目中使用BVH了吗?(没有。。。
- 为什么光线检测要用BVH?(没答对,面试官告诉我是方便在GPU上并行优化)
- Kcp的好处?
- Kcp有什么问题需要优化?(没答好,面试官教我。。。)
- 让你自己写可靠UDP怎么做好一点?(答得很平常,面试官没反应)
- 看过protobuf源码吗?(没有,看了一些原理性的文章)
- 定点数怎么做的?
- 用定点数实现了哪些数学函数?
- 求三角函数值该怎么做?(泰勒展开)
- 你们反外挂怎么做的?(怎么突然变成我问面试官了?)面试官先问我的想法,然后再讲他们项目的做法:服务端跑验证程序,敏感数据随机加密。
- 你们断线重连怎么做的?(又是我问面试官)我只想到追帧,面试官说还可以用内存快照。
- 给你看看我们的游戏PV,你觉得做这样的游戏需要什么技术栈?(回到面试官问我)
- 面试官给我介绍他们项目的寻路解决方案(然后我没听太清楚?)
- 除了C#还用过什么?(C++)
- C#与C++的异同、优缺点
- 了解过C#的中间语言吗?(只知道有这个东西。。。)
- C#的字符串是什么类型?
- C#两个字符串相同,指向同一个地方吗?
- C#装箱、拆箱。
- 用Cpp做过什么项目吗?(没有,做题目用得多)
- 讲一下移动语义。
- 讲一下RTTI(没听说过,面试官提示我四种类型转换),讲一下dynamic_cast原理(不会,瞎猜了一个跟虚函数表有关)。
反问
- 招实习生更重基础还是实践。回答:偏基础,不会要求太多实践经验,还要看个人对游戏行业的认识、热爱程度。
- 对客户端开发的计算机图形学要求。回答:组内客户端也分图形、非图形,非图形又分局内和局外。
- 实习的时候想快速上手应该再学些什么?(问了我想做什么方向,我回答局内)回答:动画、物理引擎了解一下。
做题
又是最后做题,草,面试问问题的时候还没那么紧张,开始做题了腿控制不住的抖,nm抖了20多分钟。
- 牛顿迭代法开方(我项目用到了)
- 判断多边形是否是凸包
#腾讯##面经##游戏客户端开发实习#