2023年携程秋招技术通用岗第四批笔试,我是在10月中旬参加的。当时投递简历后等了一个多月,差点以为简历被筛掉了,结果一个周五晚上突然收到了笔试链接,48小时内完成。这种批次安排其实挺有讲究:携程的秋招笔试分批放出,第四批通常处于整体招聘节奏的偏后期,意味着HC(招聘名额)已经不像第一批那么充裕,笔试筛选的标准往往也更高。所以如果你也收到的是靠后批次的笔试邀请,不用紧张,但要有心理准备——这一批的竞争对手里,很多是前面几批没赶上、或者补投简历的优质候选人,整体池子并不弱。
这篇复盘我不准备泛泛而谈"笔试经验",而是把第四批笔试从试卷结构、算法题复盘、选择题考察方向、现场执行策略、到笔试后的面试衔接,一条线完整拆开。尤其是那些容易丢分的细节——边界条件、数据范围、甚至代码环境的操作习惯——每一个都可能导致你明明会做却拿不到分。适合正在准备大厂秋招/春招、尤其是冲着携程或其他OTA(在线旅游)企业去的同学参考。
1. 第四批笔试的整体盘面:批次节奏与试卷构成
1.1 为什么会有第四批,靠后批次要关注什么
每年秋招,大厂笔试都会分批放出,携程也不例外。第四批意味着什么?首先,核心岗位的大部分offer已经在前三批发放或处于面试流程中,但一定还有部分岗位因为候选人放弃、或者业务部门加名额而继续开放。第四批更像是一个"补位"和"候补"的组合,它和第一批的区别在于——第一批是筛选为主的宽进严出,第四批则倾向于定向补录,所以笔试成绩在你后续流程中的参考权重是不低的。
观察身边进入携程面试的同学,后批次笔试通过的人往往有两个共同点:一是算法题做得扎实,不依靠运气;二是综合部分(选择题/通用能力)没有明显短板。因为到第四批,HR看笔试结果是看整体分数线的,单纯靠某一题超常发挥很难拉回总分。
1.2 试卷模块与分值分布
第四批技术通用岗的笔试是在线完成的,总时长大约2小时,我这场是三部分,整体结构如下:
| 模块 | 题型 | 题量 | 时间建议 |
|---|---|---|---|
| 第一部分 | 技术单选题 | 15-20题 | 30分钟 |
| 第二部分 | 通用能力题(阅读理解/逻辑/资料分析) | 10-15题 | 20分钟 |
| 第三部分 | 编程题 | 2题(中等+偏难) | 60-70分钟 |
这里要提醒一下:不是说所有批次都完全一样,但整体框架是稳定的。技术通用岗并不是纯做算法题,它有相当比例的基础知识选择题,覆盖数据结构、操作系统、网络、数据库、Java/Python等语言基础。这在第四批笔试里反而是拉分关键——因为很多人平常刷惯了LeetCode,对这类概念的记忆已经很模糊了。
分值占比上,编程题是绝对大头,通常是60-70分的体量,选择题占比30-40分。通用能力部分往往不计入技术分,但会作为面试时的综合素质参考。所以策略上,必须优先保证编程题的通透度和正确率,再抽时间做选择题。
2. 编程题核心复盘:算法考点与典型陷阱
2.1 高频考点分布
我复盘了这批笔试的编程题以及身边朋友反馈的其他批次题目,发现携程技术岗的编程题偏好比较明确,主要集中在以下四类:
- 模拟/字符串处理:尤其是涉及订单、车票、航班信息这类OTA业务场景的字符串解析题。这类题难度不大,但写起来繁琐,特别考验代码组织能力。
- 动态规划:背包类、最长上升子序列这类经典题经常出现。注意它不是那种裸DP,通常会包装一个"行程安排""优惠券抵扣"之类的业务外壳。
- 图论与最短路径:携程做旅游业务,路线规划和最短路径是核心场景,所以Dijkstra、拓扑排序是常客,有时会衍生出带约束的最短路径。
- 二分答案/贪心:这类题往往作为较难那一道出现,考察你能否在有限时间推导出单调性。
我看到群里有人吐槽说"携程笔试怎么还考地铁换乘",其实就是最短路径的一个变体,披了一个交通出行的壳。如果你时间有限,优先刷动态规划和图论这两块,性价比最高。
2.2 边界条件与数据范围比算法本身更容易翻车
这是我想重点讲的。很多同学(包括我)笔试翻车往往不是不会做,而是挂在边界和数据的细节上。
典型的一个例子是"计算一天内可预订的连续时间段"这类题。很多人拿到题第一反应是排序然后合并区间,思路没错,但笔试提交后就是有一个用例过不了。为什么?因为忘了处理跨天的情况——比如"23:00开始,持续2小时"应该输出"01:00",而不是"25:00"。
再比如涉及价格计算的题,数据范围常常给到10^9级别。如果你用int存总价,直接用int相减,溢出了都不知道。这类题必须在拿到题目的30秒内养成一个习惯:先看数据范围,再看输入格式,最后才看题目描述。数据范围决定了你的算法复杂度和变量类型。
我个人的习惯是:读题时把边界条件直接写在草稿纸上,比如"n=1""空输入""最大数值""重复元素"等等,写完代码后逐条自查。这个习惯帮我挡住过至少两个用例。
2.3 一道典型题的解题思路还原
这里复盘一道具有代表性的题目,具体细节记不太清了,但思路很有参考价值。题目大概是这样的:
给定一组景点之间的交通连接(连接有时间消耗和费用),要求从起点到终点,在总费用不超过预算的情况下,找到最短时间路径。若存在多条最短时间路径,选择费用最低的一条。
这道题就是典型的"带约束的最短路"。第一反应是直接用Dijkstra求最短路,但费用约束会让你重新思考——因为那条最短时间的路可能费用超预算,所以你必须允许绕路。
正确的思路应该是扩展Dijkstra的dist数组维度:不再只有dist[node],而是dist[node][cost],表示"到达node且恰好(或不大于)花费cost时的最小时间"。每次松弛的时候,把时间和费用两个状态同时作为约束条件。这个其实就是分层图最短路的思想,把费用作为状态维度,在费用维度上跑最短路。
实际写代码的时候,我踩了一个坑:费用上限如果给定到10^5,直接开二维数组dist[N][100000]内存会爆。需要优化成dist[node]存一个有序字典或堆,把费用作为维度但用稀疏存储的方式。如果你在考场上遇到类似情况,优先想清楚状态定义能不能交换维度,比如改为"以时间为状态、求最小费用",往往能降低内存压力。
这个题的教训是:看到"两个约束条件"时,要么状态加一维,要么二分其中一个维度。平时刷题时可以刻意训练这个思维模式,考试时就不会卡住。
3. 选择题与通用能力部分:不能只刷算法题
3.1 技术选择题的覆盖范围
编程题之外,选择题是很多人忽视的盲区。我参加这批笔试时,技术选择题覆盖了这些方向:
| 方向 | 具体内容 | 常考频率 |
|---|---|---|
| 数据结构 | 二叉树遍历、哈希冲突解决、堆调整、排序稳定性 | 高 |
| 操作系统 | 进程线程区别、死锁条件、虚拟内存、页面置换 | 高 |
| 计算机网络 | TCP三次握手、HTTP状态码、DNS过程、HTTPS握手 | 中高 |
| 数据库 | 索引原理(B+树)、事务隔离级别、最左前缀 | 中高 |
| Java/Golang/Python | 泛型、垃圾回收、可变对象、并发集合 | 中 |
| 软件工程 | 设计模式、代码重构、测试基础 | 低 |
这里有一个可以提前准备的点:携程的技术栈里Java和部分Go用得比较多,所以Java相关的题目出现概率不低。如果你主要写Python或C++,一定要提前过一遍Java基础,尤其是:
HashMap在JDK 8后的红黑树优化(链表长度>=8转红黑树);==和equals在字符串比较中的差异;volatile和synchronized的区别;- 线程池的核心参数及其执行顺序。
这些题单看不难,但如果你平时完全不用Java,光靠临场推理是推不出来的,得提前背一轮。
3.2 阅读理解和逻辑题的答题节奏
通用能力部分有点类似行测的简版,包括阅读理解、逻辑判断和资料分析。对技术岗来说,这部分往往不计入总分,但它有几个作用:
- 如果笔试总成绩相同,通用能力部分的分数可能成为排序依据;
- 一些面试官会看你通用能力的表现来评估沟通和逻辑表达。
我的建议是:这部分控制在20分钟内完成,不纠结。资料分析题一般需要比较精确的除法估算,但不要在某一题上花超过2分钟。阅读理解题的核心技巧是先看题干再回原文定位,不要逐字通读。
这里透露一个我自己的节奏:进入通用能力部分之前,我会先把编程题完整提交(哪怕不是最优解),再回头做选择题和通用题。这样保证最重要的分数先落袋。如果你按试卷顺序做,很可能在选择题上消耗太多时间,导致编程题来不及。
4. 笔试现场的执行细节:比多刷题更能提分
4.1 平台操作与代码环境
第四批笔试使用的在线笔试平台支持多种语言,可以做本地编译,但要注意几个细节点:
- 输入输出是自己按标准输入解析的,不是LeetCode那种已经帮你封装好函数的形式。很多人平时刷题用习惯了
Solution类的函数接口,到笔试环境突然要自己处理输入格式,容易懵。 - 代码编辑器没有自动补全(部分有),如果你是重度依赖IDE补全的人,建议提前在无补全环境下练两三道题,不然后面写代码会非常费劲。
- 一次笔试的代码提交次数通常没有严格限制,但不要滥用。每提交一次,系统会记录,有些平台会对编译错误做扣分或提醒处理。
我在笔试前专门用纯文本编辑器练了几个输入解析样例,等到考试时至少不会因为输入格式浪费10分钟。
4.2 时间分配策略与做题顺序
2小时的时间,我是这样切的:
- 前10分钟:快速浏览所有题目,不写代码。重点看编程题的题意和数据范围,在草稿纸上记录每道题大概的算法方向。
- 接下来70分钟:主攻第一道编程题,争取AC。第二道偏难题如果思路清晰就继续,不清晰就先写暴力解保底。
- 再20分钟:完成技术选择题。这部分拼的是知识储备,不需要太多犹豫。
- 最后10分钟:检查代码的边界条件,补齐异常处理;如果还有富余,再优化第二题的解法。
一个很重要的策略判断:当第二道题没有明确思路时,不要死磕,先把暴力解法写上。暴力解至少能通过30%-40%的用例,而如果你空着,0分。笔试考的是通过用例比例,不是只看你有没有完整解出来。
4.3 提交前的自查清单
程序写完不等于结束,提交前的自查非常关键。我总结了一个清单,每次笔试都用:
- 输入读全了吗?有没有可能需要读到文件末尾的循环?
- 数据范围使用
long long/long了吗? - 数组/列表的索引是否可能越界?
- 是否有除零或空指针风险?
- 输出格式是否和题目完全一致(空格、换行、大小写)?
- 临界输入
n=1、n=最大值是否处理正确?
这些问题里的任何一个,都足以让一道AC的题变成0分。尤其是"题目要求输出YES和NO",你输出Yes和No,系统判的就是错误。
5. 笔试后的复盘与面试衔接
5.1 复盘该记录什么
笔试结束后,趁记忆新鲜,我建议花30分钟做一次复盘。不要等两周后再做,到时候题目长什么样都忘了。复盘时重点记录:
- 每道题用的算法和最初的思路;
- 哪些边界条件没想到;
- 选择题里哪些知识点是模糊的;
- 整个考试时间分配是否合理。
我当时复盘后整理出一个"知识盲区清单",发现数据库事务隔离级别这块理解不深,就在面试前把这个部分突击了一遍。后来面试里真的被问到了"RR隔离级别下怎么解决幻读",属于直接命中。
5.2 笔试到面试的准备联动
携程的面试通常在笔试通过后一周到两周内安排。在等待期间,不要只刷算法题,还要把简历上的项目经历重新过一遍。携程面试的流程是技术面连环面,考察内容包括:项目深挖、基础知识、算法题、场景设计题。笔试已经考过的基础知识点,面试官可能不会再重复问,但笔试暴露出的短板,他们反而可能追问。
比如你笔试中数据结构排序那块选错了,面试官可能会问"你刚才说快排不稳定,那不稳定是什么意思,对实际代码有什么影响?"这种追问题。所以笔试复盘时发现的知识漏洞,一定要在面试前补齐,别让同一个坑绊倒你两次。
另外,携程作为OTA企业,业务场景题经常和旅游场景绑定。比如"如何设计一个酒店的房态库存系统""如何做特价机票的推荐排序"。笔试阶段你可以不熟悉业务流程,但到了面试阶段,至少要提前了解携程的主要产品形态——机票、酒店、火车票、度假、商旅,每个业务的核心链路和典型技术挑战能说出一二。这部分准备会明显提升面试官对你的好感,也让你的技术方案有落地感。
我在实际准备中会把这类业务场景题和笔试题目做关联:笔试里那道"预算约束下找最短路径"的题,其实就能升华成"为用户规划符合预算的行程"这种业务问题。把笔试题目当成业务需求的抽象,面试时再还原回业务场景,你会发现自己看问题的层次完全不同。这就是我强烈建议你笔试后不要单纯对完答案就翻篇的原因——笔试题目既是筛选工具,也是了解公司业务和面试方向的最好素材。