【笔试刷题】携程-2026.04.23-改编真题

✅ 春招备战指南 ✅

💡 学习建议:

  • 先尝试独立解题
  • 对照解析查漏补缺

🧸 题面描述背景等均已深度改编,做法和题目本质基本保持一致。

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力

🤖 内容包含AI辅助生成,题解和代码均经过多轮验证,有问题欢迎评论

🌸 目前本专栏已经上线200+套真题改编解析,后续会持续更新的

春秋招笔试机考招合集 -> 互联网必备刷题宝典🔗

携程-2026.04.23

这套题前两道都是一眼看上去像构造,真正难点都在“把可行支付范围”或者“回文和的形态”先写成结论。第三题是实现题,但不是简单照着流程抄库,核心在于把元特征选参和逻辑回归训练都稳定落下来;第四题最有区分度,需要先把“能交换”转成值域图上的连通性,再做每个连通块内部的字典序最小重排。

第 1 题:小兰的对称配额表

长度固定为 的回文数组,所有改动都会成对出现;只有在中间留出一个单点时,和的奇偶性才真正自由。把这一点想清楚之后,答案只和 的奇偶有关。

第 2 题:园子的双面额补差付款

如果一共拿了 张钞票,那么总金额一定落在区间 里,而且这个区间里的每个整数都能凑出来。于是问题直接变成:找到第一个能把价格覆盖住的区间,看它的左端点有没有已经越过商品价格。

第 3 题:小柯的历史任务调参器

这题有两层流程。第一层是按元特征做 近邻选出最合适的正则参数;第二层是用这个参数去训练一份标准的二分类逻辑回归。数据范围很小,完全可以自己把训练过程实现出来,不必依赖现成框架。

第 4 题:小哀的倍数交换排序

交换条件看的是当前位置上的两个值能否整除,因此真正决定可达性的不是下标,而是“当前数组里出现过的值”在倍数关系图上的连通性。每个连通块里的值可以任意重排,字典序最小自然就是把块内最小值尽量放到最靠前的位置。

1. 对称配额表

问题描述

小兰在整理一张长度为 的对称配额表,表中的第 个位置记为

如果对任意的 都满足:

那么这张表就被称为一张回文表。

现在给定长度 ,需要判断下面这个条件是否成立:

  • 对于每一个满足 的正整数 ,都能构造出一张长度为 的回文表;
  • 表中所有元素都必须是正整数;
  • 所有元素之和恰好等于

如果上述条件成立,输出 Yes;否则输出 No

输入格式

第一行输入一个整数 ,表示测试数据组数。

接下来 行,每行输入一个整数 ,表示回文表的长度。

输出格式

对于每组数据,输出一行结果:

  • 若条件成立,输出 Yes
  • 否则输出 No

样例输入

4
1
2
1000000000
999999999

样例输出

Yes
No
No
Yes

数据范围

样例 解释说明
样例1 的第 长度为 时只有一个位置,任意把这个位置填成 即可,因此答案是 Yes
样例1 的第 长度为 时两个位置必须相等,所以总和一定是偶数,无法覆盖所有
样例1 的第 这个 是偶数,同样只能构造出偶数总和,因此答案是 No
样例1 的第 这个 是奇数,可以把多出来的部分全部放在中间位置,因此答案是 Yes

题解

关键只在于回文结构会怎样限制总和。

如果长度 是偶数,那么每个位置都会和另一个位置成对出现。设某一对位置上的值都是 ,它们对总和的贡献就是 。整张表由若干这样的配对组成,所以总和一定是偶数。

这就带来一个直接结论:

  • 是偶数时,虽然最小总和仍然是 ,但所有奇数总和都不可能出现;
  • 题目要求的是“所有 都要能构造出来”,因此偶数长度一定不满足条件。

如果长度 是奇数,情况就不同了。除去左右配对的位置之后,中间还会剩下一个单独的位置。

先把所有位置都填成 ,此时总和正好是 。若想把总和增加到任意一个 ,只需要把中间那个位置从 改成:

这样:

  • 左右对称关系不会被破坏;
  • 所有元素仍然是正整数;
  • 总和恰好变成

所以奇数长度时,所有 都可以实现。

最终结论是:

  • 为奇数,输出 Yes
  • 为偶数,输出 No

复杂度分析

每组数据只需要判断一次奇偶性,时间复杂度是 ,总时间复杂度是 ,空间复杂度是

参考代码(Python)

import sys

def input() -> str:
    return sys.stdin.readline().strip()

def solve() -> None:
    t = int(input())
    out = []
    for _ in range(t):
        n = int(input())
        # 奇数长度有一个独立的中间位置,可以单独补任意增量。
        if n & 1:
            out.append("Yes")
        else:
            out.append("No")
    sys.stdout.write("\n".join(out))

if __name__ == "__main__":
    solve()

2. 双面额补差付款

问题描述

K 小姐手里有两种面额的纸券,并且每种都可以无限使用:

  • 一种面额是
  • 另一种面额是

她想支付一件价格为 的商品。收银台不支持找零,所以实际支付金额必须满足:

  • 付款金额不能小于
  • 若付款金额超过 ,超出的部分也会被直接扣掉。

请计算最少需要多付多少金额。

如果可以恰好支付,答案就是

输入格式

第一行输入一个整数 ,表示测试数据组数。

接下来 行,每行输入两个整数 ,分别表示较小的面额和商品价格。

输出格式

对于每组数据,输出一行一个整数,表示最少需要额外多支付的金额。

样例输入

3
3 8
4 6
5 7

样例输出

0
2
3

数据范围

样例 解释说明
样例1 的第 用两张纸券,金额可以是 中的任意一个,正好可以付出
样例1 的第 只拿一张不够,拿两张时最少也要付 ,因此多付
样例1 的第 拿两张时金额只能落在 之间,所以最少多付

题解

先把“拿了多少张纸券”固定下来。

假设一共拿了 张纸券,其中有 张面额为 ,剩下 张面额为 ,那么总金额就是:

因为 可以从 取到 ,所以当张数固定为 时,所有可支付金额刚好是一个完整区间:

而且这个区间中的每一个整数都能凑出来。

于是问题变成了:找到最小的 ,使得区间右端点已经不小于商品价格 。也就是说:

满足这个条件的最小张数是:

接下来只要看这个区间的左端点

  • 如果 ,说明价格 落在区间内部,可以恰好支付,答案是
  • 如果 ,说明这个区间整体已经越过了 ,最少只能支付左端点 ,答案就是

因此答案可以直接写成:

其中

复杂度分析

每组数据只做常数次计算,时间复杂度是 ,总时间复杂度是 ,空间复杂度是

参考代码(Python)

import sys

def input() -> str:
    return sys.stdin.readline().strip()

def solve() -> None:
    t = int(input())
    out = []
    for _ in range(t):
        n, m = map(int, input().split())

        # 这是第一个让区间右端点覆盖到 m 的张数。
        k = (m + n) // (n + 1)

        # 该张数下能达到的最小金额是 k * n。
        ans = k * n - m
        if ans < 0:
            ans = 0
        out.append(str(ans))

    sys.stdout.write("\n".join(out))

if __name__ == "__main__":
    solve()

3. 历史任务调参器

问题描述

A 先生维护了一份历史任务库。每条历史记录都包含两部分信息:

  • 一组刻画任务规模的元特征;
  • 该任务上效果最好的逻辑回归正则参数 以及对应得分。

现在给定一份新的二分类训练集和测试集,需要按下面的规则,先从历史任务里挑出最合适的 ,再用这个参数训练模型并预测测试标签。

1. 当前任务的元特征

设训练集共有 个样本,每个样本有 个特征,正类样本数为 ,负类样本数为 。定义当前任务的元特征向量为:

其中:

2. 用 近邻挑选参数

输入中的 history 里,每一条记录都包含:

  • meta:一个三维向量;
  • C:该历史任务使用的正则参数;
  • score:该参数在该任务上的表现,分数越大越好。

需要按下面的步骤挑选参数:

  1. 计算当前任务元特征 到每条历史记录 meta 的欧几里得距离;
  2. 取距离最近的 条历史记录;
  3. 如果距离相同,则按输入中的出现顺序更靠前者优先;
  4. 统计这 条记录里出现过的所有 C
  5. 对每个 C,计算它在这 条记录中的平均 score;若某条记录没有该 C,则忽略;
  6. 取平均分最高的那个 C 作为 ;若仍然并列,取数值更小的那个。

3. 训练逻辑回归并输出预测

选出 后,需要训练一份带 正则的二分类逻辑回归模型,并输出测试集预测标签。

模型的正则强度与 对应,即:

设参数向量为 ,偏置为 ,则样本 的线性项为:

概率函数为:

训练目标是标准的二分类逻辑回归负对数似然,加上权重向量的 正则项;偏置项不参与正则化。

训练完成后:

  • 若某个测试样本的线性项 ,输出标签 1
  • 否则输出标签 0

输入格式

输入只有一行,是一个 JSON 对象:

{
  "train_X": [[...], ...],
  "train_y": [0, 1, ...],
  "test_X": [[...], ...],
  "history": [
    {"meta": [50, 4, 0.10], "C": 0.1, "score": 0.80},
    {"meta": [120, 2, 0.25], "C": 1.0, "score": 0.85}
  ]
}

其中:

  • train_X 表示训练集特征矩阵;
  • train_y 表示训练集标签,元素只会是 01
  • test_X 表示测试集特征矩阵;
  • history 表示历史任务列表。

输出格式

输出一行 JSON:

{"C_star":0.1,"pred":[0,1]}

其中:

  • C_star 表示选出的参数
  • pred 表示测试集预测结果;
  • pred 的长度必须等于测试样本数。

样例输入

{
 "train_X": [[0.0,0.0],[0.2,0.4],[0.3,0.5],[0.1,0.2],[1.0,1.1],[1.2,1.3],[1.3,1.4],[1.1,1.0]],
 "train_y": [0,0,0,0,1,1,1,1],
 "test_X": [[0.15,0.25],[1.15,1.25]],
 "history": [
{"meta":[50,2,0.10],"C":0.1,"score":0.82},
{"meta":[48,2,0.20],"C":0.3,"score":0.79},
{"meta":[60,2,0.00],"C":1.0,"score":0.85},
{"meta":[40,4,0.30],"C":3.0,"score":0.80},
{"meta":[55,3,0.18],"C":0.3,"score":0.83},
{"meta":[52,2,0.10],"C":1.0,"score":0.81},
{"meta":[58,2,0.05],"C":10.0,"score":0.78}
 ]
}

样例输出

{"C_star":0.1,"pred":[0,1]}

数据范围

  • history 至少包含 条记录
  • C 只会取自
  • 所有输入值都是数值型,且没有缺失值
样例 解释说明
样例1 先按元特征选出最近的 条历史记录,再比较这些记录里各个 C 的平均 score,得到 。之后用该参数训练逻辑回归,两个测试样本的预测结果分别是 01

题解

这题分成两个阶段,前后顺序不能反。

第一步:先用元特征挑出参数

当前任务的元特征只有三维:

  • 训练样本数;
  • 特征维度;
  • 类别不平衡度。

把这三个量算出来之后,就能和每条历史记录的 做欧

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

互联网刷题笔试宝典 文章被收录于专栏

互联网刷题笔试宝典,这里涵盖了市面上大部分的笔试题合集,希望助大家春秋招一臂之力

全部评论

相关推荐

头像
04-27 15:11
已编辑
华东师范大学 算法工程师
暑期实习从2月开始投,面了两个月,流程该挂的都挂完了,腾讯字节一共号称是1.7w个hc,不知道都发给谁了,估计今年秋招要难顶。Timeline米哈游、美团、蚂蚁、微软等公司直接简历挂穿,没进面。携程:3.3&nbsp;投递、测评3.12&nbsp;笔试3.18&nbsp;一面3.25&nbsp;二面4.13&nbsp;ai面(hr面)4.14&nbsp;英语测评4.23&nbsp;offer(已拒)腾讯:2.6&nbsp;测评2.28&nbsp;wxg一面3.5&nbsp;wxg二面(挂)3.11&nbsp;teg一面3.21&nbsp;teg二面(取消)3.31&nbsp;teg一面4.10&nbsp;teg二面(挂)4.21&nbsp;wxg一面4.24&nbsp;wxg二面(挂)字节:1.28&nbsp;aml约面(取消)3.17&nbsp;火山一面(挂)4.8&nbsp;aml一面(挂)4.20&nbsp;抖音data一面(挂)阿里:3.23&nbsp;投递、测评3.28&nbsp;笔试3.31&nbsp;淘天一面4.8&nbsp;钉钉一面4.9&nbsp;淘天二面4.10&nbsp;阿里控股一面4.12&nbsp;钉钉二面(取消)4.15&nbsp;淘天hr面4.16&nbsp;淘天offer(已接)4.21&nbsp;高德一面(取消)4.22&nbsp;淘宝闪购一面(取消)面试最大的感触是,现在撞上ai转型,一堆老业务急着转向,新业务非常不成熟,研究型的组bar非常高根本进不去,业务侧挂着算法的岗位干的都是工程活,面试却又要问算法,另外agent的落地也远没有那么广,绝大多数还是那套写死的系统调一下llm&nbsp;api或者做做rag,其余少部分真的在搭agent的,基本不能在线上服务用什么很智能的模型,现阶段成本太高,进去大概率就是给垃圾模型从工程方面兜底,除了业务场景的应用和数据经验以外,技术方面很难有什么提升。算法岗做不了基模的还是去搜广推好,之前判断失误了完全没投,秋招不知道还进不进得去。
绿糖滑稽:携程这什么雷霆流程时长
我的求职进度条
点赞 评论 收藏
分享
1.&nbsp;简单做一下个人自我介绍。2.&nbsp;详细聊聊你的过往实习经历与核心工作内容。3.&nbsp;MinerU输出内容为Markdown格式,相较于普通纯文本,其层级化结构会为检索环节带来哪些优势?你的整体业务链路里,VLM模型的介入时机是检索阶段还是仅用于最终答案生成?Ragas评测指标中,Faithfulness分数偏低一般反映模型存在哪类问题?4.&nbsp;结合LangGraph框架,说明Node与Edge分别对应业务流程里的什么角色?智能体长短期记忆在落地实现层面存在哪些差异?短期记忆一般会存储在什么位置?Agent依靠什么逻辑完成工具的识别与择优调用,依赖工具名称还是功能描述?5.&nbsp;分别说明向量检索与关键词检索的核心优势及短板劣势。6.&nbsp;相较于直接向大模型发起提问,RAG方案为什么可以有效降低内容事实偏差问题?7.&nbsp;当原始源文档发生内容变更时,如何保障向量数据库的索引数据能够实时同步更新?8.&nbsp;简述Query&nbsp;Rewrite的核心定义,该优化手段可以针对性解决用户query的哪些痛点问题?9.&nbsp;模型Temperature参数调高与调低,分别会对生成内容的风格、随机性带来哪些不同影响?10.&nbsp;解释CoT思维链的底层原理,分析该方式为何能提升模型复杂任务的处理能力?11.&nbsp;请说明Agent任务执行流程中,Thought、Action、Observation三者的循环协作逻辑。12.&nbsp;当对话轮次过长、内容超出模型上下文最大窗口限制时,有哪些主流解决方案?13.&nbsp;大模型进行工具调用的过程中,模型输出内容为直接答案还是携带调用参数的JSON格式字符串?14.&nbsp;在Agent应用场景下,系统提示词与用户提示词对模型的约束力度、约束范围有何不同?15.&nbsp;介绍HNSW索引的核心概念,分析其检索效率优于暴力全量搜索的核心原因。16.&nbsp;交流探讨OpenClaw相关技术内容。17.&nbsp;实际开发Agent落地项目时,如何依据任务场景判断选用7B小模型还是70B大模型?18.&nbsp;若Agent持续重复发起错误的工具调用请求,应该从哪些环节排查并优化修复?📳对于想求职算法岗的同学,如果想参加高质量项目辅导,提升面试能力,欢迎后台联系。
查看18道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务