尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

吉比特秋招笔试复盘:考点解析与编程题实战经验

吉比特秋招笔试复盘:考点解析与编程题实战经验 2023年的秋招已经过去快一年了但一直到今天我的技术交流群里还时不时有人翻出旧帖子问吉比特的笔试到底考什么难度怎么样跟其他游戏大厂比算不算难作为去年实际参加过2023年吉比特秋招技术岗笔试的人我想把这场的复盘经验完整整理出来给正在准备2024届、2025届校招的朋友一个相对靠谱的参考。这篇文章不搞虚的从试卷结构、考点分布、编程题实战思路到我在考场上踩过的坑全部按回忆里的实际情况摊开来讲希望能帮大家在进入笔试之前先把信息差补上。1. 笔试形式和试卷结构先搞清楚自己在打什么仗很多人在笔试前最焦虑的其实不是题目本身而是完全不知道现场会面对什么。吉比特的秋招笔试用的是在线评测系统整体体验和牛客、赛码这类平台差不多进入考场后按倒计时答题。技术岗的试卷结构大致分成三个模块客观题、编程题、附加题。客观题以选择题为主覆盖计算机基础编程题一般是2到4道难度有梯度附加题则是游戏行业特有的主观题不是每家游戏公司都会放但吉比特是比较典型的一家。先说时间。整个笔试的时长我记得是120分钟客观题和编程题之间没有明显的强制分区你可以自己分配时间。这里有一个很多人会犯的错误在客观题上纠结太久导致后面编程题只能匆忙写个半成品。我当时的策略是客观题控制在40分钟以内编程题留满70分钟附加题如果还有剩余时间就认真写没有剩余时间就把自己想到的要点简短列上去。从难度定位来看吉比特的笔试整体属于中规中矩的互联网公司水准没有太多偏题怪题但对基础概念的考察深入度和细节程度比较高。相比字节、阿里这类大厂的笔试题吉比特更看重候选人的计算机基本功是否扎实而不太会故意出那种非常规的脑筋急转弯式算法题。所以如果你平时在LeetCode上刷得还行这一块不用太慌。试卷结构大概可以这样归纳模块题量建议时间考察重点客观题约15-20题30-40分钟数据结构、操作系统、网络、C/Java、数据库编程题2-4题60-80分钟动态规划、图论、贪心、字符串处理附加题1-2题10-20分钟游戏理解、系统设计、数值敏感度还有一个容易被忽略的细节笔试前一定要确认自己的浏览器环境。吉比特的笔试系统对浏览器兼容性要求还算正常但如果你用的是老的IE内核或者关了JavaScript页面加载会出现异常。我那年就听说过有同学进了系统之后白屏折腾半天才找到客服换浏览器白白浪费了十几分钟。这类环境问题虽然不考能力但非常影响心态提前准备能少踩一个坑。这一节最后想强调一个观点笔试本质上是信息战加基本功战。你提前知道题型分布提前知道时间节奏就已经赢过了相当一部分不做功课直接上考场的人。接下来几年准备吉比特笔试的同学完全可以按这个结构去做针对性训练。2. 客观题高频考点这些知识点每年都在反复出现客观题虽然只有选择题但考察面非常广。根据我的回忆和圈内交流吉比特技术岗笔试的客观题部分大约覆盖以下几类按出现概率从高到低排列。2.1 数据结构与算法选择题里的重头戏数据结构在客观题里的占比是最高的大概能占到40%左右。二叉树的遍历序列推断、AVL树的旋转调整、哈希冲突的解决方式、图的最小生成树和最短路径算法这些都是老熟脸。我记得很清楚的一道题是给出一个二叉树的前序遍历和中序遍历要求选后序遍历的结果。这类题本身不难但如果你只在草稿纸上推演而没有养成先还原树结构再输出的习惯很容易在紧张状态下弄混顺序。我推荐的做法是先在空白处把树完整画出来再根据画好的结构去匹配选项不要靠心算强推。另一类高发题目是哈希表。吉比特似乎特别爱考哈希冲突和再散列比如给定一个哈希函数和表长依次插入几个关键字问你某个位置最终放的是什么。这类题的坑点在于题目可能会设定使用链地址法还是开放定址法读题稍微快一点就会用错规则。我那年就栽在这里选了一个看起来很合理的答案实际把开放定址法的探测顺序搞反了。还有AVL树的旋转调整也是选择题常客。遇到这类题不需要把整棵树重新画得特别精细你只需要定位首个失衡节点判断失衡类型是LL、RR、LR还是RL然后决定旋转方向。只要这一步判断对了后面基本不会出错。2.2 操作系统与并发虚拟内存、进程调度、死锁操作系统类题目在吉比特笔试中占比不低核心集中在虚拟内存、页面置换算法、进程调度策略和死锁条件。虚拟内存的题通常会给一个系统参数比如页面大小、页表项大小、逻辑地址位数让你计算页表占用空间或者支持的最大内存。这种计算题的核心就是单位换算要统一bit、Byte、KB、GB之间经常需要转换建议在草稿纸上把单位先列出来再算别在脑子里直接跳步。页面置换算法喜欢考LRU和FIFO。一般来说都会给一串访问序列问你缺页次数。这类题要把整个过程画成表格一列一列地推进状态基本不会错。我自己的习惯是把内存槽位画成横向格子每读一个页号就更新一行这样整个过程一目了然也能避免重复计数。死锁这块基本上就是考四个必要条件互斥、持有并等待、不可剥夺、循环等待的判断还有银行家算法的安全性检查。银行家算法这个知识点不难但计算量稍大如果实在时间紧张可以先跳过最后再回来做因为它不会影响你后面编程题的时间规划。2.3 C语言细节游戏公司的技术岗执念吉比特毕竟是游戏公司C在笔试中的地位比纯互联网公司要重不少。客观题里C相关的内容通常涵盖了智能指针、虚函数、内存布局、模板、构造函数与析构函数的调用顺序等。一道让我至今印象深刻的题是关于C对象内存布局的。题目给了一个含有虚函数、普通成员变量、静态成员变量的类问sizeof这个类是多少。这里面的坑点非常多虚函数表指针占8字节64位系统下、内存对齐规则、静态成员不占对象空间。如果你对这些细节掌握得不够扎实很容易在选项里打转。我记得正确的做法是把成员变量按字节大小排列再按对齐系数计算填充字节而不是简单地把所有成员大小加起来。另外一个很常考的点是拷贝构造函数、赋值运算符和移动构造的调用时机。题目往往会写一段看似简单但有多个返回值优化的代码然后问你输出顺序。这类题想拿分你脑子里必须有一套清晰的对象生命周期模型什么时候触发拷贝、什么时候触发移动、什么时候编译器做了省略优化。如果现场现推很容易漏掉隐式转换产生临时对象那一步。还有RAII和智能指针。吉比特的题喜欢结合异常安全来考比如在函数中创建两个对象中间抛了一个异常问对象的析构顺序以及内存是否泄漏。这类题的实质是在考察你是否理解栈对象的析构是自动执行的以及shared_ptr的引用计数在异常路径下是否还能正确递减。你用C刷过一些实际项目对这些就会有比较直观的感觉。2.4 计算机网络与数据库分值不大但送分题别丢网络和数据库在吉比特笔试中占比中等每门大概2到4道题。网络基本围绕TCP三次握手、四次挥手、TCP与UDP的区别、HTTP状态码的含义。其中TCP拥塞控制尤其喜欢考比如慢启动、拥塞避免、快重传、快恢复这几个阶段的阈值变化。题目一般会给一个初始拥塞窗口让你推演几个往返时间后的窗口大小。这种题画时间线即可不要试图直接心算。数据库这块主要考索引和事务隔离。B树索引的结构特点、什么情况下索引会失效是每年几乎都会出现的题目。事务方面则是四个隔离级别分别解决什么问题尤其是不可重复读和幻读的区别这两者非常容易被混为一谈。我建议你在复习时用自己的话把这两个概念复述一遍能说清楚才算真会。这里放一个简单的考点优先级表方便大家按投入产出比安排复习知识点模块重要程度复习策略数据结构算法高二叉树、哈希、AVL、图算法反复练C语言高虚函数、内存对齐、智能指针做专项刷题操作系统中高虚拟内存、页面置换、死锁画图练习计算机网络中TCP/UDP、HTTP、拥塞控制步骤记忆数据库中B树、索引失效、事务隔离级别对比3. 编程题实战复盘四道题的完整思路与代码要点编程题是我认为这场笔试真正区分度的所在。客观题大家差距不大但编程题能不能跑通、能不能拿满用例分直接决定了你能不能进入下一轮。我尽量按回忆把题目的类型和解题思路还原出来具体题目细节可能有偏差但题型方向非常有参考价值。3.1 动态规划最大连续子数组乘积笔试的第一道编程题是一道典型的动态规划题题目形式接近于求最大连续子数组乘积。跟最大子数组和不同乘积题因为有负负得正的特性单一状态记录最大值是不够的需要同时维护以当前位置结尾的最大值和最小值。这个题还算友好属于LeetCode中等偏下难度。我当时写的思路是用一个变量记录当前乘积最大值再用另一个变量记录当前乘积最小值。遍历数组时当前位置的最大值候选包括三种情况上一轮的最大值乘以当前数、上一轮的最小值乘以当前数、当前数本身。三者中取最大和最小分别更新。这里有一个很关键的点必须在更新最小值之前保存上一轮的最大值否则本轮的最小值会用到已经被修改的max值导致结果出错。很多人在这个问题上栽跟头我也会在代码注释里把这个点标红提醒自己。可以给出核心代码框架int maxProduct(vectorint nums) { int maxVal nums[0]; int minVal nums[0]; int result nums[0]; for (int i 1; i nums.size(); i) { int curMax maxVal * nums[i]; int curMin minVal * nums[i]; maxVal max(nums[i], max(curMax, curMin)); minVal min(nums[i], min(curMax, curMin)); result max(result, maxVal); } return result; }这道题真正要考察的不是你会不会写转移方程而是你是否知道为什么需要同时维护两个状态。如果你能把原因写清楚面试官对你的评价会明显高于一个只会背模板的人。3.2 图论带障碍物的最短路径第二道编程题是一道图论题类似于网格迷宫中从左上角走到右下角的最短路径网格里存在障碍物。最直观的解法是BFS因为BFS天然具有寻找最短路径的性质第一次到达终点时就是最短步数。这里需要有一个visited数组来防止重复入队否则同一个格子会被反复扩展导致超时甚至内存溢出。我尝试在脑子里重新推演了一遍从起点开始把当前坐标和步数入队每次弹出队首向上下左右四个方向扩展如果下一个格子是有效坐标、不是障碍物、且未被访问过就将其入队并标记为已访问。只要队列非空BFS会逐步扩张探索范围直到终点出队。由于是逐层扩张第一次到达终点的层数必然是结果。这类题还有一个容易忽略的细节起点和终点本身是否是障碍物。如果题目没有明确说明应该加上判断直接在开头返回-1或0。这个边界情况不一定能跑完所有用例但至少能让你在特殊输入上不丢分。如果你对自己的BFS写法不够自信还有一个替代方案是动态规划。因为在这个题目中移动方向如果限定为只能向右和向下那么DP会更容易写且不容易超内存。但笔试里题目往往没有明确说明方向限制所以默认BFS是最稳妥的。我建议平时练习时两种解法都写一遍遇到开考的题目类型可以迅速选择更合适的那种。3.3 贪心区间调度与最少加油次数第三道编程题是一道贪心算法题题型接近经典的任务调度或区间覆盖问题。比如给出一组会议的开始时间和结束时间要求计算最多能参加多少场不冲突的会议。这种题的经典解法是按结束时间排序然后依次尝试选择那些开始时间不早于上一个被选会议结束时间的会议。我在考场上解这道题时有一个体会贪心算法最怕的不是不会写而是不确定自己的策略是否正确。笔试现场没有太多时间证明策略的充分性所以最实用的方法是先想几个反例来验证自己的贪心策略。比如按开始时间排序是不是可行我很快举出一个反例一个持续时间极长的会议如果开始时间很早按开始时间排序可能会先选它从而挤掉了后面一堆短会议答案显然不是最优。这个反例也帮助我坚定地选择了按结束时间排序。这一题在实现层面几乎没有难度一个排序加一次遍历十几行代码就能写完。它的价值在于提醒你笔试时的算法选择一定要建立在快速自证或反证之上否则你写出来的代码再工整也可能是错的。3.4 字符串表达式求值与状态机第四道编程题稍微复杂一些是结合了字符串解析和状态机思想的表达式求值题类近于实现一个支持加减乘除和括号的简单计算器。这道题的常见解法是用两个栈一个数字栈一个运算符栈。遍历字符串时如果遇到数字就不断累积形成完整整数遇到运算符则先比较它与栈顶运算符的优先级如果当前优先级较低就把栈顶运算符弹出来计算直到满足入栈条件遇到左括号直接入栈遇到右括号则一直计算到匹配的左括号为止。这里的实现需要特别注意两点一是字符串中可能存在空格需要跳过二是数字可能是多位数不能只读一个字符就完事。我自己在考场上写这种题的时候有一个习惯先把整个流程在注释里写清楚再逐步实现。比如先定义优先级函数再处理数字提取最后处理运算符逻辑。这样做有两个好处一是思路不会乱二是如果代码中途写不下去了注释里留下的逻辑框架也能让阅卷人看到你的思路是完整的不至于完全零分。记得我最后跑通了很多用例但漏掉了一个重要边界情况表达式以负数开头比如-32。我的解析逻辑在遇到开头的负号时会直接当作运算符处理导致报错。这类边界其实可以通过一个很简单的判断解决如果当前字符是负号或者正号并且它处于表达式开头或者前一个有效字符是左括号就把它当作一元运算符处理在数字栈中压入0再把符号当作二元运算符处理。这种细节在笔试中非常致命因为它不常出现在给的示例用例里却经常出现在隐藏用例中。3.5 编程题的时间分配与取舍编程题不一定都需要全部AC我的策略是先把有把握的题写到能跑过样例的程度再回头优化。如果你在某一题卡了20分钟以上还没有任何思路果断换下一道最后再回来碰运气。笔试是一个整体评价的过程不是单题定胜负把时间投入到自己有把握的题目上性价比远高于死磕一题。4. 游戏向附加题这类题难的不是技术是产品感吉比特作为游戏公司笔试中还有一类非常独特的附加题这是普通互联网公司笔试里几乎见不到的。这类题看起来不像技术题但对进入游戏行业的意愿和能力考察非常直接。4.1 游戏理解题你为什么在玩这个游戏我遇到的一道附加题大致是分析你最近在玩的一款游戏的核心循环和付费点并从系统设计角度给出建议。这类题的问题形式比较开放不像客观题有标准答案它考察的是你是否真正理解游戏的玩法与商业模式。我的策略是选一款自己真正深入了解的游戏来分析不要为了显得高端去写一些自己只是浅尝辄止的作品。我当时选了一款放置类手游把核心循环拆成了挂机获取资源、消耗资源提升战力、通关解锁更高资源效率的闭环并指出付费点主要集中在加速等待时间和解锁关键资源。这个分析框架并不复杂但胜在结构清晰能让阅卷人一眼看到你的思考路径。建议在笔试之前认真准备1到2款不同类型游戏的核心系统分析。每一款写清楚三个要素核心循环是什么、付费点在哪里、数值成长如何驱动玩家行为。这个准备不仅能帮你应付附加题在后续的面试中也会是一个非常有效的谈资。4.2 数值敏感度题概率、期望与货币流通另一类附加题偏数值向比如给你一个抽卡系统的规则让你计算某个稀有道具的期望获取次数或者让你设计一个双货币系统的兑换关系。这类题目需要一定的数学功底但更考验的是数值直觉。我记得遇到一个类似十连抽保底的规则我需要在很短的时间内估算单抽和一个十连的期望价值差异。我当时用的方法不是直接硬算公式而是拆开两种情况有保底时第几次出货的期望、没有保底时几何分布的期望再按保底触发概率加权。这样虽然写了比较久但每一步都有明确的数学依据即使最后答案有偏差阅卷人也看得出来思路是严谨的。如果你是第一次接触这类题目不用怕游戏数值设计的基础概念并不高深核心就是期望、概率、边际收益和资源产出消耗模型。你可以提前看一些游戏数值设计相关的文章重点了解什么是期望、什么是保底机制、什么是货币通缩与通胀这些概念一旦建立了附加题基本都能聊上几句。4.3 附加题的答题策略不要写小作文还有一点非常重要附加题不是作文题不需要写一大篇华丽的论述。我看到很多人在附加题上花大量时间写出了一篇一千多字的分析文章但结构松散观点模糊。阅卷人每天要看很多份卷子最怕的就是又长又没有重点的答案。我的建议是采用总-分结构先写核心结论再分要点展开每个要点前加一个简短的标签。比如核心循环资源获取、资源转化、战力验证付费点时间加速、资源购买、外观收集。每个标签下面用2到3句话说明逻辑即可。这种答法在形式上就能传递出你的结构化思维比长篇大论更有说服力。5. 复盘与避坑清单我踩过的坑你们真的可以避开笔试结束之后我花了很长一段时间去复盘整个过程这里有太多因为准备不充分或临场策略失误带来的教训。我把它整理成一个清单希望能让你少走一些弯路。5.1 环境准备是真的不能马虎我自己的经历是笔试前两天才尝试登录系统结果发现账号密码找不到了临时找HR帮忙重置好在赶上了考试前解决问题。如果你准备参加在线笔试建议提前一周就完成账号登录、摄像头测试、浏览器兼容性检查。还有一个很容易被忽略的点网络稳定性。笔试过程中如果断网你的代码提交记录可能会丢失虽然系统一般有自动提交机制但恢复之后心态已经受了影响。有条件的话尽量使用有线网络如果没有条件也一定要找一个网络信号稳定的地方。摄像头和屏幕共享的问题也要提前确认。吉比特的笔试系统一般要求开启摄像头如果是笔记本内置摄像头还好如果是外接摄像头一定要提前测试位置是否合适、驱动是否正常。考试中途摄像头突然失效导致被判定为作弊那就太冤了。5.2 时间分配最忌讳平均用力我的第一场笔试就犯了平均用力的错误试图在每个题目上都做到完美结果是前面的客观题消耗了大量时间编程题只能草草收场。后来我学乖了任何一场笔试进场前就给自己设定一个硬性的时间节点。比如本场笔试我给自己定的规则是客观题必须在40分钟之内完成无论遇到多难的题都不能恋战先标记一个候选答案回头有时间再改。编程题上来先花5分钟通读四道题从简单的开始写确保把容易拿到的分先拿到手。附加题无论如何留10到15分钟哪怕只能写一个框架也要让阅卷人看到你对游戏行业的理解和投入。这套策略还有一个隐藏的好处它帮你降低了焦虑感。当你明确知道下一步该做什么时对未知的恐惧会小很多反而能把已有水平发挥出来。5.3 刷题准备要以笔试风格为导向如果你还有两到三周的备赛时间刷题方向不要太发散。吉比特笔试的编程题整体集中在LeetCode中等难度涉猎动态规划、图搜索、贪心、字符串处理这几个大类完全可以做针对性训练。我的建议是每天保持2到3道题量的同时专门总结每类题型的解题模板。比如动态规划的状态定义、转移方程、初始化、边界处理四步法BFS的队列结构、visited数组、二维坐标扩展套路这些都是可以反复套用的框架。有了这些框架笔试现场你不会出现完全不知道从何下手的情况。不要只刷不做笔记每道题完成后用一两句话在旁边写下这道题的核心思路和易错点。这个笔记的价值在考前最后一天会被无限放大因为那时候你不可能再把所有题刷一遍但看一遍自己的错题和笔记能在短时间内把所有高频考点重新激活。5.4 心态和体能也是笔试的一部分在线笔试虽然是在家里或者宿舍进行但它消耗的精力一点不比线下笔试少。两个小时的全程高脑力输出加上摄像头带来的压力结束之后整个人的状态会非常疲惫。我建议笔试前睡足、吃好不要熬夜刷题到凌晨。考场上如果遇到一道完全没有思路的题最好的处理方式是深呼吸然后先跳过去做下一道。当你做完后面几道题自信心会回升再回头来研究那道难题时可能你的思路突然就打开了。这种心态管理能力在笔试和面试中都非常重要它甚至比多做几道题更能影响你的最终结果。5.5 笔试之后的无缝衔接笔试结束并不意味着万事大吉。吉比特的招聘流程通常笔试之后会进入面试阶段而面试官很有可能会延续笔试中的问题继续深入追问。所以我的建议是笔试结束后尽快整理一份自己的答题笔记重点记录你在笔试中认为回答得不太好的内容然后立刻去查漏补缺。我就是吃了这个亏的。笔试中那道动态规划题我写得还行但面试时面试官问了一个变种如果数组中可以有0该怎么处理我当时没有准备过这个变种临场答得磕磕绊绊。现在回头想如果在笔试后把每种题型的常见变种都过一遍面试时的表现会从容很多。最后再分享一个个人心得笔试成功的关键只有两条一是基本功扎实二是信息充分准备。前者靠日积月累后者就看你能不能找到像本文这样真实可参考的经验。希望在你看完这篇文章之后能更清楚自己应该把力气花在哪个方向而不是盲目地刷一堆跟目标岗位不匹配的内容。祝大家都能在笔试中发挥出自己真实的水平顺利拿到心仪的面试机会。
返回列表