字节跳动游戏研发面试(已拿正式offer)
一面
1. 上来一个随和的小哥,闲聊 & 自我介绍
2. C++、C#语法基础相关,略
3. C++虚函数表,C#委托与事件
4. 介绍一下C#的GC,这个好久之前看过。底层相关算法了解过吗?没。
5. 学习的DX,万年不倒的渲染流水线,还顺便说了一下和Unity中的区别,看着面试官点头,心里笑容逐渐变态
6. 光照在哪里实现,像素着色器;顶点着色器实现光照会怎么样,边缘锯齿
7. 透明物体要注意什么,渲染顺序
8. Draw Call优化方法,批处理万年不倒
9. 多个物体实例化,材质不同,龙书16章原始案例,膜拜龙爷
10. 边缘检测,Sobel算子
11. Unity项目闲聊
12. Unity的携程
13. Unity碰撞检测,还有一堆细节,都不难
14. Unity模型资源,模型动画
15. 常用数据结构,忘了怎么聊的,反正聊到了树
16. 二叉树、四叉树、八叉树的应用,龙书谢谢你,再次膜拜龙爷偶像
17. 二叉树的实际应用:emmm,堆,然后堆排序吧
18. 红黑树、平衡二叉树,优点缺点复杂度
19. 动态规划和递归,递归的缺点
20. 操作系统相关的,进程线程的区别,多线程什么的,顺便说了一下多线程模拟异步API
二面
1. 这个面试官很直接(不那么随和),C++和C#模板的区别,底层怎么实现的
2. 做题,给定一个字符串input 分割符split 索引index,输出字符串经过分割符分割后指定索引的子字符串
例如 a:bbb:cccc 经过 : 分割后 0输出a ; 2输出cccc ; 3输出null
string Extract(string input, char split, int index)
3. TCP三次握手怎么理解的
4. MVC怎么理解
5. UGUI消息传递机制(简历写的研究过UGUI源码)
6. 开发一款单机游戏和网络游戏的象棋,它们会有哪些差别
7. 常用设计模式举例
8. 这个项目中你最…….的是…….,简单说一说
9. 然后闲聊一会儿
三面
1. 这个大叔和我聊得很多,答得感觉不是很好
2. C#的List和Dictionary的底层了解过吗?没,我根据C++猜测,List应该和vector一样,Dictionary应该是红黑树或者哈希表
3. D3D渲染流水线(又来一次),但是这次有点专业的东西,如下
4. 深度测试一定是在输出合并阶段吗?突然有点懵,但是突然想起龙爷说过有提前深度测试,还有乐乐姐说过的IOS设备的基于瓦片的延迟渲染,我就说了一下现代硬件会有提前深度测试
5. 卡通着色接触过吗?渐变纹理+半兰伯特光照+描边
6. 描边算法接触哪些吗?1. Sobel算子边缘检测;2.基于深度纹理和法线纹理,根据灵敏度和差异确定边界
7. 这些描边都是基于屏幕后处理的,有没有其他的?背部顶点法线扩张
8. 那如果是透明物体描边呢?3个Pass,第一个反正深度写入;第二个正面渲染;第三个背部顶点法线扩张
9. 3个Pass消耗太大了,有没有更好的方法?想了一哈儿,用一个模板缓冲
10. 不用模板缓冲可以吗?我。。。emmm。。不会了
11. 开放讨论,一个大地图和一堆NPC什么的,讨论了很久,感觉答得不太好
12. 闲聊+问题