腾讯光子游戏客户端开发公开课以及实习生面试凉经
第一次和大厂打交道,浅浅记录一下吧
公开课笔试
因为是大二下报名参加了腾讯游戏开发公开课,所以当时递完简历之后还需要笔试一下,是在牛客网进行的笔试,时间好像是一个小时,笔试时间刚好卡在期末周,不够友好。实话实说,单选和不定项选择基本都是些完全没见过的知识(可能是c++),经过一番瞎蒙之后,来到了代码题,有两个题目,看起来像是ACM的题目,没有上过算法课,也完全没有思路,还剩半个小时就直接交了空白去复习期末去了,没想到也能过,好像说是因为怕有些人不适合应试笔试所以比较松。
公开课面试
本人第一次面试,准备了一些数据结构的知识,排序什么的本身学的不扎实,更加都忘光了。面试官挺和蔼的,大概问了关于:
快排怎么运作的,描述一下(刚好复习到了)快排的时间复杂度(没复习到但还依稀记得,居然蒙对了)了解哪些其他的排序方法(复习到了)了解哈希表吗(没有怎么复习,就说了一点点定义)平衡二叉树(没复习,忘光了)怎么检查内存泄漏(应该是和智能指针有关,但那时候完全不知道这个东西,只说了有相关的检测软件)简历里面的项目分工、做了什么
都是数据结构的知识,原以为会问UE的知识或者unity的知识,没想到都没问,接着进入了每周一次的公开课学习。
公开课学习
总共招收了将近四百个人,分为了四个组,不知道是按照什么分的,但有可能是按照家庭所在地或学校所在地。本人进入了光子工作室所在的组,家在深圳或者在深圳上大学的有被分到我们这个组。
再一次感受到群除我佬。清华北大一堆堆,还有浙大复旦交大,还有海本的,只有偶尔几个985以下的学校(没有他们不厉害的意思,本组就有非985但非常厉害的人物)
在暑假进行了UE4的全方位学习,第一节课作业就是直接用源码安装UE4,太难顶了,一百多个G。后面学习了游戏模式、物理引擎、骨骼动画、渲染、AI、用户界面、多人联机等模块,作业也都只需要使用蓝图,不需要使用c++代码。确实是非常全面,但是要想真正学好并且应用,基本上就需要每周花费25h+的时间在上面。
各位老师也都讲的很全面,甚至和文档差不多全面的程度,并且让我感受到真正游戏开发中原来内存之类的也如此重要。课后会指定某个组交课堂笔记(但基本都是截图)到腾讯文档上,作业也都是选择性的做,并不强求,最后上传到github。最后也有一个可选择性的大作业,其实如果每节课都跟着老师做作业,大作业直接就完成了。
但感觉热情是随时间线性下降的,最后几次多出来的课堂笔记最开始说是随机抽组交,到最后就空在那里了,群里面的交流频率也从第一次作业的一天99+到后面一个星期几乎没有人说话,但仍然有几个大佬每次上课之前还预习了,能在上课的时候就提出深刻的技术性问题,佩服。
初试
公开课结束后大家都有进本组当实习生的机会,提交简历后,过了一个星期迎来了一面。
面了将近一个小时,我只是在接到电话后才开始准备八股,因此复习的不多。大概问了:
讲讲多态(讲了静态多态和动态多态,静态只说了重载)模板属于什么多态,为什么(根据上一个问题问的,我猜测是静态,但因为不理解多态区分的本质,所以原因说的不好)讲讲虚函数和纯虚函数以及虚表(经典八股)结构体中的某个元素的相对位置(?到现在都不是很理解面试官问了什么,没有答出来,可能是和后面所问的内存对齐有关)大小端存储(计组的知识,不记得了)内存对齐,给了两个结构体问所占字节大小(计组的知识,掌握不牢固,是需要有倍数关系的,但是面试官很有耐心引导我,最后我实在说不出来了告诉了我倍数的关系,并且再让我答一遍,幸好蒙对了)ftp和udp,三次握手四次挥手(计网经典知识,没复习到只用口语解释了,具体的名词忘记了,感觉面试官没有得到想要的答案,在不停追问)渲染管线(计图经典知识,只讲了纯理论的)怎么实现在图上面挖个洞(是对渲染管线的应用,不理解面试官的意思,在瞎讲,但面试官真的人太好了,在不停引导,辗转提到深度,最后说是用深度什么什么算法)怎么快速将游戏中“在线、战斗中、离线”的好友们按照状态排序(一开始以为是问数据结构,后面提到快排,又问了一遍快排的原理和时间复杂度)
技术问题就问了这些,后面聊了一下为什么选择这个岗位、能否接受9126、哪里人、在学校有什么活动(我说了实验室),当听到我接受9126和一年上班300天还把它理解为是work hard play hard的时候面试官居然笑了。
初试过我觉得纯属运气,一方面是我在搜索枯肠,不放弃的把自己肚里那仅有的墨水展示给面试官,即使明知道自己不会也根据感觉瞎说一通,另一方面是面试官很有耐心,一直在引导。
复试
看了很多面经,只有一两个面经说会问简历里面的项目,所以一直以为是和初试一样的八股文面试,没想到是一个个抠项目的经历。包括:
遇到了什么困难,怎么解决(得说一点,我说做的很顺是因为不记得有什么困难了,但感觉面试官就是要听你解决问题的过程)充当什么角色怎么分工自己做了哪些部分哪个项目最出彩,最能凸显自己的水平喜欢做游戏开发的什么部分(这里强烈建议朋友们提前了解一下游戏开发需要哪些岗位的支持,并且尽量说的时候往自己的岗位靠拢)绩点排名专业课学了哪些 数据结构:平衡二叉树的深度搜索和广度搜索(我口语化的说了一些,面试官没有追问)、快排(没错又是它,说完之后我自作聪明的说了时间复杂度,没想到反问了一个空间复杂度,忘记了)计图:怎么用一个像素点画一条直线(我只用过OpenGL的函数,但面试官说是一个计图基础的什么什么算法,我寻思我们老师也没讲啊,没听到想要的答案因此面试官就不往下问了)
很遗憾挂了,不过这也是意料之内情理之中的事。
八股可以临时准备,项目的经历不是一天就能速成的。首先项目的经历不够牛逼,没有给面试官一个“哇哦”的感觉,可能面游戏的岗位需要带一个自己在课外做的游戏作品,印象才会更深,会有更多的亮点和可以说的点(可能这个面试官有点看不上课程的大作业吧);其次需要提前了解游戏领域里面到底有哪些岗位,这样说自己擅长和喜欢的点的时候就不会说偏到其他岗位,可以更加有针对性;最后是还是要认真踏实学好知识,能记得官方词语就不要用口语解释,显得更专业一些。
功夫硬才是硬道理!