字节 智能创作 交互工程师实习 面经(已挂)
一面
- PBR的材质
- 齐次坐标。以及三种基础变换用齐次坐标的表示。
- 用后处理shader输出一个5x5棋盘格,不能用if。
- 英雄能否攻击到敌人:已知英雄位置,敌人位置,英雄攻击范围是半径为r的扇形,角度是朝向为中心的h角度,英雄朝向已知。
- 如何判断点在三角形内,除了叉乘还要更简单的方法,我猜是面积,但面积不也用叉乘求吗。
- aabb包围盒之间的碰撞。
二面
- alpha-blending怎么做。有什么其他的色彩混合的方式(指的是PS里有哪些方法)。
- 材质是什么。
- 材质球有哪些参数。
- OpenGL渲染管线。
- 后处理怎么对图像进行模糊。
- alpha-test、半透明材质、不透明材质渲染顺序。
- 算法题,随机输出1~n的序列。
- {"wall","........."} ,{"glasses", "These might help you see the answer."},{"labored", "Going slowly, is it?"},{"persistent", "Keep at it."},{"jumble", "It's what the game is all about."} 猜词游戏,前面的词字母顺序打乱。输入正确,然后输出“right”。输入“hint”,输出后面的提示。输入“quit”退出。
三面
- 为什么学校要求长期实习。
- 设计模式,主要讲了单例模式。
- 讲一下状态机。
- 模拟一个视频播放器。每个时间间隔调用一次update函数。有两个按钮,其中一个按一次1倍速播放,两次2倍速,三次3倍速,另一个则是倒放,和前一个按钮一样,按几次几倍速,最多三倍速。大体上类似于unity的模式,但是js(其实不要求运行,所以是伪代码)。已知的是视频的长度(总帧数),视频的帧率。调用play(i)播放视频的第i帧。