同学,别失去重头来过的勇气。
本来没想过进BAT,幸运有了面试机会,但是面试被完虐了。然后退选二线,还是被虐了,打击就更大了,最后甚至都觉得自己一无是处了,不由得就会想太多了。
因为我们拥有越多,才会越怕失去。
其实回头想想,我们本来就什么都没有,怕什么重头来过呢。
好了,装了一波文艺,开始正题吧。
上海某211高校硕士,cs专业,非大牛,非学霸,非ACMer,非..反正面目全非吧。目前拿了腾讯的sp,IEG前端开发。
本来确实不太想写这篇文章,因为毕竟不像很多其他大牛一样啪啪啪的各种offer,然后发一堆的面经,自己写这篇东西出来自己都感觉在大牛面前班门弄斧了,所以把学校信息都隐了,有幸有校友认出了也别说什么,让我静静的装回逼吧。
为什么最后还是决定写这篇文章,因为自拿了offer之后,还是会经常在牛客上看大家分享的面经、吐槽的公司以及各种心路历程,觉得还是有很多同学跟我2年前一样,颗粒无收,高不成低不就,茫然不知该怎么办,写出来只是希望那些同学能够重拾信心。(大牛可以略过,或者当耍猴看一下吧)
先上一波面经吧。
一面(大概1小时)
因为本人很早就想做游戏开发了,所以对口项目很多,基本上一面都围绕项目展开,所以没有太多基础的问题,记一些比较经典的问题。
(1).进去先手写伪代码,假设游戏平均每帧产生50颗子弹,写出对象池的概要实现。
个人觉得这个考察的还是对象池的思想,我大概写了一下伪代码。
然后关于子弹在初始化的时候,需要确定position,target,speed,destroy的条件,这些都得明确写出来。
(2).Unity 摄像机正交和投影视角的区别,渲染管道,NGUI渲染原理
这个之前都有了解过,所以答的很自信。
(3).聊一下AssetBundle和热更。
这个的话,就学Unity的时候就接触过,所以基本上能聊下去。
(4).聊一下项目中多人对战怎么实现的,遇到什么难点。
先说用Unity自带的UNet做了一套,然后做NAT穿透的时候出现了问题。就丢了UNet,用的Photon服务器,点明了一下这2个一个是点对点,一个是服务器转发。聊了项目中网络同步的思路(就是一个客户端主机,然后服务器做转发),状态机的设计(包括主角的同步,小怪的AI问题,地图资源的同步问题等等)
(5).对第三个问题的展开,聊一下网络同步有哪些。
主要就是帧同步和状态同步,聊了一下这个2个优缺点。其中我还故意抛了对王者荣耀帧和守望先锋网络同步的实现这个点,因为之前有认真看过。
(6).聊一下项目优化是怎么做的。
说了一下怎么做的资源整理(图集管理,然后包括IOS和Andirod图片压缩格式的选择,模型LOD),用profile调游戏中跳帧的地方,Update是怎么做优化的等。
还聊了一下我研究生的课题,让我介绍了一下其他项目的内容,以及问了我对游戏开发部门的整个理解(当时我从制作人,策划,美术,前/后端,技术核心跟他说了很多),然后就是我问问题的环节。我问了部门用的什么引擎,当时面试官跟我介绍了很多关于TX自研引擎的东西,然后问了一下技术路线的晋升,还有在研项目。
说实话整个一面基本上都掌握在我自己的节奏上,因为面试官围绕项目展开,很多东西我都能回答的很多,而且还能抛出很多点来聊。
二面(大概半个小时)
这个目测是压力面吧,进去面试官全程玩手机,全程打断我说话。
(1).自我介绍,介绍到一半的时候就被打断了,楼主之前做过一年交换生,他问了我为什么不继续做大数据(研究生课题是做大数据),当时就说了一通立志进入游戏行业啊,早就做好了准备啊之类的balabala。
(2).说一下Cocos2d和Unity3d两个工具底层思想上的不同吧。
因为有Cocos2d的项目也有Unity3d的项目,所以他让我聊了一下这个。而且这个他还纠结了很久,还举了例子再纸上画了草稿这样。这个其实主要还是想说ECS和OOP的区别吧,因为一直都有关注一些游戏开发的公众号,刚好在前不久看到守望先锋ECS系统架构设计的一篇文章,所以很自信就聊起来了。
有兴趣的同学可以去看看:http://gad.qq.com/article/detail/28682
(3).Cocos2d和Unity3d再内存管理上的不同。
这个我觉得主要他还是想问C++和C#内存管理的问题吧,两个框架都有自己的内存管理机制。但C++里面多了一个指针这东西,所以管理起来就毕竟麻烦,相对于C#基本上内存泄漏都只会发生再静态变量上面。这个因为Cocos2d我不太熟悉,所以当时我讲的大多数是Unity3d的中的内存管理,包括内存泄漏之类的。
(4).聊一下你觉得一个项目需要有什么编辑器
当时我说了一个资源管理器,场景编辑器,然后技能编辑器。说到技能编辑器的时候他就打断我了,问我一个技能编辑器应该要怎么实现。当时先是聊了一下怎么再Editor下做技能,然后抛了最近Unity2017新出的Timeline这个点,说可以利用这个东西做。
然后就是问了一下想做什么类型的项目,希望去什么岗位什么的,最后问我有什么问题想问他,我就说基本上想了解地在一面就已经了解了。二面面下来虽然说是压力面,但是我确实是顶住了,因为很多东西都是之前项目接触过或者说看过的,所以都聊得很好。我是第一个面的,面完面试官直接加了我的微信,说让我等直接安排HR面,但是后来因为HR没来就改成第二天了。(这时我觉得希望还是很大的,毕竟对吧,都加微信了。)
HR面
这个没什么好说的,基本上性格不是特别糟糕,都没什么问题。主要还是综合前面2个面试官的评价来觉得要不要你。最后问了一下HR什么时候出结果,HR来了句晚上就会出结果了,2选1。也就是说HR面是会刷人的,这个时候就搞得有点紧张了,因为当进二面的时候,剩下的就已经全是复旦交大的硕士了。
整个过程就是这样的,面试是国庆之前,最后收到电话通知是再国庆放假结束后的,也就是说国庆每天都是忐忑不安的过的,期间都不敢立任何flag,害怕啪啪打脸。
能看到这里的同学真的是很感谢,毕竟啰啰嗦嗦写了这么多了。这篇文章其实是昨晚熬夜的时候写的,只不过想在电脑上再认真看一下所以到现在才发(也是因为起来的很晚..)。这篇文章发完,还想继续睡,因为熬夜太伤了,所以说,尽量不要熬夜玩手机,对手机不好!
好了,面经发完了。
聊一下关于这个标题的问题了,写出来确实想鼓励各位牛友,能让大家重拾信心。
3年前,我也跟大家一样面临找工作的压力。作为一个全非的学生确实不太好找工作,当时情况是室友1一个学霸必然保研的,一个签了当时比较火的一个游戏公司(后来成为我内推备选),还有一个上海土著。而确实我专业能力很差,项目没有,投了一些研发的岗位被拒了之后就开始投擦边的,比如运维研发,测试开发之类的。最尴尬的是面试官问我为什么投运维研发,我当时其实不知道该怎么回答,因为我确实连运维是什么概念都没弄懂。后面想说投一些小公司,但是觉得钱还是太少了,就有点看不上。当时一星期跑好几个面试,天天基本上都是在地铁上度过的,后来想了想,确实是自己在本科期间没有好好的做技术,于是决定考研,希望通过再读3年书来给自己一个重新努力机会。
经历了最糟糕的情况,那下面就不会有更糟糕的了
在复习了大概4个月的时间,刚好赶上国家政策改了,然后莫名其妙就保研了。。
在知道了保研的时候,我再回头重新总结了一下之前的面试(可以毫不夸张的说,面了起码几十家。。),发现对IT其实更看重项目经历,一个对口的项目说不定就能帮你拿下这次面试。苦于没有项目经历,我就在随便投了一个小公司去实习了半年,当时是真的苦,100/天,学校到公司来回4个小时,加班最严重的时候一个月上了整整30天班,通宵3次,真的是拿着卖白菜的钱,操着卖白粉的蛋。有一段时间晚上回去还要继续干毕设做到1,2点,当时我尼玛都很好奇我是怎么坚持下来的。当时一心想的就是多接触实际项目,攒经验,不图别的了。那也是第一份工作,就是做的游戏开发,用得是Cocos,也是那段时间接触了游戏行业产生了兴趣,并且真的用上了C++进行实际项目的开发,所以即使每天累的不行,心里还是开心的。
半年实习结束之后,我很认真的对自己做了一套研究生的职业规划。
3.怎样去实现这些目标(自己努力+充分利用身边的资源)。
大方向是研一无论如何做一款游戏(去外面实习也好,自己做也好),研二的话想做一次交换生(这也是当初保研为什么没有选其他学校的原因,就是希望本校保护机制能让交换生竞争的时候有点优势),最后确实是这些目标都达成了。
研一一开学,我就直接找导师谈了自己的想法和规划,意思其实就是可能会想自己支配的时间多一点,少去一点实验室之类的,当时很神奇的导师就同意了,这里确实很感谢她。
然后着手开始了解需要从哪些方面开始准备,其实无非两点:编程能力+有点质量的实际项目。
后来看到一篇文章很不错,有兴趣进入游戏行业的同学可以看一下:https://mp.weixin.qq.com/s?__biz=MjM5MTI0OTkwMA==&mid=2650226841&idx=1&sn=c2f4d105fe89f84702a80b447ff39f4a&chksm=bebb841a89cc0d0cdda034b039d01ff2b7d10bb8e50d674ce7c3800b586e07046451444d39d7&mpshare=1&scene=23&srcid=0519wBiDrF0NH8JQNxrAyQDT#rd