2022年游戏客户端开发排雷及春招实习面经汇总
先对自己的春招做一个总结吧
这次春招我实在是太菜了,虽然收到的offer不算太差,但是还是不太想止步于此,决定先接下来去锻炼技术,秋招再战。
排雷
投递岗位:飞鱼科技,鱼苗夏令营游戏客户端开发
飞鱼科技直接拉黑,这家公司的面试官首先在面试的时候表现出了对我的极大不尊重有但不限于以下这些:
“想必你也知道,Unity做不出来你喜欢玩的那些大型游戏”
“下次请不要拿这么烂的电脑来参加面试”
一次面试竟然可以挑出这么多毛病,这是我完全没有想到的。
然后让我更没有想到的就是,这次面试居然通过了,我来到了二面。
二面的面试官并不知道LeetCode是什么,我就直接当非技术面进行了,事后在飞鱼的招聘群里得知这一面叫作“高管面”。
在经历了“高管面”的第二天,我收到了来自飞鱼科技的感谢信,属于是非常莫名其妙了,两次面试的问题可以说是极其没有水平。
最后从群里的HR得知,“面试中更看重综合能力,专业能力考察只是其中的一部分”。
这是HR在群里的回复,回复的信息是我提出的问题。
群内舔HR的人极多,十分不推荐来这家公司搞技术,喜欢玩人情世故的兄弟可以来试试。
除此之外的其他公司的面试体验都挺不错,倒垃圾就到此为止吧。
面经(按时间顺序)
2.27 4399笔试
单选什么的就不说了,就说说代码题。
- 链表的倒数第n个节点。
- 输入一个整型数,计算以二进制形式表示时从低位开始的第一个1的位置,以及对32位数中的指定的某一位进行变换。
- LeetCode 84
3.2 天美一面 50min(凉)
- 自我介绍
- 跟面试官说明自己不会C++
- C# GC
- 嘴撕top k(这里明确是top 2,要求一直优化)
- 智力题,100层楼2个鸡蛋
- 给一个puzzle,puzzle的每块拼图有4个面,共n块拼图,问暴力法的时间复杂度
- NavMeshAgent原理 A*
- 多线程,在一个队列内有两个线程,一个负责取指令一个负责放指令,问如何加锁可以最小化锁的数量(一开始是要求回答无锁队列,我说了自己不了解)
- 第三人称射击游戏,如何实现上半身转向下半身保持移动方向不变
- 一个人物有1级属性,2级属性,3级属性,2级属性会随1级属性变化,3级属性会随1级和2级属性变化,问如何实现代码结构
- C# Dictionary 底层实现
- 反问
这次面试被挂掉的主要原因感觉是C++不会,面试结束后恶补了一下,除此之外的问题答的还不错。
3.2 4399一面 30min
- 自我介绍
- 关于项目内遇到的困难
- NavMeshAgent A*
- 在C#中有什么常用的数据结构(答了List和Dictionary)
ArrayList和List的区别,哪个会引发装箱拆箱 - 知道HashSet吗,这个东西有什么用处
- 用Animator做了些什么
- TCP 和 UDP的区别,王者荣耀用了哪个(登录和战斗)
- 有3L和5L的水桶,怎么获取4L的水
- 说说渲染管线
- 说说点乘和叉乘
- 如何判断一个点是否在三角形内
- 嘴撕链表反转(自己提出说两个方法)
- 证明勾股定理(不会)
- 说说选择排序的运行,它是稳定排序吗?
- 反问
4399的一面都是纯八股文,而且问的都不深,挺简单的,节奏还算比较快,30分钟问了挺多问题。面试官十分的实诚,对我反问问出的问题基本知无不言。
3.3 朝夕光年一面 60min
- 介绍项目
- 说说项目中用到的设计模式
- 说说项目中遇到的困难(这里我说的是3个Update)
- 进程、线程、协程
谈谈觉得协程能做什么,为什么可以像是并发一样 - 局部光照模型(环境光、漫反射、镜面反射)
- 斐波那契数列第n项(先写的递归发现可能会爆栈,后来换成循环,写循环要求优化空间)
- 求平方根(代码写的牛顿迭代,再问还有什么方法能求不用敲代码)
- 反问
字节的面试一面基本都是在问基础,手撕代码确实也多了。问题的总数其实不多,但是会基于基础问题进行深挖,到我答不出来的时候面试官也会把答案告诉我,跟我一起分析为什么是这样,总之是一次很棒的面试体验。
3.4 光子工作室一面 50min
- C++虚函数
- C# GC
- C# 反射
- C# ref关键字和out关键字的用法
- 线程与协程的区别以及Unity 协程的使用
- 局部光照模型(环境光、漫反射和镜面反射)
- 嘴撕最长回文子串 LeetCode 5,是否了解过动态规划,dp的思想是什么样的,了解过自底向上以及自顶向下吗
- 介绍项目,项目中的困难
- FixedUpdate的使用
- NavMesh原理(A*)
- 渲染管线中的Buffer
- GET请求与POST请求的区别
- 状态码
- 是否使用过动态加载资源
- 反问
经历了上一次天美的面试之后,C++的八股算是会了,不过这次的面试官看我简历上的项目都是Unity的,所以C++就试探性的问了一个问题就不问了。总之也都是集中于基础,不会难。
不过这次面试显示通过后被光子晾了一周多就不了了之,流程就自动结束了,可能是我太菜了光子不想接着面后续了吧。
3.7 朝夕光年二面 35min(凉)
- 说说一面的情况(说了一下一面情况,强调了一下自己在一面通过后学习了Lua)
- 说说自己对Lua和C#之间最不同的感觉
- 说说自己了解的设计模式
- 简单工厂模式是怎样的一个结构,实际应用场景有哪些
- 简单工厂模式里除了能够new对象并返回,还能做什么事呢
- 如果一个场景里面有很多相同的物体,只是使用简单工厂模式会遇到什么问题
- 两个线程一个缓冲区,一个线程负责放入物品,另一个线程负责取出物品使用,问会遇到什么问题
- 射击游戏中如何实现射击击中敌人不同部位产生不同效果(把CSGO那样的射线和PUBG那样的实体子弹都说说)
- 项目中实现了存档读档功能,是否为这个功能单独设计了一个文件系统
- 在一个平面上有非常多的三角形,给出每个三角形的顶点信息和判断是否相交的算法,问如何优化
前半部分其实答的挺完美,没什么漏洞,就是到最后的时候问题变得比较难了(当然可能是我太菜了觉得难),可能有些涉及到引擎开发岗的问题我没答上来,最后晾了一周被挂了,字节的二面确实比一面难了不少。
而且这是第一次在反问环节面试官还会附加问问题的(问了怎么用数组存储二叉树)
字节还是对算法十分重视的,这次面试直到结束也没有手撕代码就觉得差不多是凉了。
3.14 4399二面 25min(OC)
- 是哪里人
- 学unity多久了
- 列举项目中最有挑战性的东西(背包、对话、任务系统)
- 你觉得什么样的一个背包系统是一个好的背包系统
- 你刚刚提到了背包里有很多东西,那么背包里有很多东西的时候,你觉得会遇到什么问题,你有什么优化想法吗
- 平时的学习中有去了解一些源码吗(这里说了C# Dictionary)
- 描述一下Dictionary的工作机制吧
- buckets数组会扩容吗,什么时候扩容,为什么这种情况下要扩容(这里主要是指哈希冲突多导致扩容的现象)
- 最近玩什么游戏玩得多,说说这个游戏为什么会如此吸引你(主要说了炼金工房系列)
- 你对学习技术的过程是怎么看的,自己平常会怎么学习(这里就说了说自己平常的习惯,比如先定下来自己要学什么,然后了解需要什么知识,最后由简到繁学习)
- 对自己的毕设有什么想法吗(做模拟经营类游戏,复刻星露谷物语)
反问环节
4399在两次技术面之间有一个HR面,就不记录了。这次面试的面试官一看就是个大佬,虽然我是从校招正式岗通道投递的简历,但是后台知道我是来参加实习的(应该是都在同一个通道,用毕业时间来区分)。这次的面试更多是像在聊天,一边聊天一遍探讨技术话题,整体气氛非常轻松愉悦,跟面试官聊的巨开心。
在这次面试完过了两天就收到HR电话和offer,4399这次春招的效率极高。
其他的
这些面试期间也参加了西山居以及莉莉丝的笔试,西山居的笔试做得稀烂就不说了,莉莉丝的笔试做的还行,但是进入下一环节后被告知没有HC了,所以就选择接下4399的offer了。
总结
感觉校招都是看重基础多点,今年的游戏客户端开发岗感觉已经把图形学知识列入常规八股文了,而不是往年的“加分项”,C++和C#都要准备,项目求精不求多。
最后再提一嘴,小心飞鱼科技!!!