不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

一位朋友面试字节跳动游戏开发岗经验

简介

一位好友在西安某211读研究生,主攻图形学方向,下面是他面试字节跳动游戏开发岗的流程。

一面

注:此处略去有关项目经验的问题。

  • C#接口、抽象类的区别

  • 学习Unity的途径和方式

  • 面向对象中class和struct的区别

  • C#的垃圾回收机制

  • 引用类型、值类型和内存分配

  • 堆和栈的区别

  • C++多态、虚表

  • list和vector的区别

  • 为什么数组插入数据效率慢,而链表插入数据效率快

  • 使用链表插入数据的过程

  • 检查一个链表是否形成环路的方法

  • C++:Map和Hash Map的区别_对应_数据结构:红黑树和Hash Map的区别

  • 哈希表的原理

  • 模板测试和深度测试

  • 场景题:在游戏中,怎么判断一次AOE攻击有没有命中这些单位

  • 什么叫世界坐标转为局部坐标

  • 进程和线程的区别

答疑:

  • 怎么系统学习渲染?
    OpenGL是一个很好的切入点,然后看一下《Real-Time Rendering, Fourth Edition》

  • 贵公司的游戏部门2018年新成立,请问做游戏的类型有哪些?
    北京、杭州、广州、上海都有研发中心,有轻度、中毒、重度游戏,合作发布会多一些。

  • 游戏引擎开发的学习路线
    语言层面:引擎源码需要熟悉,还有C++;其次是渲染,就是读一下《Real-Time Rendering, Fourth Edition》

小结

大概40分钟的面试,问了C#C++基础+数据结构+网络,然后是图形学方面的问题。总的来说我个人觉得这位面试官非常和蔼,即使他不知道为什么链表插入效率快,但会通过让他思考链表的插入方式对比数组的插入方式,从而得出链表插入快的结论(虽然到最后这层窗户纸还是没有捅破)。接着便问了很多语言特性和项目上的问题,答疑阶段也给了一些书籍和技术指点,总之给我带来的启发就是:

  • 如果要走游戏引擎开发,C++必不可少;

  • 最好做一些和图形学相关的项目;

  • 平时刷题时,首先保证要提交通过,其次需要考虑优化。例如插入数据时先考虑数组,其次链表,二叉树,这样也可以帮助自己理清各个数据结构的优缺点;

  • 一面主要还是以理论为主,但不可放松对编码能力的训练;

  • 最好准备两套回答问题的模板,一套用于回答自己擅长的问题,另一道用于回答自己不擅长的问题。

------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!