腾讯光子-游戏客户端一二面面经
更新:三面已凉了,状态变灰,现在很悲伤,我心情好点了再写三面面经给大家,不好意思。
------------------------------------以下是原答案-------------------------------------------------------------------------------------------------------------------
游戏客户端方向。自己会的语言是C++和C#
上上周投的腾讯,上周四开始了第一次面试,这周五开始了第二次面试,都是技术面试,具体问题如下:
一面我回答的比较好,时间久远我可能记不清了,我说个大概。
一面:
一面面试官是个小伙子,周三亲自打电话来给我说明天要面试我,让我做好准备。周四早上十点来电话。这面试官态度挺亲和的,面试过程中会有一些提示
1.自我介绍
我说了说我做的项目什么的。
2. 你做游戏的还挺多的,我考考你Unity的协程你有了解吗
我稍微讲了讲协程,主要是说他是程序内可以自由调度的,比线程还小的一种调度单位什么的。
3.讲一讲C++的多态
这个简单,我把重载,覆盖,遮蔽都说一遍,说的巨详细
4.你刚才说道了虚函数,说一说虚函数是干什么的。
我说了一堆,主要是围绕虚函数实现说的,也提了提虚函数表
5.你刚才提到虚函数表,虚函数表是怎么实现的?
我说如果一个类包含了虚函数,那么在创建该类的对象时就会额外地增加一个数组,数组中的每一个元素都是虚函数的入口地址。不过数组和对象是分开存储的,为了将对象和数组关联起来,编译器还要在对象中安插一个指针,指向数组的起始位置。
我还顺便说了一下为什么析构函数可以声明为虚函数但不默认声明为虚函数。
6.算法题,如何判断一个单向链表是循环链表?
这个我想了半天有没有简便的方法,但是好像没想到....我就说用一个指针指向链表头,一直往下遍历,如果能回到链表头就说明是循环链表。
7.讲一下TCP和UDP
又是一题我准备好久的,我从头开始讲了一遍,巨详细。把TCP和UDP的区别,三次握手和四次挥手,以及为什么要三次,为什么是四次都讲了一遍。
8.到这里明显感到面试官语气是很满意的那种,他说不错,你做的游戏都是单机的吧?(答:是),但是我们也需要网络编程方面的知识,你能说一下帧同步和状态同步吗?
一脸懵逼,我说我不了解。。。。
9.那你刚才说了一下TCP和UDP的区别,那么如何保证使用UDP的时候有序传输?
再次懵逼,我说我只知道UDP在传输过程中怎样怎样,(面试官在那里疯狂说对对对,很期待我能讲出来什么)。。。但是我只能说很抱歉我不了解怎么做。
10.好,面试到这里差不多结束了,你有什么想问的吗?
我问,刚才面试表现怎么样?
他说,这个嘛,其实今年来面试的都挺强的,像你这样做了很多游戏的也不少,但是你表现的还不错(这话出来我就觉得应该稳了)
我再问,你们是哪个工作室的
答,光子工作室
我还想和他说几句,后来想一想其实也没什么好说的了,突然想起来我周末要参加GameJam,就和他说,我周末要参加GameJam会很忙,如果要面试的话能不能不安排在这周末?
面试官说好,那面试安排在周一之后(然后他意识到自己貌似说漏嘴了)补上一句,如果这次面试通过的话。
一面结束,我也为他们周一会通知一面,事实上,他们把二面安排在了这周五。。。
二面:
感觉二面的难度陡然加大,面试官的声音很小我很多时候都听不清楚,只能开了扬声器听。这个面试官没有那么友善了,全程没有给提示,只是必要的时候嗯几声。
1.自我介绍,项目介绍
2.你对Unity用的还挺多的哈,我问问你几个基础的问题,Unity的XXX你了解吗?
3.那Unity的XXX你了解吗?
4.那Unity的XXX你了解吗?
夺命三连问,关键我还真不会!一脸懵逼,面试官声音很小我没听清他说什么,我只是依稀记得说了几个我从没听说过的名词。
我说很抱歉,可能我对这方面不了解,我不会(感觉要凉。。。)他还补刀,这些都是Unity的基础啊。。。。(我还真不知道这些,各位小伙伴能猜到他想说的是什么吗?)
5.那你对Unity的协程有了解吗?
终于有个我会的了,我开始巴拉巴拉讲一堆。。。、
6.你讲一讲帧同步和状态同步
这个我上次不会后就去查了,这次终于会了,讲了一大堆
6.那我考考你C++的知识哈,你先说说C++的多态吧
我把重载,覆盖,遮蔽,又讲了一次。
7.对C++的内联函数有了解吗?讲一讲这个
有了解,我讲了讲内联函数的一大堆东西,还讲了它和宏的区别
8.你对TCP和UDP的了解怎么样,讲一讲
我和上次一样讲了一大堆TCP和UDP的东西,巨详细
9.考考你算法啊,先考你一个简单的,如何不新建第三个变量而交换a,b两个变量内的值?
没有思路,我冷汗都下来了,我说容我想一想,想了半天,和他说用函数返回值实现,然后正准备讲详细步骤,他说哈?要用到函数吗?
现在瀑布汗都下来了,我说那再等等,我想一下还有什么思路,我在想a和b的值交换不借助第三个变量的话。。。
突然灵光一现,我可以这样:
a=a+b;
b=a-b;
a=a-b;
这不就行了吗,我想那么复杂干嘛呢?
我就和他说了这个思路,终于面试官说了一句,对(力挽狂澜啊有木有!)
10.他貌似觉得这样考一题不爽,再考了一题,如何判断一个单向链表有环?
这个是真的会,我就说了说方法,用快慢指针,正想接着说详细步骤,他说好了,可以了,这题就这样OK
11.你对工作城市有要求吗?
我说没有要求
12.还有什么想问的吗?
我才把冷汗擦干净,问后续还有面试吗?
他说如果过的话,还有两轮,一轮技术面,最后一轮就是HR面了。
二面结束
总体来说二面真的是十分惊险,前三个问题我都不会,算法也差点卡住,不过幸好脑子灵光乍现做出来了,感觉二面应该能过(当然也不排除不过),目前面试流程没有变灰色,应该还是可以的。
最后一个技术面试貌似是技术总监面试,搞得我好慌,在这里许愿一下,保佑我过啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊