资讯动态

携程秋招笔试复盘:技术岗题型分布、考点与编程题解题思路

发布时间:2026/8/29 6:48:04 来源:尧图企业网站定制
2023年携程秋招技术通用岗第四批笔试我是在十月中旬收到通知的邮件标题里明确写了“第四批”时间大概在晚上七点到九点统一用牛客网的系统。坦白说秋招进行到那个阶段笔试已经做了十几场大多数都是“投完就忘、考完就凉”的状态但携程这套题做完之后我却认认真真复盘了一整晚。原因是它的题型设置和考察重心跟同期的其他大厂很不一样——不追求“变态难”反而非常看重基础扎实度和工程思维。这篇文章就把我当时整理的题型分布、考点细节、解题思路和踩过的坑全部写出来给后面准备携程或同类OTA公司笔试的同学做一个参考。1. 笔试整体流程与形式解析1.1 考试平台和时间安排携程技术岗笔试统一走牛客网在线监控双机位。也就是说你需要一台电脑用来做题另外还需要一台手机放在侧后方当作监控视角。考前半小时会有系统引导测试摄像头和麦克风这里一定要提前调试好别等到开考了才发现浏览器权限没开耽误的是自己的时间。考试总时长是120分钟题量看起来不算特别多但实际做下来时间非常紧凑。整套试卷分成四个部分逻辑行测题、技术单选题、技术多选题、编程题。我那一批的情况是题型数量分值建议用时逻辑行测题10题每题1分10分钟技术单选题15题每题2分20分钟技术多选题10题每题2分20分钟编程题3题共60分60分钟这个分数分配信息量很大行测只有10分技术选择占50分编程占60分技术部分合计110分。也就是说行测纯粹是基础门槛真正的区分度在技术选择和多选题上编程题则决定了你能不能进面试。很多人以为大厂笔试就是刷掉不会做题的其实携程更想在一张卷子里同时看出你的逻辑能力、知识面广度和代码实现能力。1.2 分批机制背后透露的信息携程的秋招笔试分了很多批次我当时是第四批前面还有三批。从时间线上看投递简历越早笔试安排越早。但批次靠后不代表机会变少我身边有同学是第一批笔试的也有拖到第五批的最终都拿到了面试邀约区别在于不同批次的竞争池子不一样岗位的HC招聘名额数量也会有动态调整。不过有一个点值得注意做得越晚池子里可能积累的“大神”就越多因为很多多批次考试的同学会把前面几批的题复述出来后期再考的同学等于有了“题库参考”。我记得我考之前就有人整理了前三批的部分考点虽然题不会原封不动但考察的知识点方向确实是高度一致的。这个信息到后面我会展开讲。2. 逻辑行测题的考察重点2.1 图形推理与数字推理10道行测题里图形推理大概占了4道左右。携程的图推题难度中等偏上规律主要集中在旋转对称、数量增减、组合叠加这三类。有一道题我当时印象很深是九宫格里面每个格子有不同数量的三角形问最后一个格子的三角形数量规律是每行三个格子之间三角形的数量满足两两相减的绝对值相等。这类题没有太多技巧就是平时多刷、形成条件反射——看到图先数数量再看位置变化最后看叠加关系。数字推理大概有2道携程比较喜欢出多级数列和递推数列。多级数列就是相邻两项做差然后看差数列的规律递推数列则是前两项通过加减乘除运算得到第三项。说实话这两道题想拿满分不难关键是要快。我建议行测部分单题最多控制在60秒内如果60秒没思路就标记跳过因为后面的技术题才是真正的“大头”。2.2 文字逻辑与资料分析文字逻辑题比较常规就是给一段材料判断哪个选项能加强或削弱论点。这个跟公务员考试的行测逻辑判断差不多但题目背景会结合互联网行业场景。资料分析考了1道给了个表格数据问你同比增长率和环比增长率的计算。行测部分的建议是不要花太多时间复习考前用一两个小时熟悉一下常见题型就够了因为10分占比非常小性价比太低。但也不能完全放弃毕竟每一分都可能影响排名特别是在进入面试名单的时候分数差1-2分就会被卡。我当时给自己定的目标是行测至少拿8分也就是最多错2道实际考完应该是全对或错1道。3. 技术选择题的考点拆解3.1 操作系统与网络基础技术单选题15道里面操作系统和计算机网络加在一起大概有6道左右是占比最大的一块。操作系统喜欢考进程调度、死锁、虚拟内存、页面置换算法。我记得当时有一道题是关于银行家算法的给了一个系统当前的安全状态问某个进程请求资源后系统还能不能保持安全状态。这题属于经典题型会做的不难但如果你对安全性检查的流程不熟很容易选错。计算机网络考了TCP三次握手、HTTP状态码、DNS解析过程。有一道题的选项比较刁钻问的是“在浏览器输入一个网址到页面显示中间经历了什么”四个选项给的顺序各不相同有的把TCP连接放在了DNS解析前面有的少了ARP协议这种题就是典型的不难但很烦要求你对整个数据流通过程有完整的认知。3.2 数据库与SQL语法数据库相关大概有3-4道题集中在索引、事务隔离级别、SQL查询执行顺序。携程的核心业务是旅游预订对数据一致性的要求很高所以它们比较喜欢考事务相关的内容。有一题考的是“在RR可重复读隔离级别下MVCC机制如何解决幻读问题”这就涉及Next-Key Lock的概念了不是单纯背概念就能答对的。SQL执行顺序那道题我觉得值得单独提一下FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT。很多人搞不清WHERE和HAVING的区别其实本质是执行顺序的差异——WHERE在分组前过滤HAVING在分组后过滤。携程的选项设置里还混了一个WHERE可以直接使用聚合函数的错误项如果这个知识点没吃透很容易踩坑。3.3 Java基础与面向对象Java相关的大概有2-3道重点考察集合框架、JVM内存区域、线程同步机制。有一道题问的是ArrayList和LinkedList在插入元素时的性能差异这个要分情况讨论在尾部插入时两者差距不大但在中间位置插入时LinkedList明显更快因为只需要改写指针而ArrayList需要做数组拷贝。然而选项里直接问“LinkedList在任何情况下都比ArrayList快”这就是典型的绝对化表述往往是错的。JVM考了一道关于堆内存划分的题问新生代和老年代的比例默认值这其实不是固定的要看用的是CMS还是G1回收器。如果是G1就没有传统意义上的新生代老年代固定比例了而是通过Region来动态划分。这个知识点的坑在于很多参考书讲的都是老版本的默认值但实际上现代JVM的默认行为早就变了。3.4 多选题的杀伤力与应对策略多选10题是整套卷子里最让人头疼的部分因为它的评分规则是“少选得部分分选错不得分”。携程的多选主要集中在计算机网络协议、数据结构、Linux命令这三个方向。Linux命令那题我记忆犹新问的是“以下哪些命令可以查看文本文件的内容”选项包括cat、less、tail、grep。很多人会选cat和less但严格来说tail和grep也能“查看”部分内容所以这题其实四个选项都是对的。这种题考验的不是你会不会用命令而是你对“查看”这个定义的边界理解。我当时的策略是多选有把握的选项就选上没把握的宁可不选少选还能拿一半分选错就是零分。4. 三道编程题的完整解题思路4.1 第一题字符串重排与字典序输入是一个只包含小写字母的字符串长度不超过10^5要求重排字符串使得所有相邻字符都不相同并且字典序最小如果无解输出空字符串。这道题本质上是“相邻不重复排列”的变种核心步骤有两步第一步判断是否有解找到出现次数最多的字符如果它的出现次数大于剩余字符数加1则肯定无解。判断公式是 countMax (len - countMax) 1。第二步是构造最小字典序。我采用的思路是贪心优先队列每次取出当前可用字符中字典序最小的但是要保证不跟前一个字符相同并且取完一个字符之后要检查剩下的字符还能不能完成排列这是很多人的误区——他们只看当前步不看未来可行性。用优先队列维护每个字符的剩余数量每次弹出字典序最小的字符如果这个字符和上一个相同就取次小的那个。这道题考的是贪心算法和堆结构的综合应用整体难度不大但要注意字符串长度大如果用每次循环扫描26个字母的方式也能过但排序法的复杂度稍高用优先队列的方式是O(n log26)也就是O(n)。我当时提交了大概只用了15分钟算是给后面两道题争取了时间。建议做到这道题的时候不要写太复杂的解法稳准快是第一目标。4.2 第二题区间合并与最大覆盖数给出一组区间每个区间包含开始时间和结束时间要求计算出所有区间合并后的总长度以及重叠次数最多的“点”被多少个区间覆盖。这个题其实可以拆成两个经典问题区间合并和差分数组。区间合并的解法是排序后遍历。先把所有区间按左端点排序维护当前合并后的左右边界。如果当前区间的左端点小于等于已有右边界就更新右边界否则把已有区间结算进总长度然后开启新区间。重叠次数最多的点被覆盖了几次用差分数组来解决把每个区间的开始位置加1结束位置的下一个位置减1然后前缀和就能得到每个位置被覆盖的层数取最大值就是答案。这里有个关键细节如果区间是“左闭右开”也就是结束点不在覆盖范围内处理方式会有一点点不同。携程这道题的描述我记得是“闭区间”也就是说首尾都包括。不确定的时候要仔细看题干的公式定义这个直接决定了代码的边界判断。这道题真正考察的是对排序遍历和差分数组这两种经典思路的熟练度。只要你能识别出它对应的模板实现起来非常快。我当时大概用了20分钟写完了这道题还顺手把暴力解法在心里过了一遍——O(n^2)的复杂度显然过不了因为n的范围可能到10^6。4.3 第三题树上的最大路径和这题拿到手的时候我明显感觉难度跳了一档。场景描述是一棵树每个节点有一个权值可能是负数求从任意节点出发到任意节点结束的路径中能得到的最大路径和。每条路径不能重复经过节点。没错这就是经典题“二叉树最大路径和”的树形扩展只不过从二叉树变成了多叉树。如果不了解这个题型的核心思想现场硬想很容易卡住。核心状态定义是dp[node] 表示从node出发向子树方向能走出的最大路径和。对于每个节点它需要考察的路径有两种情况一种是不经过该节点的子树路径需要在递归过程中用全局变量更新另一种是经过该节点的路径就是 leftChild 和 rightChild 中最优的一个分支拼上当前节点再继续向父节点走。对于多叉树处理方式是遍历所有子节点拿到每个子节点的dp值然后取最大的两个正收益分支因为负数分支对路径和没有增益不如不要当前节点产生的候选路径和就是 node.val maxChild1 maxChild2如果两个最大的子分支都是负数那就只保留node.val自身。用全局变量不断刷新这个候选值最终得到答案。这道题有个很重要的边界权值可能是负数路径可以只包含一个节点。所以全局答案的初始值必须设为负无穷而不是0否则全负数的树会被误判为0。我当时对这道题的信心不太足因为输入是特殊的树结构给每个节点一个编号和父节点编号需要自己构建邻接表不是直接给二叉树的左右孩子。构建完邻接表之后遍历所有节点从父节点进行DFS。这个“建图”步骤其实也占了不少时间代码量不小最后在考试结束前几分钟才完成了提交没有时间进行额外的异常测试。4.4 编程题的通用模板与复杂度要求三道题里前两道属于“保底题”只要算法基础扎实基本不会丢分第三道属于“区分题”拉开面试名单差距的就是这一道。在复杂度要求上第一题的n范围是10^5贪心优先队列的O(n log26)完全达标第二题的区间数量可能到10^6排序是O(n log n)差分是O(n)整体可过第三题遍历树的所有节点每个节点访问其所有子节点一次总复杂度O(n)也符合范围。个人觉得这三道题的难度分布很合理第一题送分第二题中等第三题偏难。准备的时候重点刷这三大类——贪心构造、区间问题、树形DP——覆盖率相当高。5. 实战时间分配与答题顺序建议5.1 我的做题顺序和实际时间记录我实际的做题顺序是行测10分钟 → 单选20分钟 → 多选20分钟 → 编程题55分钟最后留了5分钟检查。这是一个比较激进的选择因为大部分人习惯先把编程题做掉因为觉得“编程分多拿大头”。但我的判断是行测和选择题是“确定性收益”——做出来就是有分而编程题存在不确定性可能想了半小时还是没思路。先把确定的分稳稳拿到手心态会好很多后面做编程题也更有底气。不过这里有一个前提你平时刷题量足够能够保证在20分钟内把15道单选和10道多选做完。如果你平时看题就慢选择题可能要花30分钟那编程题就会非常吃紧。这时候我建议反过来先做编程题把分的大头护住再回头看选择。5.2 不会做的题怎么处理不丢冤枉分单选不会的时候用排除法至少能排除两个错误选项。能排除两个以上再蒙排除不了的时候可以根据“绝对化表述大概率错误”的规律去蒙。多选不会的时候选一个最有把握的选项拿半分绝对不要“全选”因为全选的风险极高。编程题不会的时候一定不要空着。即使写不出最优解也要写一个暴力解然后注释说明思路。如果暴力解能覆盖30%的测试用例至少能拿一部分分数。我见过太多人因为觉得拿了分也不够好看就放弃这其实很亏——笔试排名是综合所有题目分数的加权每一分都弥足珍贵。5.3 牛客网的调试技巧和提交注意事项牛客网的在线编程环境默认使用标准输入输出不需要你读取文件也不需要你输出多余提示信息。有些题目会要求“示例输入”和“示例输出”完全一致才能通过测试比如不要有多余的空格或换行这个在本地调试的时候就要养成好习惯。另外牛客支持本地IDE调试我的做法是先在本地IDEA里写好代码用示例数据跑通再粘回在线编辑器提交。这样可以充分利用本地调试器比在牛客网页里打日志快得多。特别注意提交前要看一下自己写的方法名和类名是否符合题目要求。牛客的Java输入模板通常有一个Main类题解都写在main方法里如果你把类名改错了或者自己建了个新类没调用很可能编译不通过。我见过有人写了完全正确的逻辑但因为没有输出任何结果最终零分。6. 常见问题与避坑经验整理6.1 系统与网络问题我能想到的第一个大坑是摄像头权限。牛客的在线考试系统需要浏览器授权摄像头和麦克风如果你用的是Chrome第一次进去的时候会有权限弹窗如果点了禁止后面就会一直黑屏需要自己去设置里改回来。我考试前一天就先把权限允许了做了一个测试避免当天手忙脚乱。网络问题也值得提前预防。虽然牛客有断线重连机制但笔试过程中如果断网超过一定时间系统可能直接交卷。我当时的做法是开了手机热点作为备用万一家里路由器出问题马上切热点。另外关掉所有可能弹窗的软件包括微信、钉钉、邮件通知因为这些弹窗会打断思路严重的还会被判定为切屏触发警告。6.2 题目理解上的常见失误题目理解出错是笔试翻车最致命的原因。技术岗位的笔试题目往往有很多陷阱描述比如“以下哪个选项是错误的”“以下哪种方法不能实现什么功能”这种反问式问法特别容易让人惯性思维踩坑一看选项熟悉就直接选了结果选成了正确的那个丢了分。编程题特别要注意输入范围。有些题n的范围是10^9那你就要考虑长整型long不能直接用int有些题给的数可能是0开头、保留前导零的字符串那你读取的时候不能用整数类型要用字符串处理。这些都是携程这类笔试常设的小陷阱正常做题水平没问题但如果不细致就会吃暗亏。6.3 时间耗尽前的止损策略离考试结束还有10分钟的时候如果编程题还有一道没写或者写了一半建议立刻停手回到前面检查选择题是否有漏答或误点。当年我身边有人就是因为最后一分钟还在改代码结果前面的题有空着的最终笔试分数被拉低了很多。检查代码时先看核心逻辑再看边界条件最后看输出格式不要花时间在优化代码风格上。如果有一道题完全没有头绪也没必要死磕到底不如把这些时间用来把前面的选择、多选再检查一遍确保“不丢冤枉分”。另外编程题提交后可以看测试用例通过比例如果某道题的通过比例是0很可能是因为运行报错比如数组越界或空指针这时候调整一下代码往往能补救一些分。6.4 多批次笔试的信息战与心理战到这里想多说一句关于批次的信息价值。如果你也是多批次中的后几批可以花一点时间在牛客网讨论区、小红书、微信技术群里搜一下前面的笔经看看他们回忆了哪些考点。但不要迷信别人回忆的“原题”因为携程的题目大概率会换但常考的知识点类型不会突然变。我考前的晚上把前三批的复习资料过了一遍重点看了他们提到的多选题知识点当天考到的有几题确实考点方向一致只是换了个角度来问。心理层面的建议是保持“重在参与”的心态反而容易发挥好。这一批笔试不过后面还有补录机会而且携程很多岗位是轮流开的这次的笔试经验完全可以用来准备下一次。不要太把一场考试当成人生的分水岭越是放轻松临场脑子越清醒反而能把本该拿的分都拿到手。7. 考后复盘与面试加分建议7.1 如何判断自己能否进面试携程笔试成绩通常在一周内出不是直接告诉你的而是会收到“进入面试”的邮件通知。如果过了三四天都没消息大概率是挂了但也有极少数情况因为HR流程慢而延后我听说过有人隔了将近半个月才收到面试通知。笔试通过后面试官手里是能看到你的笔试报告的包括总分、各模块得分、编程题每道题的通过比例。所以如果笔试有题目没写完面试官可能会针对那题的知识点来追问。我建议笔试考完趁热打铁把没做出来的题复盘一遍想清楚解法说不定面试时就能用到。7.2 针对性准备笔试的后半程如果笔试感觉不错紧接着就应该开始准备面试了。携程技术岗面试一般有两到三轮技术面加一轮HR面。技术面大概率会深挖你做过的项目和实习经历也会问一些基础数据结构和算法题正好和笔试的考点可以衔接。我当时就把笔试里用到的贪心、差分、树形DP又重新复习了一遍结果面试真的又考了一道树形DP相关的题目直接省去了重新回忆的时间。在准备面试之余建议把携程的业务模式了解一下。作为OTA在线旅游平台携程的业务线包括酒店预订、机票、火车票、度假套餐、企业商旅等。面试里如果能结合业务场景来聊技术比如“这个系统要处理高并发的酒店库存查询”会给面试官留下更好的印象。笔试只考察你的硬技能面试考的是你能不能把技能用在业务里。7.3 记录个人笔试错题集我的一个习惯是每次笔试后把所有错题和不会的知识点整理到一个文档里内容包括题干关键词、我当时选了什么、正确答案是什么、相关知识点扩展。这样到秋招后期我就有了一份覆盖数十家公司笔试的错题集复习效率比重新刷书高很多。携程这轮笔试后我整理出的薄弱点是“树形结构上的动态规划”和“Linux常用的文本处理命令”这两个知识点后来我特定补了课。在之后的另一家大厂笔试里果然又遇到了树上的路径类问题那时候我已经能第一时间想到分类讨论子节点的正负收益做题速度和准确率都有明显提升。笔试刷的就是题感和熟练度多做一场就多积累一份经验每次都认真复盘最终结果不会辜负你。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价