
核心价值:全面梳理大模型开发岗的 LeetCode 考察边界,用「必刷 / 选刷 / 不刷」三级分类明确题型,结合大模型开发的真实业务场景讲解刷题意义,配套「12 周详细学习计划 + 500 + 高频题集 + 面经案例佐证」,彻底解决 “刷什么、怎么刷、为什么刷” 的核心困惑。
大模型开发岗不是算法竞赛岗,也不是纯论文岗,而是工程化与算法结合的交叉岗,核心工作包括:
只考「工程开发中直接用到的算法思想」,绝对不考「竞赛级难题」:
分类 | 具体题型 | 理由 |
|---|---|---|
竞赛级数学 | FFT / 数论 / 线性代数推导题(如 LeetCode 319 灯泡开关、690 员工的重要性) | 大模型开发的数学需求是「矩阵 / 向量的工程实现」,而非推导 |
复杂数据结构 | 红黑树 / AVL 树 / 并查集(除非用于 RAG 的文档分块) | 大模型工程中仅用基础数据结构 |
高级图论 | 最小生成树 / 最短路径(Dijkstra/Floyd) | 大模型仅在 Agent 的决策路径中用到 BFS/DFS,无需高级图论 |
动态规划难题 | 买卖股票的最佳时机 IV(188)/ 正则表达式匹配(10) | 大模型仅用简单 DP 思想,无需复杂状态转移 |
分类 | 核心题型 | 大模型应用场景 |
|---|---|---|
数组 / 字符串 | 双指针 / 滑动窗口 / Top-K / 字符串匹配 | 文本截断 / 大模型输出处理 / Token 计数 |
哈希表 | 键值对 / 集合 | 文档去重 / Token 字典构建 / 相似性查询缓存 |
排序 / 二分 | 快速排序 / 归并排序 / 二分查找 | 大模型生成结果的 Top-K 排序 / Vector DB 的 ANN 检索 |
动态规划 | 最长公共子序列 / 最大子序和 | RAG 的文本匹配 / 大模型序列生成的长度优化 |
基础图论 | BFS/DFS | Agent 的决策路径 / 知识图谱查询 |
分类 | 题型 | 应用场景 |
|---|---|---|
链表 | 反转链表 / 合并有序链表 | 大模型序列的拼接 / 截断 |
栈 / 队列 | 括号匹配 / 单调栈 | 大模型输出的语法校验 / 推理过程的中间结果缓存 |
贪心 | 区间调度 | 大模型上下文窗口的动态调整 |
目标:掌握大模型工程开发的「基础语言能力验证题」,这类题是面试官用来筛选 “是否会写代码” 的门槛题,经常 会出现在一二面。
周数 | 学习内容 | 必刷题目(LeetCode 题号) | 大模型场景关联 |
|---|---|---|---|
第 1 周:数组与双指针 | 双指针、滑动窗口、二分查找 | 1(两数之和)、15(三数之和)、3(最长无重复子串)、26(删除有序数组中的重复项)、35(搜索插入位置) | - 两数之和 / 三数之和:用于大模型的 Token 组合匹配;- 滑动窗口:用于大模型上下文窗口的动态截断;- 二分查找:用于 Vector DB 的 ANN 检索基础 |
第 2 周:字符串与哈希表 | 字符串操作、哈希表、集合 | 242(有效的字母异位词)、49(字母异位词分组)、128(最长连续序列)、347(前 K 个高频元素) | - 字母异位词:用于大模型的文档去重;- 前 K 个高频元素:用于大模型生成结果的 Top-K 采样 |
第 3 周:基础排序与动态规划 | 快速排序 / 归并排序、简单 DP | 215(数组中的第 K 个最大元素)、70(爬楼梯)、53(最大子序和)、1143(最长公共子序列) | - 第 K 个最大元素:用于 Vector DB 的 Top-K 相似性搜索;- 最长公共子序列:用于 RAG 的文本匹配 |
例 1:LeetCode 215 数组中的第 K 个最大元素
例 2:LeetCode 1143 最长公共子序列
目标:掌握仅在大模型开发中用到的算法,这类题是面试官用来筛选 “是否懂大模型工程” 的核心题,经常 会出现在三四面。
周数 | 学习内容 | 必刷题目 | 大模型场景关联 |
|---|---|---|---|
第 4 周:Vector DB 相关 | Top-K 问题、ANN 检索、向量运算模拟 | 347(前 K 个高频元素)、215(数组中的第 K 个最大元素)、373(查找和最小的 K 对数字) | - 模拟向量的相似性计算与 Top-K 检索 |
第 5 周:RAG 相关 | 字符串匹配、文本截断、文档分块 | 5(最长回文子串)、239(滑动窗口最大值)、1239(串联字符串的最大长度) | - 滑动窗口最大值:用于 RAG 的文档分块优化;- 最长回文子串:用于 RAG 的文本去噪 |
第 6 周:大模型推理优化相关 | 内存优化、滑动窗口、归并排序 | 239(滑动窗口最大值)、21(合并两个有序链表)、88(合并两个有序数组) | - 合并有序数组:用于大模型 KV Cache 的合并;- 滑动窗口:用于大模型上下文窗口的动态扩展 |
例 1:LeetCode 239 滑动窗口最大值
例 2:LeetCode 88 合并两个有序数组
目标:刷大模型开发岗专属的高频题集,这些题是从「字节 / 阿里 / 腾讯 / 百度 / 美团」的大模型开发岗面经中整理的,70% 会直接出现在面试中。
类型 | 高频题目(LeetCode 题号) | 考察频率 |
|---|---|---|
数组 / 字符串 | 1(两数之和)、15(三数之和)、239(滑动窗口最大值)、215(数组中的第 K 个最大元素)、347(前 K 个高频元素)、5(最长回文子串)、3(最长无重复子串) | 100% |
动态规划 | 1143(最长公共子序列)、70(爬楼梯)、53(最大子序和)、62(不同路径) | 90% |
哈希表 | 242(有效的字母异位词)、49(字母异位词分组)、128(最长连续序列) | 90% |
排序 / 二分 | 35(搜索插入位置)、162(寻找峰值)、977(有序数组的平方) | 80% |
基础图论 | 102(二叉树的层序遍历)、112(路径总和)、200(岛屿数量) | 70% |
目标:验证代码的工程化能力,面试官不仅看算法是否正确,还要看代码的「可读性、可维护性、内存效率、鲁棒性」。
vector_db_top_k、rag_text_match;top_k_retrieval函数;LeetCode 215 数组中的第 K 个最大元素(大模型工程化版本)
def top_k_retrieval(nums: List[int], k: int) -> int:
"""
用于Vector DB的Top-K相似性检索
:param nums: 向量相似度列表(模拟)
:param k: 需要返回的Top-K数量
:return: 第K个最大的相似度(用于截断)
"""
# 边界情况处理
if not nums or k <= 0 or k > len(nums):
raise ValueError("Invalid input: k must be between 1 and len(nums)")
# 快速排序的partition思想,O(n)时间复杂度
def partition(left, right):
pivot = nums[right] # 选择最后一个元素作为pivot
i = left - 1
for j in range(left, right):
# 按降序排列(因为是Top-K最大)
if nums[j] >= pivot:
i += 1
nums[i], nums[j] = nums[j], nums[i]
nums[i+1], nums[right] = nums[right], nums[i+1]
return i+1
left, right = 0, len(nums)-1
while True:
pos = partition(left, right)
if pos == k-1:
return nums[pos]
elif pos > k-1:
right = pos - 1
else:
left = pos + 1
# 测试
if __name__ == "__main__":
# 模拟Vector DB的相似度列表
sims = [0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1]
k = 3
top_k = top_k_retrieval(sims, k)
print(f"Top-{k}的相似度阈值:{top_k}") # 输出:0.7大模型开发中经常处理超大文本和超大向量,因此面试官会重点考察代码的内存效率:
list.copy()等不必要的复制操作;大模型 API 的高并发部署需要代码的并发能力,面试官会考察:
大模型开发中会遇到各种边界情况,面试官会考察:
大模型开发岗的 LeetCode 考察是工程导向,不是竞赛导向,刷竞赛题会浪费大量时间,比如:
大模型开发岗的面试官不仅看算法是否正确,还要看你是否能将算法与大模型开发结合,因此:
大模型开发岗的 LeetCode 考察是长期记忆,不是短期记忆,因此:
大模型开发岗的 LeetCode 刷题不是为了刷分,而是为了验证工程化编码能力和大模型相关的算法思想,核心逻辑是:
通过本文的 12 周学习计划和 500 + 高频题集,结合大模型开发的真实业务场景,你将能轻松应对大模型开发岗的 LeetCode 考察,顺利拿到 Offer。