天道酬勤,记春招之路(完美世界,360,腾讯IEG,网易雷火)

一.前言

先说说自己的一些情况吧,本人来自双非一本理工科学校,软件工程大三学生。大学期间参加过ACM竞赛,也进过实验室做过项目。主要学习的语言是C++,但是项目开发却是用的Unity+C#进行项目开发。除了实验室的项目,自己也会抽闲暇时间自己做一些游戏Demo。目前想从事的岗位是游戏客户端开发工作。所以投递的岗位都是游戏开发。


二.春招之旅

完美世界(offer get)


过程:

    完美世界应该是我最早投递的公司,因为实验室有学长在完美世界工作,所以拜托了学长帮忙内推,同时我们实验室另外四个同学也一并内推进去了。与此同时我也单独投递了刚从完美世界分出去的祖龙工作室。只不过之后再也没有了消息,可能是简历被刷了。
    之后完美就开始了内推笔试,不过最初我收到的笔试通知是Java的研发岗位笔试,然后拜托了学长帮忙才改回了C++。虽然说内推还要做笔试,但是看情况貌似内推笔试并不需要做选择题,只有两道编程题目,四十分钟就A完了,其他几个同学也都陆续A完了题目。基本上完美的内推笔试题目比较简单。
    过了一周之后,我的实验室两个同学(张,韦)都收到了面试邀请。然后我和我另外两个同学(唐,李)一直也都没有消息,中间我也一直在微信群让HR帮忙查看笔试结果,也得到的消息是笔试通过但是没有面试安排。没办法也就只能一直等直到去面试的两个同学回来了之后,我的另一个同学(唐)也收到了面试通知,当时我就拜托通知这个同学的HR帮忙查看我的情况,也没有得到什么重要信息。其实,当时已经要放弃了,因为已经要开始网申的笔试了,内推的面试流程基本都走完了。
    网申笔试前一天下午,突然接到了北京的电话,完美HR通知去北京面试,真的感觉是从人生的大落到大起。根据HR的描述是我和最后一个同学(李)的简历被分到一个项目组,那个项目组出了点问题暂时没收简历。因为我前一天拜托通知我同学(唐)的HR帮忙查看我的情况,然后这个HR就把我的简历从那个项目组捞了出来。所以我就这样复活了。
    星期二通知,星期六面试。当天下午,我和同学(唐)一起去面试,因为我们是同一个项目组的缘故吧,HR是同一个。两个人被拎到一个小房间,过一会儿又把我同学拎走了,再过一会儿面试官就进来了。然后前前后后问了一些问题,自己感觉答得并不是很好,因为感觉面试问的东西并不是我特别擅长的,包括C++和数据结构算法都没细问。面试完了跟面试官闲谈的时候才知道这个部门主要是做服务器方向的,所以以后进来要做服务器相关工作。之后,在房间等了半个多小时,我同学也进来了。之后,HR就进来发了口头offer,交谈了实习薪资、待遇、时间等情况。就这样基本上第一枚offer到手。

完美面试问题:

1.C++从源代码到可执行文件经过了哪些过程?
2.动态链接库和静态链接库的区别?
3.函数传参有几种方式?传引用和指针有什么区别呢?
4.删除单链表的某个节点?拓展:不允许判断头节点。
5.Linux熟悉吗?
6.C#你熟悉吗?
7.你感受最深的项目是?在项目中你觉得最难的部分是?
8.ISO网络模型有几层?每层是什么?分别作用?
9.TCP三次握手内容?四次挥手内容?TIME_WAIT状态的作用?
10.谈谈你对OO的理解?
11.设计模式了解过吗?举例几个?
12.手写一个C++单例Singleton模式?
13.知道什么是控制反转吗?简单讲一下?
14.如何只用减法实现乘法?
15.只遍历一遍找到数组中次大值。

感悟:

自身方面来说,第一次面试,加之又是自己想去的比较好的游戏公司,所以真的很紧张!!
面试方面来说,可能是我们投的都是客户端,面我们的是服务器,所以面试中也没有太多涉及到服务器的知识,而多是在基础上。不过总体而言来说完美的面试比较顺利的。但是据我说知,之前两个去面试的同学的问题并没有这么简单。所以,有的东西还是要看项目组。


360(offer get)


过程:

    360这个公司其实当时也是没打算投的,毕竟感觉跟游戏沾不上边。不过当时我也正处于完美笔试了没结果的时候,害怕最后找不到实习工作,所以也就病急乱投医。当时跟着同学投了360,投的时候发现360也有游戏岗位。所以也就投了360的游戏开发岗。
    我同学是第一批笔试的,讲真360的笔试题目真的很难,选择题40道涵盖面很广(操作系统,win32编程,概率论,设计模式,C++,计算机网络,数据结构,数据库)。然后就是3道编程题目。然后我第二批做的,因为笔试完360之后,已经收到了完美的offer。所以结果也没太放在心上,不过最后笔试过了,通知视频面试。
    视频面试三轮,两轮技术一轮HR,基本上360的视频面试都是按照套路来的(C++、数据结构、算法、操作系统),加之我已经拿了offer心里也没多大负担,所以整个面试过程都比较轻松。HR面的时候基本上就是聊聊人生聊聊家常。

360面试问题:

一面 30min

1.拷贝构造函数在什么时候会被调用?
2.i++和++i的区别
3.模板的特化和偏特化?
4.解释一下函数对象?
5.模板有什么好处,有什么缺点?
6.你了解哪些智能指针,都各有什么用处?
7.谈谈什么是贪心,什么是动态规划,区别?
8.求一个数组的最大子区间和
9.什么是虚拟内存,什么是物理内存
10.windows下的消息机制
11.多线程下的消息同步
12.多线程中的资源如何管理,写过线程池吗?

二面 30min

1.写一个类的构造函数、拷贝构造函数、析构函数、赋值运算符。
2.基类析构函数是否设置为虚函数问题
3.在继承体系下析构函数顺序
4.C++的多态实现?(虚函数表那一套…)
5.项目相关问题。
6.如何编程,计算类似于1*3+(5-3)/2-4这样的表达式的值
7.谈谈你了解的最短路径算法
8.如何最快求2的8次方。

HR面 30min

闲聊~~

感悟:

360面试的问题相对就比较套路了,也基本上是按照我简历上熟悉程度来问的,所以技术面的时候比较顺利也很轻松。


腾讯(offer get)


过程:

    其实最开始根本没敢想过会进腾讯霸霸这样的巨头,不过肯定是会投的。腾讯的笔试题目比较中规中矩吧,前面十五道(或者二十)选择题,然后后面两个问答两个编程题目,基本上难度适中。
    然后就收到了面试通知,地点在西安,然后又请了一周的假期去西安。腾讯面试比较坑的一点就是一二三面不是当天解决,而是根据面试点应聘人数可能要间隔一天。也就是这样我们在西安呆了五天(钱要被旅店烧光了啊啊啊啊)。
    第一天,一面面试官人还是比较亲和的,从C++到操作系统,再到游戏、设计模式、项目、图形学。方方面面都涉及到了的。最后面试官给予了比较肯定的评价也给我指导了一些。
    第三天,二面就很迷了,进去就是做一道数学题(对没错,就是高中那种数学题,还要分类讨论的那种)。然后基本上剩下的时间就是聊一些不痛不痒的问题,面试过程自己真的感觉及其难受,就是害怕被挂掉。面试完了自己也觉得自己估计gg在二面了。同行同学面完中午就变了状态,自己一直到下午两点没动静。所以,下午跑去网吧玩了一下午游戏。到了晚上状态也没变,当时在群里也遇到一个哥们跟我情况很像,我们两个一面二面面试官都是同一个,而且面试情况超级相似。我和他状态都没变,想的是估计都挂了。当天晚上就早早睡了,第二天六点起床,拿出手机就收到了他发来的消息说他挂了。然后,当时心里咯噔一下,想着自己估计也挂了。打开微信查看了自己状态发现已经到了HR面试中,真的当时感觉就是地狱到天堂。因为真心觉得自己二面表现一般。当天下午我们就面完HR,然后晚上就坐车回学校了。

腾讯面试问题:

一面 52min

要求用数组或者vector实现循环队列,接口有,pop,push,size,empty,full。
这个循环队列在多线程下会有哪些问题?什么情况下会发生这些问题?如何解决?
互斥锁为什么能避免这些问题的发生?
map和hashmap的底层实现?对比红黑树和hash表?
虚函数机制。
虚函数表相关的问题,存储位置、表大小等等。
虚函数机制带来的开销有哪些?
操作系统在运行一个程序背后会有哪些流程?
进程状态,调度转换等等。
在程序中栈的作用,函数调用中栈过程
项目相关问题
一个游戏在你看来可以分为哪些模块?
在这些模块中,设计模式又可以做哪些的应用呢?
固定渲染管线中有哪些比较重要的变换?
投影变换如何实现的?

二面 27min

一来就是一道数学题,两个圆分别位于(P1,P2)速度为(V1,V2),半径为(R1,R2)求相遇时间。
你玩哪些游戏?
在一个游戏中如果你感觉到不流畅可能是哪些原因造成的?
在没有任何测量工具下,在游戏中如何判断是由于网络原因还是性能原因(肯定面试官不会让看Ping和FPS值的)?
你了解哪些游戏引擎?你最熟悉哪个?
你说说你最了解的引擎的优点和缺点?
你最近在学哪些技术?
为什么你会学c++11这些东西而不是学习unity相关更深入的知识呢?
你觉得你的技术薄弱点在哪些地方?

HR面 27min

闲聊ing。

感悟:

腾讯IEG面试可能的安排是在第一面考察个人的全方面基础,二面可能就是考察个人的综合素质。而且还有个问题就是如果现场面试,特别是游戏开发,有个人的demo是比较好的。因为腾讯一面和HR面试都玩了我做的一个游戏。很多话题也是通过这个游戏来进行开展的。


网易雷火(offer get)


过程:

    其实网易雷火算是我做的最好的一个笔试之一吧,只有四道编程题,然后A了3.9道。一直迟迟没给通知以为挂掉了,后来突然短信通知笔试过了,安排电话面试,就在360面试的第二天。
    网易雷火一面面试官人真的超级好,很亲和。面试过程及其放松,聊得也比较开心。当天晚上面试官就加我微信,通知我电话面试过了。
    然后,之后就是长达半个月都沉默,一直也没有给通知。中途问了一面面试官,说先开始的现场面试,然后远程面试的同学可能要推迟一段时间。
    直到腾讯面试完之后,其实面试完腾讯,因为腾讯HR说下周之前会给消息。基本上我就在等腾讯消息,也没有太多关注网易这边的消息了。然后就在这时候临时通知网易雷火现场面试,真的当时心都快碎了,因为网易雷火是周二通知的,然后周四就要杭州现场面试,而我是在四川,就只能坐飞机去。这个时候又在等腾讯消息,所以内心的状态就是如果收到腾讯的offer就不去了,但是如果不去了腾讯又挂了就很亏。所以,最后还是买了飞机票准备去网易雷火。然后就在途中收到了腾讯HR的offer。已经走了一半了,所以最后还是决定把网易雷火面完。
    面试当天来到网易大厦,真心被网易的工作环境折服。不能用很好形容,只能用非常好形容。首先来了两个面试官,同时面,一个面试基础,一个面试游戏相关设计和算法。最后面试官问我什么时候来实习,我当时就直接表明我已经拿了腾讯的offer,也就是不用继续面了吧。然后,HR过来跟我说,我这情况比较特殊,所以无论我今天过了就当场给offer,然后让我自己做选择。所以,就开始了第三轮技术面,这次也是两个面试官,看年纪感觉资历很老,至少是技术总监级别。其实真心第三轮面试自己答得并不好,有的东西自己也不懂。但是最后hr还是通知我拿了offer希望我自己做一个选择。

网易雷火面试题目:

一面 45min

1.C++虚函数机制(虚函数表那一套)
2.C++析构函数可以申明为虚函数吗?构造函数可以申明为虚函数吗?
3.C++static的作用
4.项目,主要讨论之前我做的一个小游戏用的战斗框架FSM+GOAP。
5.谈谈你对MVC的理解
6.GOAP和FSM或者BT的区别?好处?坏处?
7.STL的map的实现
8.如果让你自己做一个俄罗斯方块小游戏,你会如何设计
9.如果让你实现word里面的撤销功能,你会如何设计
10.你所知道的排序算法、其时间复杂度和稳定性?
11.可以实习时间..
12.平时玩的游戏..
13.你希望做PC端游还是移动端手游?

二面 40min

1.进程有哪些调度算法,算法流程,各自的优缺点?
2.死锁
3.为什么要进行字节对齐?
4.手写代码strncpy,从源字符串拷贝n个字符到目标字符串(char* s1,char* s2,size_t n)
5.以上题目,如果考虑s1,s2区间有冲突怎么办?如果不开辟新内存怎么解决这个问题?
6.虚函数相关问题,以及带来的开销?
7.FSM的相关问题,结合项目相关的一些问题。
8.std::map的实现
9.std::sort的实现
10.如何判断两个轴平行的矩形是否相交?
11.在游戏中,假如在一个很大的游戏地图上,有障碍,如何实现近似的最短路径,也就是实现游戏中的自动寻路的效果。可以预处理,但是在每次寻路要求寻找结果的算法尽可能的快!
12.使用过脚本语言吗?
13.了解过渲染管线相关知识吗?

三面 30min

1.聊项目
2.unity中animator相关的问题,比如mask,layer,base machine,IK等等。
3.聊draw call以及相关优化问题
4.聊渲染相关问题,比如游戏中的阴影是如何实现的
5.写过 unity 的 shader 吗?
6.用过哪些unity 的组件、插件
7.使用的UGUI还是NGUI?
8.如果我们也给你offer,你会在哪些因素上考虑如何在腾讯offer和我们公司offer上取舍?
9.客户端和移动端有倾向吗?

感悟:

可能是由于网易雷火这边大多项目都是用unity的缘故,所以面试有一定比重的unity问题。
游戏大公司都比较看重你在游戏方面的兴趣爱好和开发能力,所以面试的时候能带去一款你的游戏肯定是会加分的!!


三.结语

最后选择了腾讯IEG的offer,恩,其实在腾讯和网易雷火的offer纠结了很久。包括选择了最后自己也不是很清楚为什么就选择了腾讯。网易雷火的HR真的超级nice,即是最后婉拒了,还是很耐心的打电话挽留。但是,我已经接了腾讯的offer,不好再回绝。所以在电话里也不好意思拒绝HR,只能后面找机会在委婉拒绝了。
其实讲真,腾讯IEG和网易雷火没有绝对的谁好谁坏。可能由于个人种种原因选择了腾讯。(PS: 网易雷火的待遇超级好!谁去谁知道)


四.其他面试经历

还投过阿里和网易云音乐,网易云音乐笔试没过直接GG,阿里在二面的时候婉拒了面试官,不准备继续面试了。毕竟,面试我的是Java后台的组,一面二面过程中聊得也极其尴尬。


五.个人学习经历

1.数据结构算法:ACM待过一年时间,刷题大概800+左右,水题居多。区域赛铜牌。

2.C++:看过<C++ Primer Plus><C++ Primer><Effective C++><深入探究对象模型><STL源码剖析>

3.Unity : 一抹多视频教程+项目中的经验积累吧

4.剩下操作系统、计算机网络等基础就是课本上面的内容。




要开始准备秋招了,感觉春招的结束才是战斗的开始,希望大家都能在秋招收获到自己满意的offer



天道酬勤,勤能补拙!


后续 :

秋招拿了网易互娱、多益网络的游戏客户端开发Offer。
最后选择留在腾讯。


远方的硝烟刚刚散去,耳旁又想起战斗的号角!

  • 28
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
C语言面试八股文是指在春季招聘中常见的C语言相关的面试题目和知识点。下面是一份常见的C语言面试八股文,供您参考: 1. C语言的基本数据类型有哪些? C语言的基本数据类型包括整型、浮点型、字符型和指针型。 2. 请介绍一下C语言中的变量和常量。 变量是用来存储数据的内存位置,可以通过变量名来访问和修改其值。常量是指在程序执行过程中不会改变的值。 3. 什么是数组?请介绍一下C语言中的数组。 数组是一种存储相同类型数据的集合,通过索引来访问数组中的元素。在C语言中,数组的大小在定义时就需要确定,并且数组的下标从0开始。 4. 请介绍一下C语言中的指针。 指针是一个变量,其值为另一个变量的地址。通过指针可以直接访问和修改内存中的数据。使用指针可以提高程序的效率和灵活性。 5. 请介绍一下C语言中的函数。 函数是一段完成特定任务的代码块,可以通过函数名来调用执行。函数可以接收参数并返回一个值,也可以不接收参数或不返回值。 6. 请介绍一下C语言中的流程控制语句。 C语言中的流程控制语句包括条件语句(if-else语句、switch语句)、循环语句(for循环、while循环、do-while循环)和跳转语句(break语句、continue语句、goto语句)。 7. 请介绍一下C语言中的结构体。 结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。通过结构体可以将多个相关的数据组织在一起。 8. 请介绍一下C语言中的文件操作。 C语言中的文件操作主要包括打开文件、读写文件和关闭文件。可以使用标准库函数来进行文件操作,如fopen、fread、fwrite、fclose等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值