携程秋招第四批笔试复盘:算法考点与边界陷阱
2026/9/1 5:04:31 网站建设 项目流程

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在字符串比较中的差异;
  • volatilesynchronized的区别;
  • 线程池的核心参数及其执行顺序。

这些题单看不难,但如果你平时完全不用Java,光靠临场推理是推不出来的,得提前背一轮。

3.2 阅读理解和逻辑题的答题节奏

通用能力部分有点类似行测的简版,包括阅读理解、逻辑判断和资料分析。对技术岗来说,这部分往往不计入总分,但它有几个作用:

  1. 如果笔试总成绩相同,通用能力部分的分数可能成为排序依据;
  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=1n=最大值是否处理正确?

这些问题里的任何一个,都足以让一道AC的题变成0分。尤其是"题目要求输出YESNO",你输出YesNo,系统判的就是错误。

5. 笔试后的复盘与面试衔接

5.1 复盘该记录什么

笔试结束后,趁记忆新鲜,我建议花30分钟做一次复盘。不要等两周后再做,到时候题目长什么样都忘了。复盘时重点记录:

  • 每道题用的算法和最初的思路;
  • 哪些边界条件没想到;
  • 选择题里哪些知识点是模糊的;
  • 整个考试时间分配是否合理。

我当时复盘后整理出一个"知识盲区清单",发现数据库事务隔离级别这块理解不深,就在面试前把这个部分突击了一遍。后来面试里真的被问到了"RR隔离级别下怎么解决幻读",属于直接命中。

5.2 笔试到面试的准备联动

携程的面试通常在笔试通过后一周到两周内安排。在等待期间,不要只刷算法题,还要把简历上的项目经历重新过一遍。携程面试的流程是技术面连环面,考察内容包括:项目深挖、基础知识、算法题、场景设计题。笔试已经考过的基础知识点,面试官可能不会再重复问,但笔试暴露出的短板,他们反而可能追问。

比如你笔试中数据结构排序那块选错了,面试官可能会问"你刚才说快排不稳定,那不稳定是什么意思,对实际代码有什么影响?"这种追问题。所以笔试复盘时发现的知识漏洞,一定要在面试前补齐,别让同一个坑绊倒你两次。

另外,携程作为OTA企业,业务场景题经常和旅游场景绑定。比如"如何设计一个酒店的房态库存系统""如何做特价机票的推荐排序"。笔试阶段你可以不熟悉业务流程,但到了面试阶段,至少要提前了解携程的主要产品形态——机票、酒店、火车票、度假、商旅,每个业务的核心链路和典型技术挑战能说出一二。这部分准备会明显提升面试官对你的好感,也让你的技术方案有落地感。

我在实际准备中会把这类业务场景题和笔试题目做关联:笔试里那道"预算约束下找最短路径"的题,其实就能升华成"为用户规划符合预算的行程"这种业务问题。把笔试题目当成业务需求的抽象,面试时再还原回业务场景,你会发现自己看问题的层次完全不同。这就是我强烈建议你笔试后不要单纯对完答案就翻篇的原因——笔试题目既是筛选工具,也是了解公司业务和面试方向的最好素材。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询