
把一份3D引擎开发工程师渲染方向的校招笔试题放到面前很多人的第一反应往往不是“题难不难”而是“这考点我好像都见过可真要写清楚又不太下得去笔”。搜狐畅游2019年这道渲染方向的笔试题网上讨论度一直不低但我觉得比翻来覆去核对一份“标准答案”更有价值的是题目背后那套完整的渲染知识体系。这篇文章不会去复读某一份流传的答案版本而是从这道题所处的招聘场景出发拆解渲染方向笔试真正在考什么、不同题型的应对思路是什么以及我在实际项目开发和后续参与技术面试过程中反复遇到的那些核心考点和容易翻车的细节。如果你想投的刚好是游戏引擎研发、图形程序、渲染方向相关的岗位或者已经在准备校招但面对杂乱的渲染知识不知道该从哪下手这篇文章就是给你写的。它不会替你背概念但能帮你把散落的考点串成一条脉络让你在笔试和面试里回答问题时不再是“背一句是一句”而是真正能顺着一整条渲染链路讲下去。1. 从一道校招笔试题看渲染岗真正在考什么1.1 笔试题型不是随意拼盘每种题型对应一类工作能力很多人拿到渲染方向笔试题第一件事就是看“有没有考到我背过的原题”这个思路从一开始就偏了。出题人不会无缘无故把向量叉积、渲染状态、场景优化、Shader伪代码堆在一张卷子上每一种题型背后对应的都是渲染开发日常工作中的一种具体能力。我按自己见过的题目类型做了个大致的分类你会发现它们其实和实际工作内容高度对应题型典型问法对应能力选择/填空哪个纹理格式支持硬件解码、哪个混合模式用于粒子加光概念清晰度资源与硬件特性的匹配能力简答/论述描述一个顶点从内存到屏幕像素的完整过程对整个渲染管线的体系化理解场景优化题大世界频繁卡顿、大量半透明物体排序混乱怎么处理定位瓶颈和权衡取舍的实战能力编程/伪代码写一个简单的Blinn-Phong高光或Bloom亮部提取把理论落地成可运行代码的基本功这个分类给我的启发是刷题的时候不能用同一种策略对待所有题目。选择题需要精准选项之间的细微差别往往就是开发中会踩的坑简答题需要体现“链路感”不能只回答孤立的术语场景题需要思路完整面试官更看重你如何推理而不是有没有背过最优解编程题则需要把API、数学和着色器语言的基本功展现出来。1.2 面试官最在意的基础素养从来不叫“背得好”我后来在不同场合参与过技术面试也看过不少笔试答卷。说实话分数最高的往往不是堆了最多术语的人而是那些在答案里能体现出三种素养的人。第一种是体系化认知。比如问“旋转立方体在屏幕上绘制需要经历哪些过程”基础答案会写“MVP矩阵”但更好的答案会把整条链路说完整CPU提交顶点Buffer和常量Buffer顶点着色器做坐标变换光栅化阶段做透视校正插值和裁剪片元着色器采样贴图、计算光照最后经过深度测试和混合写入帧缓冲。这个回答并不复杂但它展示了一个点能扯出一整条线的能力。第二种是推理习惯。遇到没见过的问题能不能通过已有知识推导出来而不是直接放弃或瞎猜。比如题目问“为什么草地上远处的草会出现闪烁”如果你理解Mipmap和Nyquist采样的关系就能从“采样频率不足”这个方向推理出答案。这个能力在笔试题里尤其重要因为渲染领域的题永远出不完你不可能全部背过。第三种是成本意识。任何一个渲染方案都不是免费的面试官非常在意你有没有主动思考“这个方案要付出什么代价”。比如提到“用多个RenderTarget做延迟光照”能不能同时意识到显存和带宽的开销上升了。答案是次要的这种权衡思维才是隐藏在笔试背后的真正筛选点。2. 渲染岗笔试的隐形考点清单从光栅化到GPU架构2.1 图形管线逐段拆解每个阶段的输入、输出与常考细节把图形渲染管线的每个阶段拆开看会发现很多看似基础的考点其实都是开发中真实踩过的坑。按照数据流动的顺序我习惯把管线分成六段来复习输入装配、顶点着色、光栅化、片元着色、输出合并以及它们之间容易忽略的中间环节。输入装配阶段重点搞清楚Vertex Buffer和Index Buffer的作用。这里有个高频送分题为什么用Index Buffer能提升性能因为顶点常常被多个三角形共享用索引可以减少重复顶点数据的传输节省的是从CPU到GPU的内存带宽。这个答案说出来容易但你要能解释“减少的是哪一部分开销”。顶点着色器阶段最常见的问题是MVP变换但笔试通常不会只满足于背公式。你要清楚每个空间变换发生在哪里从模型空间到世界空间再到相机空间再到裁剪空间最后经过透视除法变成NDC。如果题目问“为什么法线变换不能直接用MVP矩阵”那是在考你对法线变换的理解——法线是方向而不是位置遇到非均匀缩放时直接用模型矩阵变换会导致法线方向错误需要用逆转置矩阵。光栅化阶段的隐藏考点是透视校正插值。屏幕空间里三角形被光栅化成像素但纹理坐标、颜色这些属性在屏幕空间直接线性插值会扭曲因为透视投影下深度和屏幕位置不是线性关系。正确的做法是除以w之后再插值最后乘回w这个细节笔试中不常直接问名字但经常隐藏在“为什么远处纹理扭曲”这类问题里。片元着色器阶段考的是采样、光照和着色模型。这里常考“为什么Shader里的动态分支会影响性能”以及各类光照公式的区别。输出合并阶段则是深度测试、模板测试、混合这些状态量作用的地方。这一段的常考点是“状态切换为什么有性能开销”——频繁改变混合模式、深度写入开关都可能导致GPU内部状态重配。2.2 CPU与GPU的协作方式Draw Call和状态切换为何总被单独拎出来考渲染笔试里有一类题不会直接问“什么是Draw Call”而是给你一个场景问“为什么物体一多就卡”。这背后是CPU与GPU流水线协作的问题也是很多渲染优化的核心矛盾。可以用一个生活中的类比来理解Draw Call的开销CPU每发起一次Draw Call就好比点一次外卖。哪怕你只买一瓶水也需要完成下单、等待备餐、配送整条流程。如果是100个不同的物体就需要点100次外卖CPU每次都要准备数据、检查状态、调用驱动接口最后统一提交给GPU。这中间消耗的不是GPU算力而是CPU的提交时间和驱动层的命令处理时间。状态切换的开销更隐蔽。GPU内部为了高性能通常会假设渲染状态保持稳定比如Shader不变、纹理不变、RenderTarget不变。一旦你要切换材质球、切换贴图、切换渲染目标GPU可能需要刷新内部的缓存或暂停管线这个停顿就很浪费。所以笔试里问“大量不同材质的物体如何优化”本质上就是在考察你能不能把状态切换的次数降下来。合批的思路就是从这个角度出发的把多个小网格合并成一个大网格把多张贴图合并成一张Texture Atlas把不同物体的渲染参数整理到同一套材质属性里目的就是减少Draw Call和状态切换。理解了这些东西你就知道为什么有些优化方案在某些场景有效在另一些场景完全无效。2.3 纹理、光照与混合高频但是不能丢分的基础题如果说管线大题决定了你的上限那纹理、光照和混合这些基础题就是决定下限的部分。这一块的特点是知识密度大、出题角度多但也最容易通过系统复习拿满分。纹理这块至少要知道三件事。第一是Mipmap的原理和意义远处物体在屏幕上很小如果直接用原始纹理采样会产生严重的锯齿和闪烁SparkleMipmap通过预计算不同分辨率的纹理层级让采样时能根据距离选择合适的层级。第二是各向异性过滤它解决的问题是倾斜表面比如地面在某个方向上纹理被压缩得很厉害这时普通双线性过滤会模糊各向异性过滤会在不同方向上做差异化的采样。第三是纹理压缩格式移动端常用ETC、ASTC桌面端常用BC系列。题目如果问“为什么移动端不用DDS”答案不只是格式兼容问题还和显存带宽、硬件解码单元有关。光照模型这里Blinn-Phong几乎是必考内容。你要能写出半角向量H L V 归一化这个关键步骤还要知道为什么要用半角向量替代反射向量——因为计算便宜且效果更稳定。PBR概念也是近年常客题目通常不要求完整推导但你要能说明金属度、粗糙度各自影响什么以及为什么PBR在物理上更可信。混合状态经常被拿来出选择题或者简答题。加法混合适合粒子发光效果但粒子一多容易过曝透明混合依赖渲染顺序需要从后往前绘制。你不仅要记住结论还要明白混合公式是怎么对帧缓冲已有颜色和当前片元颜色做加权求和的这样面试官再换一个混合模式问你你也能推导出来。3. 必考的几个核心原理不搞懂做题只能靠猜3.1 深度缓冲与Early-Z看似简单其实隐藏了一整套性能逻辑深度缓冲的原理很好理解每个像素存一个深度值新片元来的时候比较深度通过就写入并更新深度不通过就丢弃。但笔试真正爱考的是围绕深度缓冲延伸出来的一系列性能问题。Early-Z是其中一个关键知识点。在老式GPU上片元着色器跑完才会做深度测试这意味着被遮挡的片元白算了一大堆颜色。现代GPU大多支持Early-Z也就是在片元着色器之前先做一次深度测试不通过直接丢弃省掉后面的计算。这个机制很好但你必须在Shader中满足特定条件才能生效最典型的限制是如果片元着色器里写了深度写入或者改写了SV_DepthEarly-Z就会失效。笔试里经常出现这样的场景题一个室内场景墙壁会挡住大部分背着摄像机的物体但帧率仍然很低。这时候要考虑的可能就是Early-Z没有生效或者Pre-Z策略没做。Pre-Z的意思是先用一个简单的Shader只写深度把所有不可见物体在深度层面提前淘汰然后再正常渲染颜色。虽然多了一个Pass的开销但如果场景的Overdraw很严重反而能大幅提升帧率。回答这类题时把“深度测试、Early-Z条件、Pre-Z代价”这三个层次讲清楚就能和其他候选人拉开差距。3.2 Alpha混合与透明排序为什么透明物体必须从后往前画Alpha混合是渲染基础知识里最容易让人误解的一块。很多初学者以为混合就是把两个颜色做个加权平均但实际上混合结果依赖帧缓冲里已有的颜色这就是为什么透明物体必须从后往前画后画的物体与前一个物体写入的颜色做混合顺序反了结果自然不对。这个逻辑有一个非常经典的类比画家算法。画家画画时先画远处的山再画中间的树最后画近处的人远处的颜色会被近处覆盖。透明物体同理如果不排序就会出现半透明物体后面的东西没有被正确合成视觉上像“穿模”了一样。笔试常考的场景是大量半透明粒子、特效、草片叠在一起怎么优化。这里有两个方向一是把透明物体按距离排序从远到近渲染二是对于粒子这种自发光效果尽量改用加法混合因为加法混合满足交换律不依赖排序可以降低排序开销。如果题目问“为什么我的透明物体在镜头旋转时会有闪烁”答案基本都能归结到排序不稳定尤其是物体之间互相穿插时单纯按物体中心点排序已经不够需要更细粒度的处理。3.3 GPU并行架构与Shader隐藏成本分支、带宽与过绘制的代价绝大多数渲染岗笔试的难题最终都会归结到对GPU架构的理解上。这里不需要你懂硬件到晶体管级别但一定要理解GPU是怎么并行工作的以及它有哪些天然的成本偏好。GPU是一个极度强调并行吞吐的处理器它会把成千上万个线程打包成组来执行。你可以想象成一队士兵列队行军整排人必须迈出同样的步伐。如果队伍里有人想跳起来整排人都要停下来等他跳完再继续走。这就是分支发散DivergenceShader中的if语句如果同一个执行组内的线程走向不同的分支硬件会串行执行所有分支性能直接劣化。这解释了为什么GPU友好的Shader会尽量避免动态分支或者把分支粒度放在更粗的层级比如通过材质参数或宏来区分Shader变体。带宽是另一个隐藏成本。GPU的计算单元非常快但访问显存的数据搬运常常是真正的瓶颈。纹理采样次数越多、缓冲区越大带宽开销越高。所以很多渲染优化手段的出发点不是“少算点”而是“少读点”。比如用更低分辨率的阴影贴图采样用RGBA16替代RGBA32存储HDR数据都是在用精度换带宽。Overdraw则是像素级别的浪费同一个像素被不同物体重复画了很多次。最典型的例子是半透明粒子大面积叠在一起或者茂密的草地和树叶一层接一层。GPU花了大量时间去算那些最终根本不会被看到的片元。笔试里提到“减少Overdraw”思路通常包括Pre-Z剔除、减少透明粒子的尺寸和数量、用低分辨率后处理、控制粒子发射器的重叠密度。3.4 向量与矩阵运算笔试里的送分题和陷阱题都在这渲染方向的笔试题数学部分一般不会特别难但覆盖面很广而且经常在小题里埋陷阱。我的建议是不要只背公式要把每个公式的几何意义想清楚。向量的点积和叉积是最基础但最常用的两个运算。点积可以判断两个向量的夹角在光照里用来算法线和光线方向的夹角叉积可以求出垂直于两个向量的法向量在构建切线空间、计算平面的朝向时都会用到。笔试如果问“给你三角形的三个顶点怎么求法线”答案就是先求两条边向量再叉积归一化。矩阵变换部分MVP矩阵已经说过了这里补充一个容易错的点矩阵乘法的顺序是右乘即先进行的变换写在右边后进行的变换写在左边。很多人写Transform时有bug多半就是乘错了顺序。比如先缩放再平移如果写成Translate * Scale结果是对的因为Scale在右边先应用写成Scale * Translate结果就是先把物体平移了再整体拉伸位置和缩放比例都不对。还有一类陷阱题会问“向量和矩阵的齐次坐标w分量的作用”。w 1表示位置w 0表示方向。方向向量可以参与旋转但不会被平移位置向量会被平移。这个区分虽然简单但很容易在涉及法线变换、光源方向描述的时候选错。4. 场景性能优化类题目拿到题先做什么分析4.1 第一步永远是二分定位CPU瓶颈还是GPU瓶颈场景性能优化题是渲染方向笔试里最有区分度的一类题。很多人一上来就背优化名词Draw Call、LOD、遮挡剔除、GPU Instancing全堆上去看上去很热闹实际却暴露了一个问题没有分析过程。正确打开方式应该是先定位瓶颈在CPU还是GPU。这就像修车你得先确定是发动机还是变速箱不能上来就把轮胎拆了。快速定位的手段很多用Profiler看帧耗时分布看是CPU端的渲染提交时间高还是GPU端的执行时间高也可以做一个简单的实验——把屏幕分辨率调低。如果帧率明显提升说明瓶颈大概率在GPU的填充率或带宽上如果帧率没什么变化那可能问题出在CPU侧的Draw Call提交或者逻辑计算上。笔试里遇到这种题你的答案框架可以是第一步描述如何通过Profiler或分辨率实验来区分瓶颈第二步针对CPU瓶颈给出合批、减少Draw Call、降低状态切换等方案第三步针对GPU瓶颈给出LOD、减少Overdraw、优化Shader、降低分辨率或纹理带宽等方案。这种结构化的回答让面试官能清楚看到你是真的会做问题排查而不是背了一堆名词。4.2 优化手段不是越多越好每个方案都有代价和适用边界我在面试中经常看到候选人把优化手段背得滚瓜烂熟但问到“这个方案什么时候不适用”就卡壳了。渲染优化没有银弹每一个手段都伴随相应的代价下面这几个是最常考的优化手段解决什么问题代价/失效条件典型适用场景静态合批/动态合批减少Draw Call内存占用升高动态合批对顶点数有限制大量静止小物体如城市建筑群、道具GPU Instancing一次Draw Call画大量相同Mesh仅适合相同网格相同材质逐实例属性需要内置属性支持草地、石头、森林、人群LOD降低远距离物体面数切换层次时可能有跳变资源制作成本上升地形、树木、角色远景遮挡剔除减少不可见物体提交剔除计算本身有开销非静态场景需要每帧更新室内场景、地形起伏较大的室外Pre-Z Pass减少Overdraw多一次深度Pass顶点着色器多跑一遍大范围遮挡的室内外场景纹理压缩/低分辨率RT降低带宽和显存占用画质损失需要根据平台选择格式移动端常用ETC/ASTCHDR后处理降精度Shader简化降低GPU计算量可能丢失效果Shader变体管理复杂移动端优化、大批量物体材质看到这个表你会发现一个共性优化的本质都是在“性能收益”和“资源/画质成本”之间做权衡。笔试答题时把方案的代价说清楚比多列两个方案更能拿分。4.3 一个典型大世界场景的答题示范假设题目给了这样一个场景开放世界野外地图摄像机平视时能看到远处的山体、大片树林、草地和一条河玩家走动时帧率明显下降。要求给出分析和优化方案。我会按这个思路作答。首先是推断瓶颈野外大世界的Draw Call来源主要是大量树木、草块和散布的石头所以CPU侧的提交开销很可能很高同时草地、树冠和半透明河水会产生大量OverdrawGPU侧也不轻松。然后用工具验证在Profiler里看Draw Call数量和GPU时间占比或者在游戏运行时动态切换分辨率观察帧率变化。接下来按优先级给出优化树木和石头是静止物体优先做静态合批配合LOD分4个距离层次草和地面植被考虑用GPU Instancing同时限制每帧参与渲染的草块数量摄像机增加遮挡剔除和视锥剔除室内的话再叠加Pre-Z河水这种半透明物体控制粒子数量和粒子尺寸考虑用低分辨率反射贴图最后检查后处理链Bloom和景深的处理分辨率不一定非要和屏幕一致可以用半分辨率跑。这个回答的关键不是方案有多新奇而是每一步都有“为什么”。面试官要看到的是你从现象出发、通过工具定位、再按成本收益排序的完整链路。5. 后处理与效果实现题从原理到可落地的实现路径5.1 实现Bloom的完整框架以及那些容易被忽略的参数坑后处理题在渲染方向笔试里出现频率很高Bloom泛光几乎是第一张牌。原因很简单它实现链条完整、涉及HDR、降采样、卷积模糊、合成等一连串关键知识点非常适合考察基本功。Bloom的完整思路可以拆成四步从HDR场景颜色中提取亮部区域亮度超过阈值的部分作为光晕来源把亮部纹理逐步降采样到更低分辨率在低分辨率下做高斯模糊让亮部向外扩散形成光晕把模糊结果叠加回原始HDR图像完成最终的Bloom效果。这里有一个“为什么”很关键为什么要先降采样再进行高斯模糊因为Bloom光晕是低频信息不需要全分辨率计算在低分辨率上模糊既能获得大范围扩散效果又能大幅降低GPU开销。这也解释了为什么很多游戏里Bloom看起来细腻、同时性能消耗却不高因为核算力都花在了低分辨率层级上。用伪代码写亮部提取的话大概是这个逻辑float3 hdrColor tex2D(_MainTex, uv).rgb; float luma dot(hdrColor, float3(0.2126, 0.7152, 0.0722)); float3 bloomColor max(0.0, hdrColor - float3(_Threshold, _Threshold, _Threshold)); float3 finalColor hdrColor bloomColor * _Intensity; return float4(finalColor, 1.0);这里面有几个参数坑很典型阈值设置过低普通暗部区域也会发光整个画面泛白阈值设置过高路灯、高光点亮的区域反而不亮Bloom像不存在。强度参数太大会让光晕边缘出现色块感因为低分辨率模糊层的精度被撑爆了。实际调试时我习惯先用一个纯白高亮的测试球体调阈值确认亮部提取范围合适再调模糊层数决定光晕扩散度最后才调强度做整体平衡。5.2 色调映射与HDR为什么直接输出颜色会过曝有些同学在实现渲染时会把颜色直接Clamp到0到1再输出结果高光区域变成一片惨白颜色层次全丢。这就是没有正确理解HDR渲染和色调映射Tone Mapping之间的关系。真实世界的光照强度范围远超过显示器能显示的范围。光源亮度可能是10、100甚至更高而普通显示器只能显示0到1。如果直接截断所有超过1的亮度都会变成纯白。HDR渲染的思路是在中间计算过程中保留这些高动态范围数值在最终输出前通过一条色调映射曲线把它们压缩到0到1的范围同时尽量保留视觉上的对比度和色彩倾向。常见的色调映射算子有Reinhard和ACES。Reinhard是color / (1 color)实现简单但对暗部和高光的控制比较粗ACES能更好地保留高光细节和色彩饱和度是目前游戏和影视里用得比较多的一类。笔试如果问“为什么开了HDR还是发灰”一个常见原因是后期没有做正确的色调映射或者贴图本身是sRGB而计算时没有做线性化处理。这个知识点常跟Bloom绑在一张卷子里考因为Bloom通常需要在HDR空间做亮部提取后要在色调映射之前合成回HDR图像。理解了这条链路你回答这类题目就不会只停留在“用一个Float Buffer”这个层面。5.3 延伸考点体积光、全局光照与GPU Driven的趋势笔试里的传统考点是保底项但近几年的题目明显在往新技术方向延伸。面试官不是期待校招生已经做过完整的体积光或全局光照系统而是想看你有没有持续关注渲染方向的发展。体积光可以简化理解为光线穿过参与介质雾、尘埃时产生的散射效果。常见实现思路是Ray Marching从相机出发沿光线方向逐步采样在每一步用Shadow Map判断是否被遮挡累加散射和透射。性能优化方向通常是降低采样步数、在低分辨率下计算再模糊。全局光照是另一个高频延伸点。移动端和中小项目常用Lightmap烘焙静态光照动态物体用Light Probe做近似实时GI方向有DDGI动态漫反射全局光照、屏幕空间GI等。你可以不知道全部细节但至少要知道“实时GI为什么难”——因为它要处理无限次反弹而实时渲染必须在几十毫秒内完成计算。GPU Driven Rendering则是一个更偏引擎架构的延伸考点。传统方式是CPU逐个物体做剔除、逐物体提交Draw CallGPU Driven的思路是先把所有物体数据放到GPU侧由GPU自己完成视锥剔除、排序和绘制命令生成这样能大幅降低CPU的提交压力。大世界、大量动态物体的场景都受益于这种架构。另外3DGS3D Gaussian Splatting这类基于点云/高斯表达的新渲染思路也值得留个印象它和传统网格光栅化是两条不同的技术路线体现了渲染表达方式本身的演进。这些点不需要答得多深但能说出“它解决什么问题、思路大概是什么”就能在笔试的开放题里加分。6. 刷题之外我还建议你这样准备渲染岗笔试6.1 用一棵“渲染知识树”把零散考点串起来准备渲染方向笔试最忌讳的就是按题号顺序一道一道背背完就忘。我自己的经验是先搭一棵知识树把所有考点挂到对应的枝干上然后反复自检看哪根枝干是空的。这棵树大概长这样根数学基础向量、矩阵、变换、几何算法一级枝干图形管线基础光栅化、着色、测试与混合二级枝干资源与数据Mesh、纹理、Shader、材质、RenderTarget三级枝干光照与阴影光照模型、Shadow Map、全局光照四级枝干性能工程CPU/GPU平衡、合批、剔除、LOD、带宽优化五级枝干后处理与风格化HDR、Bloom、色调映射、抗锯齿末端枝新方向GPU Driven、光追、3DGS等自检很简单拿出一张白纸从根开始往末端画画到每个节点时如果能写清楚它是什么、解决什么问题、常用做法和代价说明这个节点真正掌握了。画不出来的地方就是你需要回头补的地方。这个方法比盲目刷题高效得多因为它逼你面对自己“知道但说不清”的地方。6.2 把每个考点变成能跑起来的小实验很多人在笔试前只刷题不写代码这是一个很大的误区。渲染是门工程学科光看文字理解和一个能跑的实验之间隔着一大段“坑”。比如你复习深度缓冲和Early-Z与其背概念不如在Unity或Unreal里搭一个简单场景用RenderDoc抓一帧看Draw Call和Overdraw的可视化数据亲眼看一看Pre-Z前后Overdraw的变化。你复习Bloom就在后处理链里自己实现一遍亮部提取和高斯模糊调一调阈值、模糊半径观察画面变化。你复习纹理过滤和Mipmap就找一张高对比度栅格纹理关掉Mipmap放在远距离观察闪烁再打开Mipmap对比一次。这些实验不需要很大工程但带来的认知是看书给不了的。有一次我在自己写软渲染器的时候把光栅化插值写成了屏幕空间直接线性插值远处三角形纹理出现扭曲那一刻才算真正理解透视校正插值在解决什么问题。笔试里能把这些话说得有理有据的人多半都亲手踩过类似的坑。6.3 输出驱动输入最好的复习方式是讲给别人听费曼技巧放在渲染复习里同样适用。一个知识点如果你不能用自己的话讲清楚让一个不了解图形学的朋友也能听明白那大概率你还没真正掌握。我经常建议准备笔试的同学把当天复习的考点写成一篇短文或者一条笔记不用发出去写给自己看就行。写的过程中你会发现很多地方是跳步的你以为自己知道落笔时才发现解释不清楚。比如“为什么法线变换用逆转置矩阵”脑子里觉得简单写出来就可能卡在“方向向量不受平移影响”和“非均匀缩放破坏垂直关系”这两个关键点上。如果能在学习小组里讲一遍效果更好。听的人会提出各种角度刁钻的问题那些问题往往就是你知识体系里的盲区。我见过不少候选人笔试能力很强但一旦被追问就露怯很大原因是他们从来没有把知识“说出口”过。笔试虽然不用开口但答题本质上是把脑中的理解用文字表达出来这和讲给别人听是同一个能力。最后再分享一个很朴素的建议笔试前一周不要以刷题为主以复述为主。拿出你整理的知识树对着它把每个节点讲一遍遇到讲不清楚的再回去查。这一周里能补上的漏洞比多做三套题有用得多。渲染方向的知识面很宽但笔试考察的往往不是广度本身而是你能不能在最常见的那几条链路上做到准确、完整、有深度地表达。