腾讯游戏上海北极光工作室2018面经

找人内推了腾讯游戏上海的北极光工作室,腾讯五大工作室分别为:琳琅天上工作室(Jade Studios)、量子工作室(Quantum Studios)、卧龙工作室(Wolong Studios)、北极光工作室(Aurora Studios)、波士顿工作室(Boston Studio). 北极光工作室的《天涯明月刀OL》、《轩辕传奇》属于比较有名的游戏,我面的后端研发。

简历

投游戏的原因是出于自身爱好和对行业的好奇,因为之前没有接触过游戏业,所以一直不知道游戏研发到底都做哪些,面试的一方面也是能够切身感受一下游戏研发的工作环境(其实我是被New Game误导了,全都是妹子的工作室?不存在的)…

投的是游戏后端的研发,游戏服务器的Coder,这个可能和我现有技能最接近吧,不过个人对于前端更好奇..虽然前端主要要图形的人..

一面

不得不说…这个面试问的内容真是太太太全了..简单寒暄后就直接进入正题。

首先是了解我做过的项目,让介绍我具体做了什么工作,具体使用了什么技术。能够看出来这个面试官是个对技术细节也比较了解的人,一直在自习分辨哪些是系统本来有的,我们具体的贡献是什么等等..

由于对操作系统比较了解,(面试官默认学系统的对网络也了解,然而我并不怎么了解)..让解释用户态和kernel态内存如何区分,如何管理。user态程序内存如果分配,系统调用的详细过程,发生Page Fault的处理过程等等。中间问了一个问题是进程分配了4K,但写了6K的内存 (或者说分配的虚拟内存大于实际物理内存有什么后果). 我一直以为这个是想问虚拟地址到物理地址映射和swap;不过根据反应来看好像不是问这个的… 我又说了些buffer overflow相关的,最后我也没明白面试官到底是想问什么…

接下来是数据库的相关知识,因为不熟悉所以基本上都是回答不了解,Join的左右啥的只有一点点大三学数据库时的印象,想不起来。容错方面是借着当时Paper的内容答了Redo和Undo的原理,Redo log第一次还回答错了..

代码方面让手写双向链表的reverse实现,当时有点慌写的代码实际上是有个小bug,好久不刷题的弊端..写系统代码和写算法代码思维都不一样..不过面试官好像主要是看代码的风格和大致内容吧..大概看一眼看看代码的水平? 这个没做什么评价。

之后是语言,由于我是用Pure C和Java的,它就问我C++的继承、多态在C里面如何实现,这个因为之前看过用C写面向对象程序(系统里面经常要这么用)所以比较熟悉。然后是printf变长参数实现,这个刚好前一天在看ARM的函数调用规范手册时候,里面介绍了变长参数,整个过程大致还是了解的。之后是C++里面extern C的原因,(这个之前网易游戏也面到了,当时不了解,后来就查了下),是为了不让C++编译器在函数名后面加字符串,这样Linker在找C的symbol的时候才能找到,也就能让C++调用C的函数。最后问了C++里面析构函数调用虚函数的效果,面试官实际上是在C里面写了一个Use after free来问的, 这个因为是做安全的比较了解,所以也没什么问题。

接下来就是提问,我就大概问了问他们具体做什么,和游戏运维的区别,前端后端的区别等等。

二面

二面是经理面,经理面主要问的已经不是纯技术了,一般都是问个人想法、对于未来工作的看法、对于游戏的看法等等。实际上就是一个加深了解的过程,经理给人的感觉非常年轻, 可以预料有许许多多年轻而才华横溢的大牛在北极光工作时。我们聊得也是非常愉快,让我对游戏后端的工作也有了更深的了解~

HR面

HR面已经是讨论发offer和实习、时间安排等问题了,这里就不赘述了。

Note

北极光的工作环境还是非常不错的,对于我这种游戏动漫爱好者在工作环境中可以随便放手办还不会引起不好的影响这一点还是非常有吸引力的,是一个超级大的房间和网吧很像一排排的电脑, 一进门就能看到天涯明月刀的大幅彩喷。不过当时我面试结束的时候已经21:00之后了还是能看到一些加班的人,所以不难想象这里的工作强度也不会低…