携程2025春招开发笔试复盘:算法、SQL与系统设计避坑指南
携程2025春招开发工程师第一批笔试复盘题型、思路与避坑实录2025年春季招聘刚开始携程集团就放出了开发工程师第一批笔试。作为刚参加完这场笔试的人我想把整套流程、考点细节和踩过的坑完整记录下来。先说结论携程这场笔试的题量不算夸张但覆盖面很广算法、数据库、计算机网络、场景设计甚至AI基础全都考到了整体难度中等偏上最关键的并不是“做不做得出来”而是“在有限时间内怎么把该拿的分拿到”。如果你是准备投携程开发岗、或者其他大厂春季招聘的应届生这篇复盘值得认真看。我不会只贴答案而是把每类题的考察逻辑、复习方向、答题技巧和失败教训都讲清楚文末还会附上我认为最实用的笔试时间分配方案希望能帮你少走一点弯路。1. 笔试整体设计考的不只是“会不会写代码”1.1 题型分布与时间分配先说整体感受。这场笔试是在牛客网上进行的总共120分钟题型分成三大块单选题、多选题、编程题另外还有一道开放性的场景设计题。分值占比大概是选择填空类40分、编程题40分、场景设计20分题量在30道左右。单选题主要覆盖操作系统、计算机网络、数据库原理和Java基础多选题集中在并发编程、Spring框架和Linux命令编程题是三道LeetCode中等偏上难度的算法题场景设计题则是给一个旅游业务场景要求设计后端接口和数据表结构。时间分配上前30分钟做选择填空剩下90分钟留给编程和场景设计。我自己的失误是选择题花太多时间纠结导致后面编程题时间紧张这个后面在问题章节详细讲。1.2 笔试的底层逻辑携程这类互联网公司的笔试本质上不是考“你会不会做某道题”而是通过题型组合筛选三类能力基础功底、编码能力和业务抽象能力。基础功底看的是计算机专业的核心课程掌握程度比如TCP三次握手、进程调度算法、HashMap原理这些“八股”说白了就是考你有没有认真上课、有没有系统复习。编码能力通过算法题考察三道题分别对应数据结构运用、动态规划和边界处理能力。业务抽象能力则通过场景设计题考察看你能不能把实际的旅游业务需求拆解成技术方案。理解了这个逻辑复习策略就很清晰了基础题靠系统背记和刷题形成条件反射算法题靠题量积累保持手感场景题则需要刻意练习“从需求到设计”的思维方式而不是单纯背模板。2. 核心考点拆解每一类题都在考什么2.1 选择题里反复出现的“老朋友”携程选择题的覆盖面比较广但高频考点非常集中我列一下印象最深的几个方向。计算机网络几乎是必考的TCP和UDP的区别、TCP三次握手和四次挥手、HTTP和HTTPS的区别、DNS解析过程这些是基础中的基础。另外有一道题问的是“浏览器输入URL后发生了什么”这类题看似简单但要把DNS解析、TCP连接、HTTP请求、服务器处理、浏览器渲染全链路讲清楚其实很考验知识的串联能力。操作系统方面进程和线程的区别、死锁的四个必要条件、虚拟内存和分页机制、进程调度算法这些也是高频考点。有一道印象比较深的题是关于“进程和线程的切换开销”其实是在考察对内核态用户态切换的理解。数据库是选择题的重头戏索引失效的场景、事务的ACID特性、隔离级别与脏读幻读的关系、B树和红黑树的区别差不多每场笔试都会考。携程还特别钟爱“SQL执行顺序”这种题看似简单但容易在GROUP BY和HAVING的执行顺序上栽跟头。Java基础题里HashMap的底层实现和扩容机制几乎是必考的ConcurrentHashMap的锁分段、volatile的可见性、synchronized和ReentrantLock的区别也反复出现。Spring相关多选题则集中在IOC/AOP、Bean生命周期和事务传播行为上。2.2 编程题三类最常见一道都不能丢编程题是整场笔试的“分水岭”。我复盘下来携程这三道题考察的方向很有代表性。第一道考察的是数据结构综合运用我遇到的是“LRU缓存机制”要求实现一个基于哈希表加双向链表的LRU缓存get和put操作都必须是O(1)时间复杂度。这道题其实不算难但很考验对数据结构的理解深度——你需要知道为什么哈希表能保证O(1)查找为什么双向链表能保证O(1)删除和插入以及两者如何配合。第二道是动态规划题目背景是关于优惠券组合的最优选择本质上是一个“01背包变体”给出一组优惠券的面额和使用条件求能覆盖的最大金额。第三道是图论相关旅行路线的可达性判断本质是并查集或DFS/BFS的遍历问题。这三类题目选择很有讲究LRU缓存考高频应用场景动态规划考逻辑建模能力图遍历考对基础算法的灵活运用。我建议复习时至少把这三个方向各刷20道以上保证每类题都有稳定的解题“手感”。2.3 一道典型的动态规划题推演拿第二道“优惠券组合”来说我现场推演的思路是这样的。首先是状态定义我们用dp[i][j]表示前i张优惠券在花费恰好为j元时能获得的最大优惠金额。然后是状态转移方程对于第i张优惠券如果不使用dp[i][j] dp[i-1][j]如果使用且面额小于等于j则dp[i][j] max(dp[i-1][j], dp[i-1][j - cost[i]] value[i])。实现上先用两层循环预处理优惠券数据然后逆序更新dp数组实现空间优化。关键边界是优惠券的面额可能相同、使用条件可能冲突必须先去重和排除互斥组合。现场我没有想到去重这个优化导致内存使用偏高这个问题在真实笔试里很影响后续题目的作答时间。注意动态规划题最怕的不是状态转移方程写错而是边界条件漏判导致数组越界。我在本地IDE调试时不会暴露的问题在笔试平台的严格测试用例下会直接超时或报错。3. 工程能力题数据库与系统设计3.1 SQL题型别只会背语法选择题之外的SQL题给了一个旅游订单表和用户表要求写出“统计每个城市近30天订单金额TOP3用户”的查询。这类题看着简单实际上考察了三层能力窗口函数的使用、子查询嵌套和性能优化意识。标准解法是先按城市和用户分组计算近30天的总消费再用ROW_NUMBER()开窗函数按城市分区、按消费金额排序最后取排名前三的数据。这中间有三个常见的坑一是时间条件必须写在子查询里否则会先全表扫描再过滤性能很差二是分组维度要写对漏掉城市字段会导致跨城市统计错误三是窗口函数的排序字段和分组字段不能混淆。这类题我在牛客上刷过很多次但实际考试时发现SQL题的隐藏分点很多。建议复习时重点掌握三类窗口函数排名类、聚合类、偏移类以及它们和GROUP BY的配合方式。3.2 场景设计题的答题框架场景设计题给了一个真实旅游业务背景“用户搜索机票后系统需要展示最低价航班并支持按价格、时间排序同时要求响应时间在1秒以内。”要求设计后端接口、数据库表结构和缓存策略。我的答题思路是“三段式”接口设计、存储设计和架构设计。接口层面我设计了GET /api/flights/search接口参数包括出发地、目的地、出发日期、排序方式返回航班列表和最低价标识。存储层面设计了航班表、价格表、航线表三张核心表价格表按日期建立联合索引。架构层面引入Redis缓存实时价格热点航线缓存5分钟非热点航线缓存30分钟同时用消息队列做一个异步的价格更新任务。这道题没有标准答案考察的是你有没有“分层设计”的思维方式。面试官希望看到的是你能把需求拆解成模块并为每个模块找到合理的技术选型同时能解释清楚为什么选这个方案而不是另一个。提示场景题不需要写完整代码但必须把思路写清楚。我最推荐“接口-存储-架构”三段式框架既不会漏点也能体现工程化思维。尤其要写清楚缓存策略和数据库索引设计这两个是评分的关键加分项。4. 2025年笔试的新变化AI相关考点来了4.1 智能体与大模型基础成为新常客2025年的春招笔试和往年最大的不同是出现了AI相关的基础考察。我这场笔试里就有几道关于大模型和智能体Agent的选择题比如Transformer的自注意力机制、Tokenize方式、提示词工程的基本策略、智能体的工具调用Function Calling原理等。这些题放在开发工程师的笔试题里说明行业对开发者的要求正在变化即使你不做AI算法岗也需要了解大模型的基本原理和应用方式。公司关注的是你能不能在日常业务开发中利用AI工具提效或者能不能理解和对接AI相关的业务需求。对于非AI方向的开发岗位来说这些题不需要深挖数学推导但基础概念必须清楚。比如Transformer的Self-Attention为何能捕捉长距离依赖、什么是嵌入Embedding、什么是微调、什么是RAG、Function Calling的工作流程这些在笔试题里出现频率最高。4.2 AI应用开发工程师与全栈工程师的能力分野今年春招岗位里AI应用开发工程师和大模型全栈工程师是两个新增的热门方向笔试时也会通过题目隐性地考察你适合哪个方向。从能力要求来看AI应用开发工程师更侧重“调用和集成”你需要知道如何设计Prompt让模型输出稳定、如何接入模型API、如何搭建RAG流程、如何处理模型的流式输出。而大模型全栈工程师更侧重“端到端能力”从模型选型、训练微调到推理部署都要懂对工程能力的要求更高包括模型服务的性能优化和GPU资源管理。如果你是传统开发工程师的简历方向笔试中遇到AI题不用慌只需要展现出“理解AI能做什么、能对接什么”的水平就够。但如果你投的是AI应用开发方向那就需要深入掌握RAG流程、向量数据库、Prompt工程、Agent框架这些核心概念了。提醒开发工程师笔试里的AI题目前只占10%左右的分值但趋势是逐年增加。优先级排序建议是算法题 基础题 数据库 场景设计 AI常识。不要因为AI题分值小而完全不管但更不要本末倒置、花大量时间刷AI题而忽略算法基础。5. 实战复盘完整答题流程与时间分配5.1 我实际怎么分配时间的这里还原一下我真实的答题过程。19:00开考我的计划是30分钟做选择题但实际上花了近40分钟——有几道多选题在两个选项之间拿不准犹豫了很久。19:40开始编程题第一道LRU缓存我在本地IDE写了25分钟左右因为从数据结构定义到测试用例调试都需要时间。第二道动态规划卡了很久状态转移方程一开始写错了又花了20多分钟重新推导最终在20:30左右才完成。20:30开始做第三道图遍历题此时还剩30分钟。我看到题目是旅行路线可达性判断马上想到用并查集解决思路清晰但实现时发现测试用例的边界情况很多反复调试后21:00交卷时第三道题只通过了部分用例场景设计题也只写了简单思路没来得及展开。复盘下来如果选择题控制在30分钟内编程题能多出10分钟第三道图题很可能也能AC。所以时间分配这件事绝对不只是“计划好”就行的必须在平时刷题时就有意识地训练限时状态下“先跳过难题、保证基础题拿分”的取舍能力。5.2 现场写题时的思考轨迹以LRU缓存为例我实际写代码时的思路是这样的先用HashMap存储key到节点的映射保证O(1)时间定位节点。双向链表维护访问顺序头部是最近访问的节点尾部是最久未使用的节点。get操作时如果key存在把对应节点移到头部并返回put操作时如果key已存在则更新value并移到头部否则创建新节点放入头部若容量超出则删除尾部节点。为什么选LinkedList而不是ArrayList因为LRU需要频繁在头部插入、删除尾部节点、以及把中间节点移到头部ArrayList的数组移位是O(n)在容量较大时性能会明显下降。这里也能看出笔试题目表面上是写一个算法实际上考的是你对数据结构特性的深入理解。同样动态规划那道题的正确率高低很大程度取决于能否快速看出这是背包问题的变体而不是把它当成新的未知题型来硬推。6. 笔试中最容易踩的坑与应对建议6.1 环境准备与操作细节笔试环境是牛客网开发者工具支持多种语言我选的Java原因是本地的IDE调试最顺手。这里有几个环境相关的细节值得注意。第一牛客网的代码输入输出模板和LeetCode不一样是标准输入输出模式需要自己处理输入解析。很多人平时只刷LeetCode的参数传入模式一到笔试就卡在Scanner读取上白白浪费时间。我第一次参加类似笔试时就是这样花了好几分钟才反应过来。第二编译器版本和本地的JDK版本可能存在差异比如牛客网的Java版本可能不支持var关键字和部分新特性写代码时尽量用最保守的语法。第三IDE的自动导入和智能提示在笔试平台是没有的尤其是快捷键补全平时就要刻意练习不依赖提示写代码。最后考试过程中如果断网或浏览器崩溃不会额外补时所以提前用稳定的网络环境、关闭不必要的后台应用是很重要的。6.2 题目做不完的应对策略这场笔试最大的教训就是在有限时间内没有做好取舍。结合这次实战我总结出一套更合理的应对策略。开始答题前先花1分钟浏览全部题目快速判断难度分布给每道题标一个“基础分/冲刺分”。选择题遇到拿不准的直接标记不恋战先做后面简单题。编程题从最简单的开始做哪怕AC率只有60%也优于在一道难题上死磕导致后面没时间看。场景设计题即使时间不够也一定要把接口设计和数据表结构列出来这些框架分比空着好拿得多。具体的时间划分我给自己的标准是选择填空不超过30分钟编程题每题20-25分钟场景设计题15分钟最后留5分钟检查代码和补充思路。这个比例可能不是最优解但至少能保证每道题都有时间“露一手”。注意笔试不是竞赛拿分才是目的。一道题如果15分钟内没有任何思路果断跳过继续做下一题。等后面的题做完了再回过头来用暴力解法拿部分分这比死磕一道题要划算得多。6.3 错题复盘的价值笔试结束后我第一时间做了一件事把每道错题和没有AC的题目全部记录下来逐个分析错误原因。比如LRU缓存题错误原因是对双向链表的节点删除操作不熟练动态规划题错误原因是时间预处理方式不正确。这些记录看起来不起眼但对后续的面试和补录都有很大的参考价值。我习惯用表格整理错题信息包括题目类型、错误原因、正确解法、复习优先级四个字段。这样在准备下一场笔试时只需要看这个表格就能快速定位薄弱环节不用重新翻套题。这个习惯帮我从最初笔试三场全挂到后来能稳定通过多场大厂笔试可以说是最值得养成的复盘习惯。7. 针对不同基础的备考建议7.1 基础薄弱的同学怎么切入如果你现在对数据结构、算法这些核心内容还不太熟练我的建议是不要一开始就刷真题先用两周时间系统过一遍基础知识点数组、链表、栈、队列、哈希表、二叉树、堆、图这八种基础数据结构以及排序、二分、双指针、滑动窗口、DFS/BFS、动态规划这六类基础算法。这个过程最重要的是建立知识框架而不是追求做题量。我见过很多同学一上来就刷LeetCode Hot 100刷了50道后发现遇到新题还是没思路这就是因为没有形成“题目类型→算法模板”的映射能力。比较好的做法是每个类型先弄懂5道经典题理解解法为什么是这个数据结构、这个算法再通过练习巩固。基础巩固好之后再开始刷大厂历年真题。刷题时重点关注两类题一类是高频题比如LRU缓存、接雨水、最长回文子串、股票买卖系列这些题就是大厂题目的“母题”另一类是业务结合题比如携程常考的“优惠券最优组合”、“景点门票预订方案”这些题的算法本质还是经典题但套了一层业务场景需要练习去掉包装、识别本质的能力。7.2 已经刷题量大的同学怎么提升如果你已经刷了200道以上LeetCode目标就不是“会做”而是“做得快、做得准”。我的建议是有意识地按“笔试限时模拟”的方式刷题每次连续做3道中等难度题限时75分钟模拟真实笔试的环境和压力。这样练出来的不只是解题能力还有时间分配和心理抗压能力。模拟时注意给自己设定一个规则每道题先花1分钟读题和判断题型如果5分钟内没有思路就跳到下一题最后留20分钟解决遗留题目。这个规则能训练你快速判断“这道题值不值得死磕”的能力而这种能力在笔试现场的性价比远高于多刷几道题。此外多做“ACM模式”的题目练习。LeetCode默认是核心代码模式而笔试是ACM模式两者差异很大。建议每周至少用牛客网或洛谷练3道ACM模式的题重点训练输入输出解析、边界条件处理和多测试用例调试能力。8. 笔试之外简历与面试准备的延伸思考笔试只是第一关通过笔试之后还有面试环节而面试考察的内容和笔试有一定的延续性但也有明显的差异。笔试考察的是知识面和编码能力面试则更注重思维过程和沟通表达。携程面试中经常出现的一个问题是“你项目中最有挑战性的技术点是什么”。如果你有过实际的开发项目这一步会相对轻松但如果你想在笔试通过后再准备项目问题时间上会比较仓促。建议在等笔试结果的间隙就把自己做过的项目梳理一遍整理成“项目背景、负责模块、技术方案、难点和解决过程”四个部分的讲稿。值得留意的是今年AI应用开发相关的项目经历在面试中明显更吃香特别是Agent开发、大模型应用、RAG流程搭建这类方向。如果你的项目里有这些元素提前把“为什么选这个方案、有没有对比过其他方案、效果如何”这三个问题想清楚回答起来会很加分。另外提醒一句笔试虽然不直接考察简历内容但笔试表现会同步给面试官作为面试提问的参考。如果你的笔试算法题只做出一题的水平面试时面试官大概率会重点考察算法基础并结合简历深挖项目的实现细节。所以笔试中多拿的分就是在为面试阶段减轻压力。9. 从笔试看2025年开发岗位的能力风向今年的春招和往年相比整体风向已经有了明显变化。纯“CRUD工程师”的定位已经明显不够用了企业对开发岗的期待正在从“能写业务代码”转向“能理解业务、能对接AI、能解决复杂问题”的复合型能力。从笔试题目就能看出这个趋势基础算法题依然占据核心比重但场景题的复杂度和AI题的比重都在上升考题越来越偏“如果你来负责这个功能你会怎么做”的思路。携程作为在线旅游平台场景题天然和旅游业务绑定但也要求你有通用的系统设计能力。对开发工程师来说我建议在传统知识体系之外至少了解以下三个层面的内容第一个层面是AI基础应用能力会使用大模型API、了解提示词工程、掌握RAG的基本概念第二个层面是系统工程能力了解高并发、缓存、消息队列、分布式架构的核心思想第三个层面是业务理解能力能把自己的技术方案和业务目标对齐知道为什么做、为谁做。这三个能力看起来是“加分项”但放在2025年的招聘环境中它们正在变成“标配项”。尤其对投递头部互联网公司的求职者来说一个既有扎实算法基础、又懂AI应用的候选人明显比只会刷题、对AI一问三不知的候选人更有竞争力。10. 写在最后一些真实的心得参加完携程这次笔试我最大的感受是笔试并不像传说中那么可怕但也绝不像想象中那么轻松。决定成败的往往不是某一道“难题”能不能做出来而是你能不能在一百二十分钟内稳定发挥出七八十分的真实水平。这种稳定发挥的能力需要大量模拟训练才能获得。分享一下我的实操经验我习惯在正式笔试前两周每天固定时间做一套完整模拟完全模拟笔试环境不开外部搜索、不延长时间、中途不休息。这样做最大的收益是让身体和心理形成“考试的生物钟”到了真正笔试的时间段大脑能更快进入状态。如果你还在准备阶段最后想给你四个字“早模重点”。早模是尽早开始全真模拟重点是把高频题型和薄弱环节的重点抓好。春招的窗口期很短每一场笔试都值得认真对待。希望这篇复盘对你的备考有一些实际的帮助也祝你能顺利通过携程的笔试拿到满意的面试机会。