首页 > 游戏客户端社招面经(腾讯、网易、米哈游等)
头像
yiwozai
编辑于 2021-05-31 12:17
+ 关注

游戏客户端社招面经(腾讯、网易、米哈游等)

背景

看了很多牛客面经,也想回馈大家。

楼主19年211本毕业,先校招去了一家三线游戏厂做客户端。年初因为工作室变动,又想到快两年经验,应该可以克服非科班的痛点,于是就开始准备换工作。

大约从三月初开始准备面试,四月清明节回来后开始面试一共有网易、紫龙、腾讯、莉莉丝和米哈游五家,五一回来确定去米哈游,中间面试过程确实给我一些启发。

下面就开始一一细说。

经历

网易

视频一面 4月6号 60min

  1. map和unordered_map;哪种占用内存更大;unordered_map扩容与删除。
  2. vector扩容;push_back平均时间复杂度。
  3. 有序的1到1000寻找缺失的一个数;无序情况怎么做。
  4. TopK;内存不够的情况;有满分的情况。
  5. 说说A*;cost函数怎么定义;NavMesh怎么寻路;其他寻路算法。

网易面试风格很明显,一直怼数据结构、算法知识。这种类型面试只能靠大家多花时间学习、积累。
楼主在这些问题的扩展知识上都答得不好,一面直接被挂了。后面其他部门打电话捞,楼主婉拒了。

紫龙

面试时了解到紫龙目前在上海也有六七百人了,但之前不清楚,投递他家的原因是听说面试通过率比较低,所以就投了想检验下自己。

电话一面 4月6号 30min

  1. vector;怎么插入;怎么扩容。
  2. map与unordered_map;什么时候用哪个。
  3. static关键字;修饰函数中一临时变量时,多久生成、多久销毁。
  4. 四个cast;dynamic_cast转换失败返回什么。
  5. c#值类型与引用类型;装箱与拆箱。
  6. c# GC。
  7. 二叉树遍历;递归怎么改成循环。
  8. 向量点乘与叉乘;举例使用时机。
  9. 变换矩阵为什么是4x4;一般是(0, 0, 0, 1)的最后一列\行什么作用。
  10. 一个顶点经历哪些空间与变换才会到屏幕上。
  11. BlinnPhong光照模型;n点乘l和n点乘h意义。
  12. shadowmap过程;shadowmap问题与解决方案;照向四面八方的点光源怎么生成shadowmap。
  13. 骨骼与蒙皮;蒙皮算法。
  14. 寻路算法;它们异同;说说A*。

问的问题种类比较多,但只要答上来了就直接下一题,所以时间比较短。话说这怎么看都像是照着题单提问的。。
语言方面我提到C#用在工作,C++自己平常看开源项目会用,所以都问了。

这次面试就涉及到了图形学相关,当然这是我主动写了。我本意想劝大家无论是客户端还是引擎都尽量学下图形学,但落笔时又找不出能让所有人信服的理由,所以希望大家看完后找到自己的答案吧。

关于第9和第12问的扩展问题,提示平时学图形学也要多想。比如平常光源说用一张纹理来存储,那么照向四面八方的点光源怎么处理呢?最原始用天空盒一样的cubemap就行。

现场二面 4月14日 80min

  1. i++线程安全吗。(local static线程安全,shared_ptr线程安全)
  2. const修饰函数什么作用。
  3. 字节对齐;数据传输时对齐到8个字节的数据怎么压缩回5个字节。
  4. float占用几个字节;64位中呢;float类型数据在while循环中一直加一,会溢出吗。
  5. 虚继承使用意义是什么。
  6. static修饰全局变量有什么意义。
  7. 什么情况使用map而不是unordered_map;hash函数定义;hash后的均匀分布。
  8. STL中sort是稳定的吗;什么样的排序算法称之为稳定的。
  9. dynamic_cast什么时候抛出异常。
  10. 树的广搜。
  11. Dijkstra寻路算法;A*什么时候退化为Dijkstra。(Dijkstra属于Greedy算法,负权边要用DP的Bellman Ford算法)
  12. Mipmap作用;详细的纹理映射流程,软光栅与硬件的不同。
  13. 由四个点围成一个矩形,如何判断第五个是否在矩形内。
  14. 欧拉角和Quaternion;欧拉角旋转原理。
  15. 变换矩阵为什么是4x4;在一个矩阵同时表述旋转、缩放和平移时,三个动作的先后顺序。
    (括号中的问题是我主动和面试官探讨的。)

楼主是非科班,有几个问题上答得很差,比如float的溢出、hash函数定义、稳定排序定义。而12问Mipmap楼主说了“快速范围查询,加速采样”中的“加速”更是直接错了。
二面面试官是紫龙CTO,在面试过程中几乎对我耳提面命说了一些话。比如“高塔不立于浮沙之上”,楼主对这些话、这次面试印象深刻,也对自己薄弱的基础是否算真正的工程师感到愧疚。

现场HR面 4月14日 30min

二面完紧接就HR面。

总的来说紫龙工程师氛围很好,我觉得也值得面试。

腾讯

楼主在上海,投递的深圳,所以都是远程面试。

视频一面 4月8日 70min

  1. 3C部分(3C是Character, Control和Camera)。扩展聊了聊IK,更真实的动作系统,基于物理的动作,相机策略。
  2. 项目中的跑图算法。基础是Flocking群聚算法,项目中引入了视野和道路感知解决某些实际问题。(这是楼主的实际项目功能)
  3. 游戏软体。
  4. 运行时资源管理。
  5. ECS和帧同步。
  6. GC。
  7. 图形学和渲染管线,如渲染方程、PBR等。
  8. 碰撞检测。
  9. 骨骼与蒙皮。

视频二面 4月15日 30min

  1. 更完善的动画。
  2. ECS;为什么会有误差(float);Data Oriented和Object Oriented在项目上有什么区别。
  3. 跑图算法细节,随机性怎么产生的。

视频三面 4月21日 30min

  1. 相机运动策略;引入弹簧系统怎么运作;弹簧简谐运动怎么停下来。
  2. 质点弹簧系统;timestep大小有要求吗;timestep为什么是恒定的;基于力和基于位置哪种更适合游戏。
  3. AABB和多面体与AABB和三角形哪种碰撞检测更复杂;描述下AABB与三角形碰撞。
  4. 物理引擎;碰撞检测流程;BVH和KDTree优劣;KDTree和Octree比较。
  5. 物理引擎怎么优化;多线程相关;ECS将相同类型数据放在连续内存中,为什么对性能有提升。
  6. SIMD;向量运算优化;
  7. 反射了解吗;反射内存偏移怎么计算;Unreal怎么做的反射。
  8. std::move了解吗;move一个const变量会发生什么;将其传给构造函数,会调用const构造还是非const移动构造。

前两面问题都是围绕项目技术的,像ECS、碰撞检测这些,在工作中可能较少涉及,需要自己主动接触。

第三面应该是看楼主技能树点在了物理方面,所以专门让做这块的人来面试。

这也是楼主另一个体会:作为技术人员不能有短板,还需要有异于常人的点。希望大家也能找到自己的方向能够深挖。

视频HR面 4月26号 60min

最后结果显示楼主在HR面挂掉了,不过我觉得具体原因可能是其他方面吧。所以大家在谈福利、薪资要慎重,楼主是已经有其他offer所以比较激进。

莉莉丝

现场一二面 4月9日 60min

  1. 对于空间中多个点,最小AABB怎么生成;最小包围球怎么生成。
  2. 欧拉角和Quaternion;对于一个正向物体,欧拉角怎么偏转到(x,y,z)固定角度;欧拉角怎么转化到矩阵。
  3. string s; vector<string> v; v.emplace_back(std::move(s));</string>
  4. 跟随的人物转过墙角时,相机怎么运动。
  5. 纹理映射。
  6. 软体模拟。
  7. 物理引擎,碰撞相关。

这是一二面同一时段,前后两位面试官。投递的是引擎岗,面试中了解到是面向社区的自研引擎,所以就婉拒了。

面试体感很好,面试问题都会和楼主探讨。并且二面面试官人也很有礼,主动和我握手。

米哈游

电话一面 4月13日 50min

现场二面 4月15日 60min

现场HR面 4月15日 20min

更多模拟面试

全部评论

(7) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐