游戏开发社招求职面试指南①——前期准备

前言

先说一下我的情况吧,我是985本科,大学学的是天坑专业机械制造。后来自学编程进入游戏行业,有三年左右的工作经验,一直在小公司工作,岗位是客户端开发。在今年上半年到年底,一边在职一边寻找合适的机会跳槽。到我写这篇文章的时候我面试了差不多六、七家公司。这几家公司按照面试顺序分别是:米哈游、心动、b站、凉屋、网易、腾讯、番糖。最后拿到了一半的offer,包括大厂的offer。
鉴于网上的社招面经实在太少,大部分也只是停留在面试题的总结。而面试题这种东西,不同公司不同面试官考的题很可能是不一样的。但是面试官出题思路是有规律可循的,只要知道了出题思路就能在面试前预测出对方可能会问的问题,提前做好准备面试就能万无一失。
我这个系列文章会从前期准备公司选择面试总结三个方面来分享我大半年来的求职经验。
第一篇文章的主要内容是平时的积累、基础的巩固以及简历的撰写


平时的积累

首先要知道的一点是,要想拿到满意的offer需要的是长期坚持的努力。首先,平常工作中要经常总结自己遇到的问题并记录。我会把这些东西分类并经常整理,下面是我笔记的部分截图。
在这里插入图片描述

当然只专注自己的工作内容范围是肯定不够的,因为每个人的分工不同,如果只做自己擅长的事情长久以往你掌握的技术会越来越窄。所以接下来要做的就是看同事的代码。不仅能学到他们的技术,还能知道他们写的好或者写的不好的地方,有助于帮助你了解整个项目,日后改bug或者添加新功能也能更加得心应手。
看了一段时间以后,可以尝试帮同事改bug或者做他们的活。在一些小公司里,程序之间并没有特别明确的分工,如果有机会能够帮到其他同事一定要尽力去帮,可以“偷”学不少技术。像我刚来公司那会,做的都是玩法相关的业务逻辑。后来渐渐地做了一些物理、动画、AI、音频、编辑器扩展等很多方面的工作。
看同事代码会持续很长时间,直到你对整个项目的架构了然于胸,对项目的核心技术点完全掌握。掌握的程度分三个境界:

  • 知道怎么做?
  • 知道为什么这么做?
  • 知道为什么不那么做?

这也是面试官考察项目经验的主要思路。必须保证能够完美回答这三个问题。如果这三个问题答不上来的,可以去请教你的领导或者当时写代码的人。OK,接下来我以实际项目经验举例。比如我的上一个项目里使用了带预测回滚的ECS p2p帧同步方案。那么根据我们刚才提到的思路,面试官可能会问的问题会有:

  • 如何实现帧同步?
  • 为什么使用帧同步?优点?缺点?难点?
  • 为什么使用p2p不用cs架构?
  • 预测回滚是怎么做的?为什么要用预测回滚?除了预测回滚外还有什么方式可以实现不卡顿的同步?
  • 为什么用ECS?
  • 网络波动时怎么处理?掉线又怎么处理?

对于这些可能问到的问题,我会全部总结起来,每次面试之前都会看一遍。下面是我笔记的部分截图:
在这里插入图片描述
上面这个例子可能有点特殊,因为这个技术方案在国内没多少项目用过。我再举一个更常见的例子,就说lua,大家做手游搞热更,基本用的都是lua。我提几个可能会问的问题:

  • 为什么用lua?lua跟其他热更方案比,有什么优缺?(比如比较lua和ILRuntime)
  • 用的是xlua还是tolua还是其他方案或者自己写的?理由是?
  • lua和c#之间是怎么交互的?
  • 使用lua需要注意什么问题?

也许有人可能会说,这些问题都是主程考虑的,我就是个搬砖的,想这些干嘛。没错,想这些问题对你目前的工作内容可能并没有什么帮助。但是,如果你想往上走,想升职加薪,你就要从比你目前的职位更高的角度去看待问题。应付面试我倒是觉得反而是顺带的。
如果项目处在比较早期的阶段或者项目没有什么可以学习的技术亮点,一定要利用下班时间自己找学习资料学习图形学、引擎底层、性能优化等都是不错的方向。


基础的巩固

经过上面的阶段后,面试时问到项目相关经验可以说已经没有问题了。剩下的需要准备对基础知识的考察。对于这部分知识,有些工作几年的人反而比应届生还答不上来。这部分包括:

  • 语言基础
  • 计算机组成原理
  • 算法数据结构
  • 图形学基础(这个是因为我简历上有写,如果没写可能不会问)
  • 网络协议

基础知识的考察很多都是固定题目,上网能搜到很多,这部分最好都背下来。下面总结一下我被考察到的知识点(仅供参考,千万不要只复习这些内容):

  • 语言基础:引用类型和值类型GC算法字典的实现原理Lua和C#交互原理(《Lua程序设计》第24章到第28章),为什么要拆箱装箱堆和栈
  • 计算机组成原理:虚拟内存和物理内存动态链接库和静态链接库内存对齐浮点数表示多线程。(这些基础的东西大厂比较爱考)
  • 算法数据结构:topk问题排序红黑树和B树(这个很偏了,不会也没有关系,但是二叉搜索树还是得会的),数组和链表复杂度分析用栈实现队列
  • 图形学:渲染管线空间变换矩阵shader优化
  • 网络协议:比较TCP和UDP为什么TCP要三次握手及为什么四次挥手如何实现可靠有序UDP(TCP和UDP几乎是必考的)。

答案我就不分享了网上都能搜到,要全部写完的话太多了,如果这系列文章看的人比较多的话我后面再单开一篇文章回答这些问题。

这里我推荐一些可以巩固基础的学习资料:

这里我再提一下算法和数据结构这东西,很多人喜欢去leetcode上刷大量的算法题。我的建议是针对社招来说,完全没有必要刷题。对于有工作经验的人来说,项目经验的考察比算法数据结构重要的多,有些面试官甚至只考察项目经验。可以看看我在leetcode上做的题目只有这么一点点:
在这里插入图片描述
算法数据结构只需要把我上面说的资料看完就够了。题刷太多反而没有用。


简历的撰写

简历该怎么写网上一搜一大把,我能讲的东西不多。不过还是有几点要注意一下:

  • 简历内容控制在1到2页,使用pdf格式,注意排版美观。要有条理分12345,不要挤在一块很难看
  • 有博客或者开源项目的话要放上去
  • 没用的东西不要写,没人关心你的兴趣爱好和自我评价
  • 对于你的工作内容,需要言简意赅。完全由你负责的写“负责”,只参与一部分工作写“参与”(这样就算问得特别细你也可以说这部分不是你做的)
  • 简历上最好要有你的技术亮点
    • 比如使用了xxx算法、xxx数据结构、xxx设计模式、xxx架构
    • 实现了xxx,带来了xxx好处或者解决了xxx问题

下面是我的简历部分截图:

  • 工作内容部分:
    在这里插入图片描述
  • 技术亮点部分:
    在这里插入图片描述

第一篇文章内容大概就到这里了,第二篇文章我会对市面上的各种公司进行简单的分析,包括哪些公司值得去,哪些不值得去。

关于作者:

  • 水曜日鸡,简称水鸡,喜欢ACG的游戏程序员。曾参与索尼中国之星项目《硬核机甲》的开发。

CSDN博客:https://blog.csdn.net/j756915370
知乎专栏:https://zhuanlan.zhihu.com/c_1241442143220363264
游戏聊天群:891809847

Guess you like

Origin blog.csdn.net/j756915370/article/details/109688883