每年八月底到九月初,是秋招笔试最密集的时间段。2023年携程秋招技术通用岗第二批笔试,题目整体风格偏基础、实用,覆盖范围是“数据结构与算法 + 计算机基础 + 少量场景题”,难度在互联网大厂里算中等偏上,比字节、阿里要温和一些,但比很多中小厂要扎实。当时我全程做下来,最直观的感受是:算法题不给纯偏题怪题,但会在边界条件和数据范围上设一些坑;基础题不背定义,而是考察你有没有真正写过代码、调过接口、排查过线上问题。
如果你是准备投携程技术岗的应届生,或者正在备战秋招想了解携程笔试风格的,这篇文章值得看完。我会把考核范围、题型分布、做题策略、典型题目的解法思路、以及我踩过的坑全部拆开讲,尽量还原真实考场体验。
1. 整场笔试的全景拆解:科目、题量与时间分配
1.1 笔试题型与科目分布
2023年携程秋招技术通用岗第二批笔试,整体分为两个大模块:第一部分是通用选择题,第二部分是编程题。
选择题方面,不区分具体技术方向,统一考查计算机基础。题目数量在二十道上下,涵盖数据结构、操作系统、计算机网络、数据库四门核心课,少量题目涉及Java或C++语言特性。没有出现行测、性格测试这类非技术内容,整体非常聚焦。
编程题部分,一般是两道到三道算法题,总分值在笔试中占比最高。题目难度呈梯度上升:第一题通常是简单到中等偏易的模拟或字符串处理,第二题是中等难度的搜索或动态规划,第三题则偏向思维题或复杂搜索。2023年第二批笔试的三道题,整体考察重心在字符串处理、状态枚举、以及带一定思维难度的贪心/动态规划上。
时间安排上,笔试总时长一般为120分钟。建议的分配思路是:选择题控制在四十分钟以内,编程题留足八十分钟。因为选择题个别题存在二义性或者需要动手推演,你不能在第一题上恋战,否则后面编程题会非常赶。
1.2 编程题具体分值分布
从笔试平台的计分规则来看,编程题通常每题分值相同,按照通过的测试用例比例给分,不是“全对才有分”。这意味着你的代码哪怕只能过部分case,也能拿到一部分分数。这一点非常重要,二批笔试第三题难度不低,很多人拿零分,但如果你能做到暴力解加部分剪枝,至少能保底30%到50%的分数。
提示:不要指望每道题都拿满分。正确策略是保第一题全过,第二题尽量全过,第三题能拿多少拿多少。
1.3 笔试平台与考试环境
2023年携程笔试使用的是牛客网系统,支持本地IDE调试后粘贴代码,也支持在线编辑器直接写。建议提前适应牛客网的输入输出模式:所有题目的输入都是标准输入,输出也是标准输出,不涉及核心代码模式(就是不给函数头,让你自己读数据),这一点和力扣差异很大。平时刷题习惯了力扣的人,需要额外练一下IO处理,否则光读入就能卡住几分钟。
代码提交语言方面,Java、C++、Python都可以用。我建议用自己最熟悉、最快能写对的语言,不需要刻意追求大厂常用的语言。大多数人的问题是代码量不够熟练,而不是语言选择本身。
2. 选择题的核心考点与实战分析方法
2.1 数据结构:偏重树与图的遍历特性
选择题里的数据结构题目,2023年第二批笔试风格是“概念原理 + 小规模推演”,但推演量不大。最常考的方向包括:
- 二叉树的先序、中序、后序、层序转换
- 二叉搜索树/平衡树的插入删除过程与时间代价
- 哈希表的冲突处理方式,尤其是链地址法、开放定址法的区别
- 图论的邻接矩阵与邻接表在空间、时间上的差异
- 堆的插入、删除、建堆过程及调整次数
其中二叉树遍历是每年必考的重点。考场上的常见坑是:题目给了一棵树的先序和中序,让你推断后序,或者给定层序让你判断是否为某棵二叉搜索树的合法遍历。应对技巧是你必须动笔手推,不要在心里“空想”结果。这种题一般能推出来,但很容易在某个节点上卡住。
比如下面这种典型出题方式:已知某二叉树先序遍历序列为ABDCE,中序遍历序列为DBACE,问后序遍历是什么。解题关键是,先序第一个节点A就是根节点,然后去中序里找到A,A左边是左子树(DB),右边是右子树(CE),再分别递归处理。手推一遍非常快,但如果你跳步,很容易误选。
图的遍历在笔试选择题中出现时,常考“给定邻接表,写出从某点出发的DFS或BFS序列”,还有就是拓扑排序。这类题难度不大,关键在于不要忽略“按编号从小到大的顺序访问邻接点”这种隐含条件。
2.2 操作系统:进程调度与内存分页是重点
操作系统部分在携程笔试中占比不低,风格偏基础和实际结合。高概率考查的知识点包括:
- 进程状态转换图:就绪、运行、阻塞三态,以及各状态之间的转换条件
- 进程调度算法:先来先服务、短作业优先、时间片轮转、优先级调度
- 虚拟内存和页面置换算法:OPT、FIFO、LRU,计算缺页次数
- 死锁的四个必要条件:互斥、持有并等待、不可剥夺、循环等待
- 线程与进程的区别:共享地址空间、内核资源消耗、切换成本
页面置换算法几乎每年必考。这题本身没有任何难度,会画表、会数缺页,就能做对。但2023年第二批笔试有一个变形:题目的访问序列较长,像7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1,物理块数给3或4,要求比较LRU和FIFO的缺页次数差异。这种题你在草稿纸上推演的时候,很容易在一个访问上漏掉置换过程。我的建议是不要在一个题上反复验证超过五分钟,写完就过,千万别恋战。
死锁的判断也是高频考点。有时候题目给出一组资源分配表,问当前是否处于死锁状态。这类题的解法是,找能完成的进程,执行完毕释放资源,再看剩下的进程能否继续。只要有一个进程能推进,就不算死锁。
实操心得:操作系统选择题,不要把时间花在背概念上。你要做的是把王道考研那本操作系统里的例题全部做完,里面大量题就是笔试原题的变体。
2.3 计算机网络:TCP与HTTP是绝对核心
计算机网络题目集中在传输层和应用层,TCP的三次握手、四次挥手、拥塞控制是每年必问。具体表现形式的套路包括:
- 给定TCP首部标志位,问该报文段对应三次握手的哪一次
- 计算一个TCP连接从建立到传输完毕需要多少个RTT
- 滑动窗口机制中,发送窗口大小与接收窗口、拥塞窗口的关系
- HTTP/1.0、HTTP/1.1、HTTP/2.0之间区别,尤其是keep-alive、多路复用
- Cookie与Session的区别和联系
三次握手四次挥手的细节,很多做题的人容易混淆。比如第三次挥手之后,客户端进入TIME_WAIT状态,等待2MSL,很多同学选择题问“TIME_WAIT为什么存在”会选“保证客户端最后一个ACK能到达服务器”以及“让旧连接的数据包在网络中消失”,但有时候只让选一个,需要认真读题。
TCP拥塞控制中,慢启动阈值、拥塞避免、快重传、快恢复,这些机制经常揉在一道题里。出题人会给一个初始ssthresh,问你经过几个RTT后拥塞窗口增长到多少。这种题没什么特别技巧,就是老老实实画窗口变化表,注意不要漏掉超时事件后ssthresh减半、cwnd重置的规则。
HTTP部分,2023年的考题更偏实用:一个页面里包含许多小资源文件,问HTTP/1.1长连接与HTTP/2.0多路复用各自的加载耗时对比。这里面涉及“队头阻塞”的关键概念。HTTP/1.1下,即使使用长连接,同一连接上的多个请求也是串行处理的,一个资源卡住,后面资源全部被阻塞。所以很多网站通过域名分片来绕过这个限制。HTTP/2.0引入多路复用和二进制分帧,可以并行传输,但TCP层的队头阻塞并没有完全消除。
2.4 数据库:索引与事务隔离级别必考
数据库选择题的数量在两到三题左右,考察的范围比较固定:
- 事务的ACID特性以及各特性的实现原理
- 隔离级别:读未提交、读已提交、可重复读、串行化,对应的并发问题
- B+树索引与哈希索引的区别,联合索引的最左前缀原则
- 死锁检测与MVCC机制
最容易出错的是联合索引和最左前缀原则。题目可能给你一个联合索引(a, b, c),然后问下面哪些查询能够用到这个索引。很多同学只知道“必须包含a列才能走索引”,但忽略了在a相等时b可以继续走索引,还有范围查询之后列会失效的规则。比如WHERE a = 1 AND b > 2 AND c = 3,这个查询里,a和b能走索引,但c用不到,因为b是范围条件。这种细节,笔试几乎年年考,务必吃透。
MVCC和隔离级别也是高频。可重复读级别下,什么时候能看到其他事务新插入的数据?如果题目组合了“当前读”和“快照读”的场景,答案就会完全不同。当前读加锁会看到最新已提交数据,快照读则基于事务第一次读时生成的快照。这两个容易混。
提示:数据库选择题不要只记结论,要搭一个自己的推演框架。遇到隔离级别问题,就在草稿纸上画几个事务的时间线,标出各自读写操作,再判断结果是否符合隔离级别定义。
2.5 语言特性与场景题
2023年第二批笔试的选择题里,编程语言相关的题目不多,但也有两三道。Java方向主要考察HashMap的底层实现、线程安全集合、JVM内存区域划分;C++方向常考STL容器的时间复杂度、虚函数表、智能指针。由于是通用技术岗,不会只针对某一种语言出题,你可以根据自己熟悉的语言选做。
场景题一般会结合线上问题,比如“线上CPU飙升到100%,如何排查”或者“某接口响应变慢,可能的原因有哪些”。这种题没有标准答案,按优先级排查的思路基本不会错。比如CPU飙升先想到死循环、频繁GC、线程过多、存在长耗时计算,这些选项选上基本稳妥。
3. 编程题逐题拆解:从题意到AC代码
3.1 第一题:字符串处理与模拟
二批笔试的第一题通常是送分题,但送得不舒服,需要在字符串或者数组上做一定程度的模拟。这类题考察的是“读题是否仔细”和“边界是否想全”,而不是“有没有掌握高深算法”。
常见出题形式是给你一个字符串序列,需要你按照规则替换、压缩或者统计。2023年常见的具体题目类型是“压缩连续相同字符”,类似对字符串做一种简单游程编码,输出压缩后的字符串。比如输入aaaabbbcc,输出4a3b2c。
这类题的时间复杂度要求不高,O(n)就能过,难度在于输入输出边界。因为牛客网是多case输入,你需要用循环读入所有测试用例,而不是只处理一组。很多第一次用牛客网的人,在这里挂掉。
我给出一个典型的参考写法(Java):
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String s = sc.nextLine(); if (s.isEmpty()) { continue; } StringBuilder sb = new StringBuilder(); int cnt = 1; for (int i = 1; i <= s.length(); i++) { if (i < s.length() && s.charAt(i) == s.charAt(i - 1)) { cnt++; } else { sb.append(cnt).append(s.charAt(i - 1)); cnt = 1; } } System.out.println(sb.toString()); } sc.close(); } }这个代码里最值得说的是两个边界点:一是while (sc.hasNextLine()),这在牛客网多case输入时是必需的;二是for循环遍历到i == s.length()结束,在循环体里做收尾,不要漏掉最后一组连续字符。这种写法可以避免在循环结束后再单独处理一次,不容易出错。
如果输入字符串特别长,拼接性能也需要考虑。用StringBuilder而不是直接用String相加,这是最基本的要求。实际笔试中,如果用的是Python,直接用str +=也没问题,因为Python对字符串拼接做了优化。
3.2 第二题:状态搜索或二维动态规划
第二题一般开始上强度了。2023年第二批笔试第二题,从题型来看,大概率是二维网格图上的最短路径BFS,或者带有条件限制的状态搜索。BFS本身不是难点,难点往往在状态定义上:搜索时需要维护的信息不只是坐标(x, y),可能还包括“已经使用了某个道具”或者“当前步数奇偶性”,这就是所谓的“状态BFS”。
出题形式可能是这样的:给定一个M x N的网格,每个格子上是0、1或其他数字,0能走,1不能走,从左上角走到右下角,中间最多能消除k个障碍物,求最短路径步数。
这道题如果你只用visited[x][y]去重,答案是错的。因为到达同一个格子时,如果剩余消除次数不同,未来的可达性就完全不同。所以visited数组必须带第三个维度:visited[x][y][used],used表示已经使用的消除次数。状态总数是M * N * k,比较小的时候完全可以用BFS暴力搜完。
参考实现(Java):
import java.util.*; public class Main { static int[][] dirs = {{1,0},{-1,0},{0,1},{0,-1}}; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); int k = sc.nextInt(); int[][] grid = new int[m][n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { grid[i][j] = sc.nextInt(); } } boolean[][][] visited = new boolean[m][n][k+1]; Queue<int[]> queue = new LinkedList<>(); queue.offer(new int[]{0,0,0,0}); // x, y, used, steps visited[0][0][0] = true; while (!queue.isEmpty()) { int[] cur = queue.poll(); int x = cur[0], y = cur[1], used = cur[2], steps = cur[3]; if (x == m-1 && y == n-1) { System.out.println(steps); return; } for (int[] d : dirs) { int nx = x + d[0], ny = y + d[1]; if (nx < 0 || nx >= m || ny < 0 || ny >= n) continue; int nused = used + grid[nx][ny]; if (nused <= k && !visited[nx][ny][nused]) { visited[nx][ny][nused] = true; queue.offer(new int[]{nx, ny, nused, steps + 1}); } } } System.out.println(-1); } }这题的核心点是:visited数组的设计,体现你对状态BFS的理解。普通网格BFS只把“坐标”当作状态,但这题需要把“剩余技能次数”也纳入状态空间,否则会漏解。
如果你在考场上一时间想不到三维visited,那第二题的结局大概率是答案错误。这种经验只能靠平时多刷“状态压缩BFS”,多练“带条件的网格搜索”。力扣上类似题有“二进制矩阵中的最短路径”以及“K站中转内最便宜的航班”,可以对照练。
3.3 第三题:思维题与优化边界
第三题是整套笔试卷的分水岭,出现的是典型的需要思维转化的题目。常见方向包括贪心加数据结构优化、二分答案,或者经过转化后变成一个经典动态规划问题。题目本身阅读量不大,但需要能够在短时间内看穿题目的本质。
我曾遇到过一个类似题型的变形题:给定一个包含正负数混合的数组,要求把数组分割成若干段连续子数组,每段的和都不超过某个限定值M,求最少分割成多少段。这种题大家第一反应是“每个子数组越长越好”,于是从左往右贪心地扩展。但贪心在这里可能会出错,因为单个元素本身可能就超过了M,需要单独处理;而且如果允许对数组进行重排,那又变成了另一个问题。2023年第二批笔试的第三题,基本就是这个难度量级的变种。
对于这种题,考场上如果你不能在五到十分钟内想出正解,直接退而求其次写暴力或者部分分代码。例如用DFS枚举所有可能的分割点,然后取合法方案里的最小段数。虽然复杂度是O(2^n),过不了大数据,但小数据case能拿到分。考试平台按部分case给分,这已经不是秘密。
参考一个通用的部分分写法(DFS枚举分割点):
import java.util.*; public class Main { static int n; static long limit; static long[] a; static int ans = Integer.MAX_VALUE; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); limit = sc.nextLong(); a = new long[n]; for (int i = 0; i < n; i++) a[i] = sc.nextLong(); dfs(0, 0, 0); System.out.println(ans); } static void dfs(int index, int segCount, long curSum) { if (index == n) { ans = Math.min(ans, segCount); return; } if (segCount >= ans) return; // 剪枝 if (curSum > 0 && curSum + a[index] <= limit) { dfs(index + 1, segCount, curSum + a[index]); } // 新开一段 if (a[index] <= limit) { dfs(index + 1, segCount + 1, a[index]); } } }这段代码不是高分代码,但它在处理小数据时不会超时,能稳定拿分。把所有可能的情况都枚举了,只要数据范围在10到15以内,基本没问题。笔试系统里,这种部分正确代码的得分率远高于你花四十分钟死磕正解但最后编译失败或者超时的结果。
3.4 做题顺序与时间控制策略
编程题时间分配上,我给一个最稳妥的公式:
- 第一题:20分钟内必须提交通过,争取15分钟内解决。
- 第二题:40分钟为限,超过45分钟没有头绪,立刻放弃进入第三题。
- 第三题:剩余时间全力做,先写出暴力版本,保证过小数据case,再想优化。
实际操作中,很多人会陷入“第二题我马上想出来了,再做五分钟”的陷阱。这种心态是大忌。笔试考察的不只是你会不会做,还有你会不会取舍。你在一道题目上多花二十分钟,可能多拿30%的分数,但第三题如果因为没时间写暴力直接零分,损失更大。
还有一个细节是样例测试与提交测试的差异。牛客网笔试允许你在本地IDE运行,通过样例测试后再粘贴到系统里。强烈建议所有代码先在本地跑通样例,再粘贴到提交框,不要在在线编辑框里直接写长代码,一旦网络波动或者误触刷新,全部白写。
4. 备考准备与线下实战经验补充
4.1 明确优先级:刷题与基础必须并行
围绕携程笔试的备考,时间分配上我建议六成刷题,四成看基础。不要相信“只刷力扣就能过笔试”这种话。力扣题目是给单个函数体,输入输出不需要你自己处理,这导致很多人长期不练IO处理,一到笔试平台就露馅。
刷题的重点方向,按优先级排序是:字符串处理、二叉树、图(BFS/DFS)、动态规划(背包、区间、状态压缩)、贪心、排序,最后是高级数据结构。力扣热题HOT 100里前60题做完,笔试第一题和第二题基本就稳了。第三题则需要额外拓展,建议专门刷“牛客网历年大厂笔试真题”,重点关注携程、美团、拼多多这些互联网公司的题目,风格非常接近。
4.2 网测环境的预演:输入输出与多case处理
笔试当天最大的隐性杀手是输入输出格式。力扣核心代码模式与牛客网ACM模式的差异,是很多人第一次参加笔试就挂掉的直接原因。你需要提前熟悉以下几个固定范式:
- 单行读入一个整数,多组数据用while循环处理
- 第一行输入n、m,接下来n行每行m个值
- 输入一行字符串,可能包含空格,用nextLine读取
- 输出结果后是否需要换行,一般都要
如果你用的是Java,不要用next()读一整行字符串,它会按空格截断。应该用scanner.nextLine()并注意吃掉上一行遗留的换行符。Python则要注意input()在文件末尾会抛EOFError,用sys.stdin.read().split()可以避免很多问题。
提示:考前一天找一个模拟平台做一套完整的ACM模式题目,不求数量,求完整体验。建议用牛客网自己的模拟笔试功能,把读数据、处理、输出的全套流程走一遍。
4.3 心态与考场细节
笔试是秋招第一道门槛,很多人败在心态而不是题目难度上。单独一道题卡住,不一定代表整体发挥不好,关键在于你能否及时跳转。
考场上的额外建议:
- 笔试前把电脑充好电,网络稳定,关掉所有可能弹窗的软件。
- 准备草稿纸和笔。有些题目画图推演比空想快得多。
- 每道编程题提交前,多考虑一下边界值:空字符串、单元素数组、最大数据范围、全部相同元素等。
- 如果题目不限制输出顺序,尽量按字典序排序后再输出,避免因输出顺序不匹配被判错。
还有个容易忽略的点:携程笔试选择题部分,某些题是不定项选择,多选、少选、错选均不得分。这种情况如果你不确定,尽量不要冒险多选。不过2023年二批笔试,不定项选择数量不多,多数是单选,但仍然要看清楚题干表述。
4.4 后续面试可能会问到的笔试关联点
笔试之后,面试官可能会针对你的笔试代码追问思路,尤其是第二题和第三题。建议笔试结束后把每道题的思路整理成文字,尤其是你当时的解题想法、有没有尝试不同方案、复杂度是多少。面试时如果你的回答是“我笔试卷子上直接写的”,“不确定复杂度假”这种,容易让面试官觉得你的算法功底不扎实。
特别是第三题,面试官问的往往不是“这道题怎么写”,而是“你当时为什么最终选了这种解法,有没有考虑过另一种优化”。你要能回答出二分答案的依据、单调性的证明思路,或者暴力版本在数据量增大后复杂度如何爆炸。这些在笔试时可能来不及写,但事后复盘一定要补上。
5. 常见问题与排查技巧:笔试当天可能遇到的那些坑
5.1 程序本地能跑,提交却编译失败
这类问题的根源,九成是Java或C++的类名问题。牛客网要求Java主类必须命名为Main,不要带package语句,也不要public class后面跟别的名字。C++则注意不要使用本地编译器支持但评测机不支持的新特性,比如C++17的std::optional。
Python虽然一般没有类名问题,但要注意版本差异。评测机大多数是Python 3.8左右,如果你用了3.10才支持的语法,比如match语句,直接编译失败。
5.2 样例通过,提交却0分
遇到这个情况,优先考虑三种可能性:
- 没有用while循环读入多组数据,只处理了一组。
- 数组越界,导致运行时异常,牛客网统一判为0分。
- 精度问题,比如要求输出浮点数但输出格式与答案不一致。
其中数组越界是最常见的。笔试时你本地测的是小样例,数组刚好够用,但提交的数据范围更大,越界直接RE。建议对数组长度大于等于数据范围上限再加5到10的余量,这是最朴素的防御性编码。
5.3 运行超时怎么判断是代码问题还是平台问题
运行超时基本就是算法复杂度太高。你可以先看数据范围:数据是10^5级别,你的解法是O(n^2),那一定超时。这时候别想着优化常数,直接换思路。二分、排序、前缀和、双指针、哈希表,这些O(n)或者O(n log n)的工具,是解决超时的主要武器。
如果已经写了O(n log n)的解法还在超时,再考虑是不是输入输出的问题。Java使用Scanner读10^6级别的大数据确实会比较慢,可以换用BufferedReader自己解析。Python则建议用sys.stdin.buffer.read()来一次性读入,再split。这种输入输出层面的优化,有时能将耗时降低一半以上。
5.4 选择题存在争议选项怎么办
非技术内容的选择题,有时候会出现两个选项都说得通的情况。这时候不要纠结,按最主流的结论选。比如TCP相关题目,有些教材对某个细节的表述不同,但笔试命题人一定按照最常见的那本教材出题。以王道或者谢希仁版《计算机网络》为准基本不会错。
如果你判断某道题可能有问题,做完就略过,不要反复回头修改。在不确定的题目上消耗过长时间,只会拖累后面的编程题。
6. 从第二批笔试反推携程的招聘偏好
6.1 技术通用岗看重扎实基础而非偏题怪题
从2023年第二批笔试的题目设置来看,携程技术通用岗非常看重应聘者的计算机基础是否扎实。选择题覆盖的课程范围很标准,难度不算高,但知识点密集。这意味着如果你本科学的课程体系比较完整,不需要特意准备就能答对大部分,反之如果基础薄弱,临时抱佛脚很难在短期内补齐。
编程题部分没有刻意追求难题,除了第三题之外,前两题都是经典的算法题变形。这传递出的信号是:携程希望候选人具备“遇到常见问题能够快速写出可运行代码”的基本工程能力,而不是只看重竞赛型解题能力。
6.2 业务导向:场景题与工程化思维并存
选择题里出现了一些线上排查类的场景题,比如接口变慢、CPU飙升这类,说明携程在招人时比较关注候选人的工程思维。虽然笔试阶段占比不大,但如果你能在评论区或面试时展示出对这类问题的思考,会是一个明显的加分项。
秋招笔试只是第一步,通过笔试之后的技术面,会更加关注你在项目中的细节、系统设计的能力、以及在压力下排查问题的能力。笔试题其实就是一个引子,方便面试官在后续环节继续深挖。
对我个人来说,携程笔试给我最大的启发是:大厂笔试不是比谁刷的题多,而是把计算机基础、算法能力和工程思维放在同一张卷子里综合考查。第三题不会做不丢人,但前两题因为边界条件或者输入输出处理失误而丢分,就太可惜了。如果你准备时间有限,先把所有基础选择题的经典考点过一遍,再练熟三道经典题型的AC解法,通过概率会提升得非常明显。
最后再说一个容易被忽略的小技巧:笔试结束后,立刻把第三题当时卡住的地方搜一遍题解,理解透。这套题后续在面试时被追问的概率很高,提前消化,远比等到面试前一天临时补要从容。祝你顺利通过笔试,后面还有更多挑战等着你。