叠纸游戏的春招笔试在游戏研发圈一直挺有话题度,尤其是冲着《恋与制作人》《闪耀暖暖》这些项目去的同学,多少会好奇这家以内容品质和美术表现为强项的公司,笔试到底考什么。我自己去年参加了2023年叠纸游戏春招游戏研发岗的笔试,整个过程下来最大的感受是:它不只是一场技术考试,更像一次对“游戏研发常识”的全方位摸底。网上关于这场笔试的零散信息不少,但系统性复盘不多,我结合自己的回忆和同行交流整理一篇,给后面准备叠纸或其他内容向游戏公司研发岗的同学一个参考。
先说结论:叠纸研发岗笔试整体难度不算变态,但覆盖面非常广,而且很看重基础功底和工程素养。算法题只是其中一环,渲染、引擎、游戏逻辑、性能优化、设计理解都会涉及。如果你只刷LeetCode就上考场,大概率会懵。
1. 为什么叠纸研发岗笔试值得单独写一篇
叠纸这几年的技术投入和产品方向变化很明显,从2D换装到3D开放世界,研发团队对图形学、引擎底层、工具链的要求都在上升。春招笔试是校招的第一道筛选,某种程度上也反映了公司在当前阶段对研发人才的核心期待。
先说一个关键印象:叠纸的笔试不是“纯算法竞赛”,它更像一份“研发综合素质试卷”。同样的岗位,有的公司笔试几乎全押在数据结构和算法上,一道接一道,像LeetCode周赛;叠纸不一样,算法题有,但占比大概只在三分之一到二分之一之间。剩下的题目围绕渲染管线、引擎使用、C++内存模型、Unity/Unreal工程实践、游戏逻辑设计展开,甚至有几道题会直接问你“某个玩法在当前架构下怎么实现”“怎么做性能优化”。这种风格和叠纸自身的项目形态是匹配的:他们的产品高度依赖画面表现和细腻的角色演出,客户端渲染和引擎定制是核心环节,所以笔试自然更看重这些方向的基础是否扎实。
另外大家比较关心的一个点是投递岗位方向。叠纸春招研发岗其实分了好几个细分方向,比如客户端、引擎、渲染、工具链、服务端等,开放投递的时候是可以按方向选择的。如果招聘系统里让你选“游戏研发工程师”这种偏笼统的岗位,笔试题就会出得相对综合;如果明确投的是渲染方向或引擎方向,题目重心会明显偏向图形学和引擎底层。我当时投的是通用客户端方向,所以遇到的是综合卷。
还有一点值得注意:叠纸的笔试用的线上平台,整体体验还行,但编程题的环境和牛客、力扣略有差别,有的需要自己处理输入输出,有的只写核心函数。这个细节我在后面单独说。
2. 整体题型结构:一场典型的叠纸研发笔试长什么样
先说时间安排。我印象中笔试总时长是120分钟,题量大概在十几道左右。题型分为三类:单选题/多选题、简答题、编程题。其中选择题大概五六道,简答题三五道,编程题两三道。不同方向卷子的题量会有浮动,但大致结构这样。
选择题部分主要考C++、数据结构和计算机基础。比如虚函数机制、智能指针的引用计数、静态变量生命周期、哈希表冲突处理、二叉树遍历、网络协议状态码这类。难度不算高,属于科班同学基本都能拿下的范围,但它有个作用——筛掉基础不扎实的人。游戏研发的日常开发里,C++是绕不开的,叠纸的客户端链路里C++重要程度尤其高,所以这部分等于在筛“能不能直接上手干活”。
多选题目里容易坑人,比如“以下哪些容器在尾部插入元素时不会导致迭代器失效”这种,选错一个就全错。所以复习的时候不能只记结论,得把底层数据结构的内存布局、扩容机制、迭代器失效规则理解透。不是背住就行,是会推导。
简答题是叠纸笔试里最有区分度的部分。它不会直接问你“什么是渲染管线”这种课本概念题,而是给出一个实际场景让你分析。比如“手游中角色在场景里轮廓发光的效果有哪些实现方案,各自的开销和适用场景”“资源加载卡顿怎么排查,定位思路是什么”这类。这部分的答案能看出一个人是背过八股,还是真做过Demo、踩过线上问题。
编程题方面,我印象里不是纯LeetCode式题目,更像是“带游戏业务色彩的算法题”。比如二维网格寻路、按指定规则筛数据、武器池抽卡概率模拟这类。数据结构还是那些,但场景包装成了游戏里的常见需求。实际上这是好事,因为更能体现出“用代码解决游戏问题”的能力。
整体来看,这套卷子的设计逻辑就是:先确认你有扎实的计算机基础,再确认你理解游戏研发是怎么运转的,最后确认你的代码能力不是只会写玩具程序。带着这套思路去准备,比盲目刷题要高效得多。
3. 算法与数据结构题:笔试的硬骨头
算法题在整张卷子里占比不是最多的,但一定是最耗时间的。叠纸的编程题整体难度居中,大概在LeetCode中等偏下,没有到困难那种非数学构造不可的级别,但需要在有限时间内快速给出可运行、思路清晰的解答。
我遇到的编程题里,有一道比较有代表性:“在一个二维网格地图上,角色从起点到终点,网格中有障碍物和非障碍物,部分格子有不同移动代价,求最小代价路径。”这题本身就是带权最短路径,标准解法是Dijkstra。叠纸的包装方式常见于游戏场景,玩家从A点走到B点,经过不同地形消耗不同体力,本质上就是个寻路问题。
这道题除了考察Dijkstra的正确实现,还包含了一个小陷阱:地图规模不是特别大,但用普通的二维数组存距离而不用优先队列会超时。如果你直接写个朴素BFS当成无权图处理,样例也许能过,但大数据量时就会卡住。所以复习时一定要把“优先队列优化版Dijkstra”写熟练,最好能做到默写程度。那种“平时看懂了、笔试手写不出来”的情况在考场上特别吃亏。
还有一道题和“概率/模拟”相关,大意是按照给定的概率表模拟抽卡,统计凑齐一套物品所需的次数。这题考察的点有两个:一是均匀随机数的生成和映射——比如把[0,1)区间按照权重切分,落到哪个区间就是哪个物品;二是循环和统计的边界处理——比如“已拥有的物品不能重复计数”这条规则,很多人会在条件判断那里写错,导致统计结果偏大。
模拟类题往往不难,但特别考验细心程度。我当时的建议是笔试时先把题读两遍,划出所有限制条件,再用很小的数据手动推演一遍逻辑,最后才写代码。不要一上来就写,很容易漏条件。
说句实话,叠纸这轮笔试的算法题深度无法和互联网大厂那种动辄困难级、需要复杂状态压缩的题目比。它的出题人更在意候选人是否熟悉常见算法模型,并能把它们放到游戏业务场景中解决实际问题。所以准备阶段不必死磕LeetCode hard,重点是中等题刷到“肌肉记忆”程度,常见模型比如Dijkstra、BFS/DFS、滑动窗口、简单DP、双指针、并查集等都要能快速写出来。数据结构的应用场景也要心中有数——什么时候用哈希表、什么时候用堆、什么时候需要排序,这些要形成条件反射。
4. 渲染与图形学:叠纸笔试最鲜明的特点
叠纸笔试和其它游戏公司相比,最鲜明的差别在于渲染与图形学相关内容占比高,而且问得比较实用。这和他们产品形态直接相关——换装游戏要表现布料、头发、皮肤、饰品的质感,3D项目又要做风格化角色渲染,没有图形学底子根本没法做。
选择题和简答题里图形学内容都出现过。比如有一道选择题问“在延迟渲染中,GBuffer里至少需要存哪些信息”,选项里有法线、深度、世界坐标、反照率、粗糙度等。这道题考的是对渲染路径的基本理解:延迟渲染的核心是把几何信息从光照计算里拆出来,所以需要法线、深度、反照率、粗糙度这些分布在G缓冲中。如果只熟悉前向渲染,可能就会在这道题上犹豫。
还有一道简答题让我印象很深:“一个角色在受击时需要产生短暂的屏幕闪红效果,给出至少两种实现方案并说出优缺点。”这题考的是画面后处理的常见思路,正常都会想到全屏叠加一层红色半透明材质,用UI还是用后处理?两个方案各有取舍。用UI做法简单直接,但无法与场景深度交互,效果生硬;用后处理可以结合深度、法线等信息做更丰富的效果,比如边缘亮红、受击方向、扭曲扰动等,但实现复杂、需要处理性能开销。回答时如果能把两个方案都展开,并给出“根据项目需求取舍”的结论,会更契合叠纸想要的人才画像。
针对渲染部分,我建议备考时重点盯这几个方向:
- 渲染管线的基本流程:顶点处理、光栅化、片元着色、输出合并,每个阶段在做什么、能做什么定制。
- 前向渲染与延迟渲染的区别、各自优缺点、常见游戏如何选型。
- 光照模型的基本原理:Lambert、Blinn-Phong、PBR核心概念(比如BRDF、微表面模型)。
- 阴影实现方案:Shadow Map、软阴影、级联阴影各自解决的问题。
- 后处理效果:Bloom、色调映射、抗锯齿(FXAA/TAA)、景深,至少能说清基本原理和开销。
- 合批与Draw Call优化:动态合批、静态合批、GPU Instancing。
图形学内容如果学校课程没覆盖或者早就忘了,提前两周集中补一下即可。不需要啃完一整本《Real-Time Rendering》,重点是建立核心概念框架,再加上能表达清楚“某个效果是怎么做出来的”。这和笔试简答题的答题逻辑是一致的。
另外叠纸笔试也出现了一道关于“皮肤渲染”相关的题,大意是问角色皮肤质感表现有哪几个要素。这种题想答好,需要把PBR基础结合到实际项目里。皮肤次表面散射可以用预积分散射(Pre-Integrated Skin Shading)近似实现,这是一种把散射计算预先积分成查找表的方案。笔试时能说出这个名词并简略解释原理,证明你是了解过实际渲染方案的,不是停留在教材层面。如果完全没接触过,也可以从“高光”和“过渡带”的角度说,只是没那么深入。总之,渲染这个问题是叠纸笔试里拉开分数的重要部分。
5. 引擎与工程化问题:从“会写代码”到“能上线”的差距
除了图形学,叠纸笔试中还有一批题目围绕引擎和工程化展开。Unity和Unreal都在考察范围内,但不会让你写非常具体的引擎API,更多是看你是否理解游戏项目是怎么用引擎组织起来的。
比如有一道简答题:“在Unity中场景里有大量静态物体,如何减少Draw Call开销?请写出至少三种方法,并说明每种方法的局限。”学过UWA性能优化的人应该都有印象,静态合批、GPU Instancing、纹理图集、LOD、遮挡剔除都可以答。关键在于不能只列名字,要说清楚每种方案的局限性。比如静态合批要求对象标记为静态且材质相同,如果场景中物体被动态旋转或缩放,静态合批会失效;GPU Instancing适合大量相同Mesh的对象,每帧上传的变换矩阵也有数量上限;LOD适合远景物体,但对近距离切换会造成视觉突跳。这类工程问题没有标准答案,但能看出候选人有没有真实项目经验。
另一道题问的是资源管理,比如“AB包依赖关系如何处理”,这是Unity开发中老生常谈的问题。答的时候要讲清楚依赖收集、循环依赖的规避、离散依赖与聚合打包的取舍,以及发布时的包体与加载时间平衡。能答出“构建依赖树”“按模块分组”这些具体做法,分数就稳了。
引擎相关问题在笔试中出现,本质上是叠纸在筛选“能直接进项目干活的人”。游戏研发不是只写逻辑代码,你得知道自己写的代码跑在引擎哪一层,资源怎么加载,内存怎么控制,性能瓶颈在哪。我在学校实习时写过Unity的Demo,也试着包出过安卓包,做了一些简单优化,所以回答时多少有内容。如果你之也没有项目经历,至少把官方教程里的“迷宫游戏”“2D平台跳跃”自己动手做一遍,再对照UWA博客把资源管理、Draw Call优化、内存管理这些主题系统性看一遍,答题时就不会无话可说。
还有一个容易被忽视的考点是C++内存管理和多线程。叠纸笔试的选择题中出现过“共享_ptr的循环引用怎么解决”“std::move的作用是什么”这类问题。和引擎题目搭配起来看,他们其实很关注候选人有没有能力写出高性能、可维护的客户端代码。如果你投的是客户端研发岗,C++是躲不掉的核心技能,建议把《Effective C++》里的关键条目再过一遍,尤其是智能指针、移动语义、RAII机制这几个方向。
工程化问题通常没有标准答案,所以答题时要把“原理 + 方案 + 取舍”三段式写清楚。只写方案不解释原因,阅卷人会默认你是背的,区分度反而出不来。
6. 游戏理解与综合题:不是技术岗就不能聊设计
叠纸笔试里还有一类题目让很多技术同学意外——游戏理解与综合题。这类题不直接考代码,而是考察你对游戏设计、玩家体验、技术实现之间关系的理解。
我遇到的一道题是这样的:“为一个换装手游设计一个‘拍照模式’,主要功能是让玩家为角色选择背景、姿势、滤镜并截图分享。请说明你理解的需求,并给出在客户端实现上的技术要点。”这就是典型的“技术与设计结合”的问题。换装游戏里有大量这种展示性玩法,技术实现上会涉及相机控制、场景加载、后期处理、UI布局、截图分享等环节。答题时如果只谈设计不聊技术,会显得不像研发;只谈技术不理解需求,又显得很呆。需要把两个维度融合,体现出自己的全局视野。
还有一道题是关于“开放世界地图无缝加载”的,问的是如果地图很大,玩家走到地图边界时怎么处理才能让画面流畅无缝。这就涉及到Streaming、Cell分块、预处理和异步加载这些技术概念。回答的核心是“分块 + 邻区预加载 + 卸载远离的块”,只要把这些思路讲清楚,再把纹理、模型、特效等资源的加载优先级和带宽限制说明白,这道题就把握住了。这种题没有“标准答案”,但对动手做过大地图或至少研究过相关方案的人来说,比背算法题更有优势。
综合题最忌讳的是答得太空。如果你写“要加强玩家的沉浸感”“优化操作手感”这种车轱辘话,没有落到具体实现手段上,在研发岗笔试试卷里基本等于没答。每个体验目标背后都要跟着至少一个技术方案作为支撑。反过来,如果你只写技术细节,完全不提它如何服务于实际体验,也会显得比较局限。真实研发中“既要懂技术,也要理解产品”就是这种状态,笔试本质上是提前让你体验这一步。
7. 时间分配、平台体验和考场注意事项
叠纸的笔试用的线上平台,整体操作流程是这样的:在约定的时间段进入笔试链接,完成身份验证后开始答题。编程题部分支持多种语言,C++、Java、Python都可以。选择自己最熟练的语言即可,不要试图在笔试题里展示“我全栈都行”——用不熟的语言写代码,调试时间会翻倍,风险很大。
时间分配上我建议:选择题控制在20分钟内,简答题控制在50分钟到60分钟,剩余时间全部留给编程题。编程题里最简单的先做,再做中等难度的。叠纸的编程题一般不会只给一道,可能有2到3道,要从容易的开始,保证“稳稳拿分”的题先收入囊中。如果某道题卡了15分钟还没思路,果断跳过,把时间留给后面可能更顺利的题目。
有一个细节值得提醒:线上笔试平台写代码时没有本地IDE的自动补全和报错提示,等于要在编辑器里直接写代码。建议笔试前一两周,平时练习就改成“不开IDE补全,在记事本或者牛客的编辑器里直接写”的方式,训练一次写对的能力。C++选手尤其要注意,头文件、using namespace std这些是需要自己手动写的,平时IDE自动带你习惯了,笔试时很容易漏。
网络和硬件环境也建议提前准备好。笔试过程一般比较长,两个小时不能中断,提前用一台性能稳定的电脑,插电源、关后台下载、关弹窗提醒。要用摄像头监控的话,建议提前调试,找一个光线充足、背景干净的房间。我在笔试前就吃过亏,因为浏览器插件拦截了在线IDE的弹窗导致代码区无法输入,折腾了十分钟才解决。所以强烈建议在正式笔试前一天进平台做“模拟测试”功能,把摄像头、浏览器权限、网络连通性全部验证一遍。
还有一点是心态。叠纸笔试题目综合性强,遇到不会的很正常。阅卷看的是整体评价,几道题没答好不至于直接淘汰。最重要的是把会做的都做对,不会的也尽量写出思路和方向,展示出可培养的潜力。我们当年笔试过后群里很多人哀嚎“简答题全靠编”,但依然有同学过了。说明只要基础扎实、思路清晰,不需要每题完美。
8. 备考复盘:真正决定拿不拿得到面试的是这几点
笔试结束之后,我复盘了一下整个准备和答题过程,发现能拿到面试机会的人,往往不是算法刷得最狠的,而是下面几个维度平衡得比较好的人。
第一,C++基础必须扎实在“能写代码”的层面,不是停留在“能看懂”层面。叠纸笔试的编程题和简答题都需要你用C++的表达能力去组织思路。智能指针、内存管理、STL容器这些高频考点,至少要做到能写出无语法错误的代码。建议把C++ Primer里“类、继承、多态、模板、内存、STL”这几个章节重新过一遍,配合刷题练习手写能力。
第二,图形学和引擎基础要形成“原理记忆”。不用真的会写一个软渲染器,但核心概念(管线流程、PBR、合批、阴影、后处理、资源管理)要能用自己的话讲清楚。考试前找几篇UWA博客、Unity官方最佳实践、以及知乎上关于渲染管线的文章系统性看一遍,比自己零散搜资料效率高得多。最好能按“是什么、为什么、怎么用、有什么坑”四个维度做笔记,这样考场上不论怎么出题,都能有内容可写。
第三,项目经历要准备好“技术叙事”。叠纸笔试的综合题和简答题很灵活,能不能答好很大程度上取决于你有没有真正动手做过东西。哪怕只是一个小Demo,要在复盘时把一个技术点讲透——比如“这个地方性能有问题,我用了哪些手段去优化,优化前后数据变化如何”。如果没有项目经历,就从学习项目中挖掘技术点,做一个简单的“场记板”工具或房间编辑器,亲手把资源管理、配置导出和Unity编辑器扩展走一遍,收获可以很大。
第四,对叠纸的产品特点要有基本了解。笔试不直接考“你知道我们公司哪些游戏”,但所有题目都隐含着这家公司的技术兴趣:换装玩法、角色表现、3D开放世界、内容驱动。备考时把《闪耀暖暖》的材质表现、3D项目在B站放的渲染技术分享都看一遍,答题时能体现出对业务场景的理解,也让阅卷人觉得你是认真研究过公司的。
最后想说,笔试只是校招里的一环,不能代表全部。叠纸春招的竞争确实激烈,笔试刷的人不少,但它的筛选标准实际上很务实:基础扎实、动手能力过关、对游戏研发有真实热情。如果你这几方面都准备好了,拿到面试资格并不像想象中那么难。我自己最大的体会是,从叠纸笔试往后走,面试更看重技术深度和实际项目经历,笔试更像一块“敲门砖”——把该复习的复习到位,该练习的练习到肌肉记忆,坦然地把它当成一次和游戏研发的一次正式对话就好。