简介
一位好友在西安某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++
必不可少;最好做一些和图形学相关的项目;
平时刷题时,首先保证要提交通过,其次需要考虑优化。例如插入数据时先考虑数组,其次链表,二叉树,这样也可以帮助自己理清各个数据结构的优缺点;
一面主要还是以理论为主,但不可放松对编码能力的训练;
最好准备两套回答问题的模板,一套用于回答自己擅长的问题,另一道用于回答自己不擅长的问题。