热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

应届游戏开发求职路

“不拼搏,枉少年!”—网易游戏写在前面:先介绍下自己的情况,末流985大学本科生一枚,全院人数200+,我的成绩排名在170左右(校招开始的时候仍有一科挂在树上,

 

“不拼搏,枉少年!”网易游戏

写在前面:先介绍下自己的情况,末流985大学本科生一枚,全院人数200+,我的成绩排名在170左右(校招开始的时候仍有一科挂在树上,现在已经补考过了),英语4级。侥幸获得了几个游戏公司的offer,最后和网易游戏签约。“游戏”陪我走过了人生中最值得回味的时代。懵懵懂懂的童年,在面对这个复杂缤纷的世界,游戏成为我了解这个世界的窗口。《魂斗罗》,让我知道了什么是“合作”;《赤色要塞》,让我明白了什么是“任务”;《超级马里奥》,然我知晓了什么是“责任”……有太多的游戏,太多的记忆。游戏为我打开了一扇大门,一种新的方式去看待世界。正所谓人生如戏,只是我们没有机会重来。所以我很热爱游戏!

废话到此为止,写这篇日志之类的东西,是为了分享游戏求职经验给学弟学妹们(响应某人的号召,哈哈),攒RP用的。

前期准备

按照惯例,各大IT公司会在大三下学期开展暑假实习生的招聘工作。这对要找工作的同学来说是很重要的,即使将来你不在你实习的公司工作,这实习经历也会给你加分的。有的学校会统一安排学生去某公司实习。如果你让你的简历更好看一点,那么去著名的IT公司实习是个不错的选择,传说中的BAT(百度、阿里、腾讯)。当然如果实力够强大,微软、GoogleFacebook之类的国际大公司更好。在实习招聘过程中,你还能锻炼各种技能。这些技能在以后的应届生招聘中也有好处。前提是:你要有清晰的目标。你要有清晰的目标(工作岗位、工作内容、自己擅长)。你要有清晰的目标。你在实习之前了解自己的兴趣点是最好的,然后又针对性的复习知识,这样会更有效一点。当然,实习还没目标的同学也不用担心,你可以一边实习一边找感觉。但是在应届生招聘的时候,你就要做出选择了。

请用半年的时间来面试自己。如果你不知道自己努力的方向,企业的招聘要求是一个很好的参考。相信大家对应试考试已经能够应付自如了,这里的招聘要求就是一个大纲之类的东西。从它你能知道企业希望你能有什么样的技能,接下来的,就是努力了。在知乎上我看到过一句话觉得很不错,“以大多数人的努力程度之低,根本轮不到拼天赋”。下面是网易游戏的招聘要求。


  第一条学历这种硬性条件我们可以忽略(本科也行,只要你达到我的要求)。网易要求你精通C++(要求应届生精通,这绝对是HR写的),很明显他要求你的C++能力要达到一定的水准。一般来说,你把C++ Primer》《Effect C++这两本书啃透,在面试上就不会有太大的问题。面试官也不会期望一个应届生能够“精通”C++。要对自己有信心,这很重要。接下来,你要熟悉数据结构、算法和操作系统。一般来说CS专业相关的专业学生都会学习这方面的知识。但是不要以为这样就行了,学了和会是两个概念。码农应有的觉悟就是要动手写代码。对于操作系统,课件就足够了。对于数据结构和算法,这需要真正的动手去写代码,动手去写代码,动手去写代码。《算法导论》你能啃多少是多少吧。对于非ACMer的学生来说,练习码代码的能力显得尤为重要。线上的OJ系统是个不错的选择(著名高校OJ,我就不明说了)。对于找工作的人来说,还有一个很棒的练习网站LeetCode。这上面有很多公司的面试、笔试题(我遇到过原题)。我们不要期待原题的出现,更重要的能力、思维的提升。在暑假我在上面刷了200题,收获颇丰,见识了不少好的题目和解题方法。这个网站是面向全世界的,所以有很多程序员在上面练习,他们会给出很多让人感到非常精妙的方法解题。至于后面的几点,这就需要通过一些事来体现了。比如你在学习、项目过程遇到过什么困难,你是怎么想的,你是怎么解决的?所以,好的项目经验也很重要。

      关于项目,对于大部分本科生来讲是可遇不可求的。但是我们不能坐以待毙,没有项目,创造项目也要上!针对游戏,尤其如此。你说不会美术,网上的素材很多;你说你怕侵权,仅供学习之用(不用发布出去);你说你不会做游戏,学啊!Unity3Dcocos2d-x这么好的游戏引擎。不要在乎你自己做的项目有多小,感觉多幼稚,你已经比那些没有的人领先了。路漫漫其修远兮,上下而求索。

      接下来就是加分项,针对游戏,那自然是程序员的三大浪漫之一的图形学了。没有捷径,啃书+写代码。其实我觉得《OpenGL 超级宝典》、《游戏引擎架构》、《3D游戏编程大师技巧》这些书还不错。

校招前最后一搏

      我假设你基础已经准备好了,在真正去面试之前,你没有实战经验,怎么办?高考之前我们还有往年考题、模拟题呢!没错,就是练习重点练习高质量企业的往年笔试、面试题。从这些题中,你可以检查你知识点中的不完全的地方。以及企业喜欢检查的知识点有哪些。你就可以针对性复习了。这个时候如果你有大面积的知识点不会,那么就是你前一个阶段做得不好了。这个时候只能通过一些临时抱佛脚的方法来弥补了。详见《剑指offer》《程序员面试指南》之类的书籍。

笔试

      笔试的成绩也是很重要的,不要忽略。对于微软、网易游戏这类公司,就靠难题来刷人。所以大家一定要做好准备。至于有多变态,大家可以去这个网站(www.hihocoder.com)看看。网易游戏和微软的招聘的笔试都在这个在线平台上。下面截图是2016校招的笔试的一些情况大家可以了解下。从这些中数据我们可以直接看出一道题的难度。通过率:50%-100%难度为易,30%-50%难度为中,10%-30%难度为难,0%-10%难度超难。微软笔试题为2个半小时,网易游戏为3个小时。大家可以自己去试试。

  其他公司的笔试题我就不赘述了。总结:练、练、练。

面试

  总的来看游戏公司对计算机基础知识,比如计算机网络,操作系统,数据结构和算法,程序的链接装载等等都会有不同程度的考查,另外就是对C++要相当熟悉。而二面的时候又会考查一些常见的游戏算法,对游戏引擎的使用和图形学基础并没有严格的要求,不过有基础的话更好。

下面是我在面试游戏公司过程中遇到过的问题,我不会给出答案(没有标准答案)。

C++

  • inline关键字是做什么的?具体说说?会对目标代码造成什么影响?它和#define 这个宏定义有什么区别?
  •  什么是多态?多态在C++中是怎么实现的?说说在C++中重写、重载和覆盖的区别。
  •  在C++中和CStruct的相同和不同点。
  •  什么是虚基类?有什么用?
  •     C++智能指针有哪些?说说他们的区别,是怎么实现的。
  •  说说你知道的C++容器。vector这个容器是怎么实现动态扩容的?
  •     extern 这个关键字有什么作用?
  •  说说CC++强制转换有什么不同?为何?
  •  如果你来实现move函数需要注意些什么?

网络:

  • 简述TCP/IP协议的连接和断开状态转移。
  • TCP_NODELAYTCP_CORK这个两个选项有什么用?有什么区别?在什么情况下我们会设置这两个选项?
  • Socket Server端的流程是怎么样的?什么是阻塞和非阻塞?selectpoll的区别?
  • 你知道哪些通信协议可以被利用来DDoS攻击?

算法:

  • 将一个字符串转化为int类型(这里面陷阱很多,在面试时需要和面试官多沟通)。
  • 如何快速查找40亿数据中的那些重复数据?
  • 如何快速查找100万数据的最大的100项,常量空间?
  • 怎么快速删除一个数组中的为0的项,常量空间?
  • 在一个数组中保存的都是整数,只有一个数字出现的次数为一,其他数字出现的次数都为2,怎么快速找出这个只出现一次的数据,常量空间?要是其他数字都出现了3次,4次呢?
  • 现在我们要做一个登陆排队系统,你会怎么做才能使这个系统高效呢?要是这个系统可以让VIP用户排到前面呢?需要在这个系统中快速查找一个用户,我们使用什么样的数据结构才能满足以上要求?
  • 你知道哪些自动寻路算法?BFSA*有什么异同?在什么情况下A*BFS一样了?

游戏相关:

  • 简述OpenGL的渲染流程。哪些过程是可以编程的?
  • 在很大的场景中,有什么优化碰撞检测的方法?写一下空间八叉树的两个子叶节点的最低公共祖先的算法?
  • 普通光照模型你知道哪些?写一写?
  • 对于游戏模型的贴图,有什么优化的措施?
  • 骨骼动画是怎么实现的?你知到哪些插值方法?
  • 你在开发你的游戏过程中遇到过哪些困难?怎么解决的?

最后还有一个小问题,是我在学习过程中遇到的,给面试官讲过后,感觉不错。我曾经写过一个排序算法的演示程序,在过程中遇到一个问题,其他排序算法是自己写的,可以很容易的记录数据的变化过程,但是有关STL里面的sort这种排序算法就犯了难。大家可以想想怎么做才能知道sort内部具体是怎么排序的。

上面的那些面试题,你不要期望会遇到原题。我没有给出答案,大家如果感觉答不上来,可以问问自己是不是自己哪方面还欠缺。这些都是基础问题,答不上来就有很大可能那方面知识没有掌握好,继续努力吧。

一家之言,希望大家都通过自己的努力能找到一个好工作!

                                                 --燃灯

                                       


推荐阅读
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • 本文介绍了Java的公式汇总及相关知识,包括定义变量的语法格式、类型转换公式、三元表达式、定义新的实例的格式、引用类型的方法以及数组静态初始化等内容。希望对读者有一定的参考价值。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 给定一个二维平面上的一些点,通过计算曼哈顿距离,求连接所有点的最小总费用。只有任意两点之间有且仅有一条简单路径时,才认为所有点都已连接。给出了几个示例并给出了对应的输出。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
author-avatar
菜鸟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有