Unity 工作经历+近期面试经历

    由于团队解散,这最近都在找新工作机会——投简历找工作。已经面试三家了,都没拿到offer,挺失落的。把这种感受记录下来,以作后鉴。

    这本质上是一篇面试经历的记录,并不是什么面试攻略,主要是给自己总结的。但是,也许会有同道中人看到,谁知道呢。所以,还是先自我介绍一下。

 毕业两年,但已经用Unity做了3年游戏了,是的,3年,从实习开始。对自己现阶段评价是:写游戏逻辑没什么大问题,对底层知之甚少。然后讲讲前三年的工作经历。首先是实习,讲实习之前,先讲讲我的大学前三年的情况。在大学,我是属于那种不挂科,也拿不到奖学金;每个学期前几个月都不怎么学习,考试前半个月老师划重点了就开始加班加点啃课本的学生。喜欢玩游戏。想法很多,做成的没有。属于迷茫型的。那么问题就来了,大四开始找实习了,一次一次的碰壁,一次一次的心灰意冷。没有优异的成绩,没有扎实的基础,也没有做过拿得出手的项目。那个时候,我只想在广州找一份C++的工作,具体做什么,我也不知道。为什么找C++的工作?不是为了实现什么伟大的人生理想,也不是为了改变这个世界让它更美好。只是因为,找实习的时候,多看了几本C++的书。然后投了很多简历,面了很多家公司。稍微大点的公司,在笔试就被刷掉了(包括校招)。我印象中,很多考算法的题,我算法不行。然后小公司嘛,问项目经验,我没有。于是,找来找去,一个多月也没找到实习工作。其间还遇到几家打着招聘的幌子骗人去培训的机构,培训机构名字就不说了。最后,听说同校师兄的公司在招聘,没错,就这样,虽然我什么都不会,师兄还是给我机会了。于是,我入了用Unity这个坑,入了游戏这个坑。然后,在师兄在引导下,开始在Unity的海洋遨游,嗯,还好没有被淹死。刚开始,什么杂活都干。后面慢慢专注做UI。有空的时候就看看C#基础,Unity的一些插件,我们是做悠闲游戏的,不做热更新,不用Lua。到毕业时,做UI基本可以独当一面,于是毕业设计做了一个2D的消灭星星(那时这个游戏好像有点火),被评了优秀论文,还高兴了好几天。然后,毕业后,也基本上是做UI,也做一点游戏逻辑,主要是一些小东西的功能。毕业后再做了一年,我辞职了。当时比较冲动,现在想想,挺对不起师兄的。是他还有另外一位师兄手把手将我带起来的,我却说走就走了(他那时已经是公司副总裁,找我谈了一下午,由于某种原因我还是辞职了)。但我心里一直能记得这份恩情。当时,我以为我有了项目经验,就可以很容易找到工作了,其实并不是。我开始发现,我只是写了两年简单的逻辑,其实什么都不懂。去面试的时候,才知道,人家要考查的东西很多很多。渲染(图形学)知识,性能优化,算法(我依然很差,直到现在),设计模式,数据管理(有一家公司问我整个游戏的数据怎么管理,数据系统怎么设计,我当时硬着头皮说了一点,被问得哑口无言,然后放弃了)。然后说说开发语言,很多公司问会不会lua,我从不说谎,我不会。C#,我本来以为基础已经不错了,但不是。别人问我装箱拆箱(虽然平常也经常用,但我当时不知道那就是装箱拆箱啊),我不会。别人问我GC,听过,不太懂。那我会什么?如果我自己是面试官,我自己都不要我自己。对,就是这么尴尬。然后我就开始边找工作,边针对性地学习面试被问到的东西。终于,有一家公司不做笔试,只要我做一个DEMO,当然,这个DEMO他挺满意,然后进了。这是一家老牌软件开发公司,和我年纪差不多大。当然,这也是问题所在。我进去做的项目是一个数据展示平台,就是把各种数据图表做成3D的,可以交互的,跳来跳去很酷炫的那种。没有主程,然后我任项目组长。他们要的东西也不难,不用加班(朝九晚六),工资比我上一份游戏开发还高。但在那做了三个月,马上转正的时候,我辞职了。这里面的原因,主要是在那里做的不开心。前面说了,这公司年纪和我差不多大,可想而知,里面有多少老员工,是真的老员工,而且有点倚老卖老的感觉。经常他们要我们出的东西,是像催命一样的。我们要他们配合给的东西(比如数据,展示用的大量数据,我不能自己造吧?主要是这些数据他们本来就已经有的),我的天,有时一个星期要不下来。这还不算,领导还多,早上这个领导一个需求,下午那个领导另一个需求,完全不知道该听谁的,有些老领导还很忙,经常人都找不到,更不要说对接需求,做出来后他们又说不是这样的(也许他们自己都不知道他们要的是什么,天知道)。就在我不胜其烦的时候,我们以前的主策说他自己出来创业了,我就像抓到一根救命稻草一样,好像人生突然就充满了曙光。然后很快提出辞职,到前主策那家公司了。在这家公司,因为好几个同事都是以前的旧同事,开始一段时间都还好,过得挺不错。有时不加班,有时晚上加到9点,周末双休,还ok。因为之前面试受到的各种“鄙视”,开始有意识地去学一些东西。利用业余时间加强了一些C#的知识,很多东西了解的稍微深一下,对图形学去了解了个皮毛,对一些设计模式加深了一些理解。对性能优化方面也做了一些了解和实践。在这家公司做的是战斗逻辑,还是悠闲游戏,有些项目,直接我一个人负责战斗逻辑,还负责Editor工具的开发。工作上就这样,也没什么好说的。然后公司效益不怎么好,一年之后,团队宣布解散。这就很尴尬了。又要开始找工作了。就是这段时间。这也是想写这些文字来记录一下一路风风雨雨,以及心里感受的原因。

  然后就说说,这段时间去三家公司面试的经历。

  第一家:公司约的时间是下午2:30,我去得比较早,大概2点,我就随便走走,随便逛了一下看看公司环境什么的。公司还挺好,一共占了写字楼的三层。差不多到点了,我便到前台做了个登记,然后前台安排我做了笔试。拿到笔试题目的时候我有点懵了。有算法数据结构相关的题,比如:一个数组,怎么不用循环,不逐一赋值,把它逆序输出。然后是C语言,C++,C#,Lua,C和C++(很多指针题)平常不怎么用,早忘记得差不多了,Lua直接不会。唯一做的好一点的可能是渲染那一块的东西,因为没考多深,基本也就是渲染流程那些。然后HR象征性地面了一下我,让我回家等通知(当然,这种小公司,一般没什么复杂流程,等通知基本就是没戏的意思,面试过几家的人应该都知道)。这笔试做得很差,也没抱希望了。考算法、数据结构、渲染这些理所当然,C#和lua也合理,但是C和C++当时真的想不明白为什么要这样考,做了三年,从来没用过。但后来想想,这也许可以考查一个人的编程基础到底怎么样吧。经过这家公司面试,于是我就花了几天去学习Lua,基本的语法感觉都没问题。于是又投了两家。

  第二家:这家考了一个算法,入门级的:写一个函数用递归求数列:1,1,2,3,5,8,13,……,n 第n个值。这题我是用Lua写的,从技术面试看应该没什么问题。考的语言基本上是Lua,考了__Index, __newindex, rawget,rawset,这些我前几天花时间看了,也基本掌握了,考法是一段代码,写出后面几个print打印出来的值,都做完了,应该问题也不太大。还有一些比较理论的,比如描述C#的GC,描述数组与列表的区别等。也有一些经验性的,比如让你做UI模块怎么做?实现全局事件(我并不知道这是什么东西,尴尬)时,怎么处理和UI事件的冲突等等。全都答了,写代码的题都用Lua答了。然后就到技术面了,来了两人,一个说他是主程,另一个没说。他们比较奇怪,说为什么我简历没说会Lua(因为简历早就写好了,而Lua是后面自学的,简历也打印了几份,就懒得改了),但我的题都是用Lua答的。我说因为卷子上面说用Lua答代码题 (其实后面括号写了,如果不会Lua,可以用C#)。他又问,你们之前的项目不用Lua吗?我老实说了,不用,我们不做热更新,但出于兴趣,我自学了。还问了一些做UI的细节,比较琐碎,不太记得了,唯一记得比较清楚的是问了一个我是怎么实现场景加载的问题,我说用系统的异步加载API,然后监听场景的资源加载,把总进度显示在Loading进度条,还表述了一些细节。也问了一些浅显的渲染知识。基本也就这样。然后就到了HR面,关于HR面我主要说一点,她问我主程有没有跟我讲过这里的工作强度,我说没有,然后她说每周要加班3天,一个月大概有一天要通宵。其实加班没什么,做了几年工作,现在要解散的这份也是995。但问题就在于我是内推进去的,而我那朋友和我说他们是不用怎么加班的,问题就来了,我的期望薪资是按不怎么加班的前提下的。她说等下产品经理应该会和你交待这些。然后她还交待了一些公司的情况,主要社保之类的,这没什么好说的。最后就是产品经理面。这一面就有话要说了。他进来,让我自我介绍一下,问了一下我工作经历。然后他开始表述他对游戏的观点,他说:“做了几年游戏,你也知道现在的环境,想要做一些有创意的,颠覆性的产品很难,我们都是靠人力物力堆产品把流水推上去的。我不要求你们有多么出色的能力,态度好就行。我是策划出身,你也知道,现在游戏好了就是大家努力的结果,做不好就是策划的锅。所以我是要求我们的策划每天都要加班。好记性不如烂笔头,我让我们的策划每天都写日报,记录他们一天中遇到的问题,想到的新想法。你们技术作为配合,一个星期至少要加班3天。”(这不是他一口气说的,我总结的)他说的时候我也没怎么插嘴。点头就是了。当他问我有什么问题的时候,我就问了,听说我加班是要申请的(这是内推我的那个朋友告诉我的,他说不用怎么加班,加班要写申请,而且有加班费)?他说是要申请。我又问:那每天都要写申请吗(我个人比较烦这些东西,很浪费时间嘛)?他说是的,你自己根据情况选择三天申请。我再问:那周末要不要加班?他有些不耐烦了,大概说不用。我没听清啊,单纯的我再问了一遍,周末要加班吗?他急了,你怎么对这个问题那么感兴趣?整个过程我的语气都很平和,表情应该也没有表现不愿意加班(表情我看不到啊,但我对加班这种事没很大的意外啊,我只是想确认事实而已)。然后他问我还有什么问题,我说没有了。他就说,那行,你先回去吧,有消息我们会通知你。我听到这个,我心有点虚,我想基本吹了。我想,肯定是因为我后面那几个关于加班的问题问得他反感了。第二天,我实在不甘心,我想确认是不是由于这个原因被否。又由于是内推,和hr之前就聊得比较熟了,我就问hr,是不是因为这个原因。她说和产品经理沟通后,确实是这样原因。她说她再去给我争取一下,我说不用了,强留的瓜不甜(正确说法应该是强扭的瓜不甜,哈哈)。第二天,她又主动跟我说,她还是再帮我争取一下,不想浪费一个人才。但我已经不想去她们公司了,我撒谎说我已经拿到其它公司的offer了(我撒谎了,不是好孩子,但我实在不知道该怎么拒绝她,如果她去交涉又给我offer了,我再拒绝,就太没人情味了)。第二家公司,也就这样有缘无分,擦肩而过了。这里我最想吐槽的是:问清楚加班情况和愿意不愿意加班,根本就是两回事吧?而且,如果我问清楚了,还是去了,说明我是做好心理准备才去的。相比于那些什么都不问,然后去到才觉得和期望相差太远,抱怨苦抱怨累,上班应付了事,甚至做几个月就拍屁股走人的不是要好很多吗?你觉得呢?第二家面试就说这样了。

  第三家:第三家没有笔试,直接进入技术面试。首先让我自我介绍,如此这般介绍完了之后。他首先让我比较各种数据结构。数组,ArrayList,List,字典特点都比较了一通,大概没什么问题,他只是嗯了几声。但我没说哈希表,因为我不怎么熟悉。但面试官不肯放过这个点,他问,那哈希表呢?我试图按自己的理解从表层扯一些,以表示我是用过它的,有去了解过它的。扯了几句,我发现我实在扯不下去,我说哈希表我还不是很理解。由于看到我简历写着第一家公司是做UI的,他问我:UI管理要怎么做?包括一些什么东西?我就按我的理解,把如何管理UI各个模块,包括模块的加载显示回收,还有UI和数据的交互讲了一遍。然后他说:你连什么是管理都不知道,管理和数据没有关系,也不是你说的这些为了实现你项目的功能而写的一些东西,是能够抽象出来成为一种框架的东西。我虔诚地点头并应了一声:嗯。然后问我关于UI的层的控制问题,答了一些渲染队列的知识,具体不太记得了,没什么问题也没纠结太久。然后,他问我:摄像机消耗什么?What?我近视,没听清。摄像机消耗什么?呃,这个,消耗什么呢?不知道,真不知道,没想过啊。停顿了片刻,我说这个我不知道。最后就回到C#的问题上,拆箱装箱,把过程原理说一下。嗯,装箱拆箱就是一个类型强制转换的过程,我把值类型在堆栈中存储怎么转成托管堆里存储的引用类型,引用怎么转成值类型,引用类型的引用类型(就是引用类型里面的变量还是引用类型)怎么转换成引用类型等说了一下,好像问题也不太。好家伙,他问我,如果C#没有提供强制类型转换,你怎么自己去实现它?这个,问得我哑口无言,以前想都没想过。然后问我协程是怎么实现的,如何用纯C#怎么实现协程。协程,我只会用啊,我哪想过它是怎么实现的啊。然后他就说了,你以后啊,在做项目和学习的过程中,要多想想为什么要这么做,这么做有没有什么问题。而不是写完逻辑扔上去测试,有bug拿回来修改,改到能运行就算完事。临走的时候,他说:基本还可以,你先回去,我到时打电话通知你和老板见面。一听到电话通知,我心是比较方的。但没隔多久,10多20分钟吧,他就打电话过来,叫我回去面试。在会议室等了一会,进来一个人,他说他是项目制作人,让我自我介绍了一遍。我又把基本情况,工作经历交待了一遍。然后他对着简历问我了一些以往项目中负责做了一些什么东西,我如实说了一下。还问了一些我的职业规划的问题。这制作人还是挺有风度的,看上去就挺好说话。和我介绍了一下他们的项目情况,公司发展情况。最后他问我有什么问题。我觉得基本已经妥了,我就问了一个是不是一入职就能买社保的问题。他也很耐心地回答了我。我当时心急啊,我不想社保断缴啊。后面有朋友分析说,这个问题留到去问hr,不应该这个时候问。好像挺有道理。最后我说没什么问题了,然后他让我在那等,hr要面一下。不知道等了多久——我没看时间,我看着窗外,心里充满了期待,等待总显得很漫长——制作人又回来了,叫我先回去,到时(如果过了,这个地方我没听清,也不好问)通知你hr还要面一下。又等通知?又10几20分钟后叫我回去?然而并没有,因为听不是很清,隐约听到是“如果过了”,那也就是说还没过,这种等通知基本是等不到的。我百般不解,到底是哪个环节出了问题。也不知道制作人出去那段时间到底发生了什么。最终,已经过去几天了,也没有消息了,基本可以放弃了吧。

     总结:经过这段时间的面试,得到的收获主要是:

     1.不要过多去问关于加班的问题,如果有熟人在里面直接问熟人好了。或者等拿到offer的时候再问。游戏公司情况比较特殊,加班普遍严重。(当然,技巧归技巧,我个人观点并不认为问清楚加班情况和愿意不愿意加班有什么必然联系。这是双方选择的过程,本来我们就应该有知情权。你给我的钱只够买我一斤的体力脑力,我凭什么卖3斤给你?嗯?)

     2.技术老大问技术和职业困惑,主管boss问公司发展和职业发展,HR问生活。(这是我和大学同学交流面试疑惑时,他的原话。挺有道理)

  3.平常做项目,学习,多问个为什么。不要只顾埋头写逻辑,多想多学一些底层的东西。知其然,且知其所以然。(虽然作为一个搬砖级的程序员来说,平常更多的只是写逻辑就行了,但如果想要进阶的话,还是多深究一下。想当将军的士兵会让面试者更喜欢吧)

  4.关于知识点:几次面试比较常规的知识点是:C#(GC,装拆箱,ref/out,容器,迭代器),Lua(元表,面向对象),算法,数据结构,渲染(流程),性能优化。(这个肯定不全面,只是我基于最近面试的总结)

posted @ 2017-07-27 11:24  吃斤欢乐豆  阅读(32851)  评论(44编辑  收藏  举报