滴滴作为出行赛道头部企业,后端开发岗的算法考察有极强的岗位和业务针对性,整体规律如下:
- 难度分布:中等题占 70%,简单题 20%,困难题 10%,极少出偏题怪题,重点考察代码基本功和算法思维落地能力。
- 必考核心:链表、二叉树、数组哈希、二分查找、双指针 / 滑动窗口,几乎每轮技术面都会出现 1-2 道。
- 特色高频:区间贪心、图论最短路径 / 拓扑排序、海量数据处理,和出行派单、路径规划、海量订单业务强绑定,二面 / 三面高频出现。
- 轮次侧重:一面侧重基础数据结构、代码规范;二面侧重中等算法思想、边界处理;三面 / 终面侧重困难题、海量数据场景题、业务结合算法设计。
高频星级说明:★★★★★ 必考 / 超高频,80% 以上面试会出现;★★★★☆ 高频,50% 以上面试会出现。
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 206 | 反转链表 | ★★★★★ | 基础递归 / 迭代,链表操作基本功 |
| LeetCode 141 | 环形链表 | ★★★★★ | 快慢指针,环的判定 |
| LeetCode 21 | 合并两个有序链表 | ★★★★★ | 递归 / 迭代,有序链表合并 |
| LeetCode 19 | 删除链表的倒数第 N 个结点 | ★★★★★ | 快慢指针,边界处理 |
| LeetCode 92 | 反转链表 II | ★★★★★ | 区间反转,链表变形操作 |
| LeetCode 142 | 环形链表 II | ★★★★★ | 快慢指针,环入口定位 |
| LeetCode 148 | 排序链表 | ★★★★☆ | 归并排序,链表分治 |
| LeetCode 25 | K 个一组翻转链表 | ★★★★☆ | 分组反转,递归 + 迭代结合 |
| LeetCode 23 | 合并 K 个升序链表 | ★★★★☆ | 优先队列 / 分治,多链表合并 |
| LeetCode 143 | 重排链表 | ★★★★☆ | 找中点 + 反转 + 合并,链表综合操作 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 1 | 两数之和 | ★★★★★ | 哈希表,空间换时间 |
| LeetCode 15 | 三数之和 | ★★★★★ | 排序 + 双指针,去重边界处理 |
| LeetCode 56 | 合并区间 | ★★★★★ | 排序 + 区间处理,滴滴派单场景高频变形 |
| LeetCode 215 | 数组中的第 K 个最大元素 | ★★★★★ | 快速选择 / 堆排序,分治思想 |
| LeetCode 128 | 最长连续序列 | ★★★★★ | 哈希表,O (n) 时间复杂度优化 |
| LeetCode 11 | 盛最多水的容器 | ★★★★★ | 双指针,贪心思想 |
| LeetCode 283 | 移动零 | ★★★★★ | 双指针,原地数组操作 |
| LeetCode 347 | 前 K 个高频元素 | ★★★★☆ | 哈希 + 堆 / 桶排序 |
| LeetCode 54 | 螺旋矩阵 | ★★★★☆ | 边界模拟,数组遍历 |
| LeetCode 48 | 旋转图像 | ★★★★☆ | 原地数组操作,矩阵变换 |
| LeetCode 57 | 插入区间 | ★★★★☆ | 区间处理,合并区间变形 |
| LeetCode 18 | 四数之和 | ★★★★☆ | 双指针,三数之和变形 |
| LeetCode 448 | 找到所有数组中消失的数字 | ★★★★☆ | 原地哈希,空间优化 |
| LeetCode 442 | 数组中重复的数据 | ★★★★☆ | 原地哈希,重复值定位 |
| LeetCode 239 | 滑动窗口最大值 | ★★★★☆ | 单调队列,滑动窗口进阶 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 3 | 无重复字符的最长子串 | ★★★★★ | 滑动窗口,字符串高频核心题 |
| LeetCode 20 | 有效的括号 | ★★★★★ | 栈,基础数据结构应用 |
| LeetCode 5 | 最长回文子串 | ★★★★★ | 中心扩展 / 动态规划 |
| LeetCode 415 | 字符串相加 | ★★★★★ | 大数加法,模拟进位 |
| LeetCode 14 | 最长公共前缀 | ★★★★☆ | 字符串遍历,边界处理 |
| LeetCode 151 | 反转字符串中的单词 | ★★★★☆ | 双指针,字符串原地操作 |
| LeetCode 22 | 括号生成 | ★★★★☆ | 回溯,剪枝优化 |
| LeetCode 43 | 字符串相乘 | ★★★★☆ | 大数乘法,模拟竖式计算 |
| LeetCode 76 | 最小覆盖子串 | ★★★★☆ | 滑动窗口,困难级变形题 |
| LeetCode 28 | 找出字符串中第一个匹配项的下标 | ★★★★☆ | KMP / 暴力匹配,字符串匹配基础 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 102 | 二叉树的层序遍历 | ★★★★★ | BFS,二叉树遍历核心 |
| LeetCode 94 | 二叉树的中序遍历 | ★★★★★ | 递归 / 迭代,二叉树基础遍历 |
| LeetCode 144 | 二叉树的前序遍历 | ★★★★★ | 递归 / 迭代,二叉树基础遍历 |
| LeetCode 145 | 二叉树的后序遍历 | ★★★★★ | 递归 / 迭代,二叉树基础遍历 |
| LeetCode 236 | 二叉树的最近公共祖先 | ★★★★★ | 递归,二叉树经典题 |
| LeetCode 98 | 验证二叉搜索树 | ★★★★★ | 递归 / 中序遍历,二叉搜索树特性 |
| LeetCode 101 | 对称二叉树 | ★★★★★ | 递归 / 迭代,二叉树对称性判定 |
| LeetCode 104 | 二叉树的最大深度 | ★★★★★ | DFS/BFS,二叉树深度计算 |
| LeetCode 226 | 翻转二叉树 | ★★★★★ | 递归,二叉树基础操作 |
| LeetCode 105 | 从前序与中序遍历序列构造二叉树 | ★★★★☆ | 递归,二叉树重构 |
| LeetCode 103 | 二叉树的锯齿形层序遍历 | ★★★★☆ | BFS,层序遍历变形 |
| LeetCode 124 | 二叉树中的最大路径和 | ★★★★☆ | 递归,困难级二叉树题,三面高频 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 155 | 最小栈 | ★★★★★ | 辅助栈,栈的设计 |
| LeetCode 232 | 用栈实现队列 | ★★★★★ | 双栈,栈与队列特性转换 |
| LeetCode 739 | 每日温度 | ★★★★★ | 单调栈,经典应用题 |
| LeetCode 225 | 用队列实现栈 | ★★★★☆ | 单队列 / 双队列,基础设计题 |
| LeetCode 84 | 柱状图中最大的矩形 | ★★★★☆ | 单调栈,困难级经典题 |
| LeetCode 85 | 最大矩形 | ★★★★☆ | 单调栈,困难级进阶题 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 435 | 无重叠区间 | ★★★★★ | 区间贪心,派单 / 订单场景高频变形 |
| LeetCode 55 | 跳跃游戏 | ★★★★★ | 贪心,可达性判定 |
| LeetCode 121 | 买卖股票的最佳时机 | ★★★★★ | 贪心 / 动态规划,基础应用题 |
| LeetCode 134 | 加油站 | ★★★★☆ | 贪心,出行场景贴合题 |
| LeetCode 45 | 跳跃游戏 II | ★★★★☆ | 贪心,最小步数计算 |
| LeetCode 452 | 用最少数量的箭引爆气球 | ★★★★☆ | 区间贪心,经典变形题 |
| LeetCode 122 | 买卖股票的最佳时机 II | ★★★★☆ | 贪心,股票题变形 |
| LeetCode 135 | 分发糖果 | ★★★★☆ | 贪心,困难级经典题 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 26 | 删除有序数组中的重复项 | ★★★★★ | 快慢指针,数组原地操作 |
| LeetCode 27 | 移除元素 | ★★★★★ | 快慢指针,基础双指针题 |
| LeetCode 42 | 接雨水 | ★★★★★ | 双指针 / 单调栈,经典困难题 |
| LeetCode 80 | 删除有序数组中的重复项 II | ★★★★☆ | 快慢指针,变形题 |
| LeetCode 167 | 两数之和 II - 输入有序数组 | ★★★★☆ | 左右指针,有序数组查找 |
| LeetCode 1004 | 最大连续 1 的个数 III | ★★★★☆ | 滑动窗口,变形题 |
| LeetCode 395 | 至少有 K 个重复字符的最长子串 | ★★★★☆ | 滑动窗口 / 分治,进阶题 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 704 | 二分查找 | ★★★★★ | 基础二分,模板掌握 |
| LeetCode 34 | 在排序数组中查找元素的第一个和最后一个位置 | ★★★★★ | 二分左右边界,经典变形题 |
| LeetCode 33 | 搜索旋转排序数组 | ★★★★★ | 二分变形,无重复旋转数组 |
| LeetCode 153 | 寻找旋转排序数组中的最小值 | ★★★★★ | 二分变形,旋转数组极值查找 |
| LeetCode 35 | 搜索插入位置 | ★★★★★ | 二分变形,边界判定 |
| LeetCode 81 | 搜索旋转排序数组 II | ★★★★☆ | 二分变形,有重复旋转数组 |
| LeetCode 154 | 寻找旋转排序数组中的最小值 II | ★★★★☆ | 二分变形,有重复元素极值查找 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 70 | 爬楼梯 | ★★★★★ | 线性 DP,基础入门题 |
| LeetCode 53 | 最大子数组和 | ★★★★★ | 线性 DP / 贪心,经典题 |
| LeetCode 300 | 最长递增子序列 | ★★★★★ | 线性 DP / 贪心 + 二分,核心高频题 |
| LeetCode 322 | 零钱兑换 | ★★★★★ | 完全背包,背包问题核心题 |
| LeetCode 1143 | 最长公共子序列 | ★★★★☆ | 二维 DP,经典题 |
| LeetCode 64 | 最小路径和 | ★★★★☆ | 二维 DP,网格 DP 基础题 |
| LeetCode 518 | 零钱兑换 II | ★★★★☆ | 完全背包,变形题 |
| LeetCode 221 | 最大正方形 | ★★★★☆ | 二维 DP,矩阵应用题 |
| LeetCode 72 | 编辑距离 | ★★★★☆ | 二维 DP,困难级经典题 |
| LeetCode 509 | 斐波那契数 | ★★★★☆ | 线性 DP,基础题 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 200 | 岛屿数量 | ★★★★★ | DFS/BFS/ 并查集,连通性经典题 |
| LeetCode 207 | 课程表 | ★★★★★ | 拓扑排序,有向无环图判定 |
| LeetCode 743 | 网络延迟时间 | ★★★★☆ | Dijkstra 最短路径,出行路径规划贴合题 |
| LeetCode 547 | 省份数量 | ★★★★☆ | 并查集 / DFS,连通性应用题 |
| LeetCode 208 | 实现 Trie (前缀树) | ★★★★☆ | 前缀树设计,字符串检索场景 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 912 | 排序数组 | ★★★★★ | 手撕快排 / 归并排序,排序算法基本功 |
| LeetCode 179 | 最大数 | ★★★★☆ | 自定义排序,字符串排序变形 |
| LeetCode 315 | 计算右侧小于当前元素的个数 | ★★★★☆ | 归并排序分治,逆序对变形题 |
| 序号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| 1 | 10 亿条订单数据,找出出现次数 Top100 的订单号 | ★★★★★ | 分治 + 哈希 + 小顶堆,海量数据处理核心题 |
| 2 | 两个 100G 的订单日志文件,找出共同的订单号 | ★★★★★ | 分治 + 哈希,大数据交集处理 |
| 3 | 海量用户轨迹数据,快速找出指定地理区域内的所有用户 | ★★★★☆ | GeoHash + 空间索引,出行场景专属题 |
| 4 | 10 亿个无序整数,找出其中位数 | ★★★★☆ | 分治 + 快速选择,海量数据统计 |
| 5 | 设计打车派单系统的核心调度算法 | ★★★★☆ | 贪心 + 最短路径 + 优先级队列,业务算法设计 |
| 题号 | 题目名称 | 高频星级 | 考察重点 |
|---|
| LeetCode 136 | 只出现一次的数字 | ★★★★★ | 位运算,异或特性应用 |
| LeetCode 231 | 2 的幂 | ★★★★☆ | 位运算,二进制特性判定 |
- 优先级分层:先刷完所有★★★★★的必考题目,确保手撕代码零 bug,再攻克★★★★☆的高频题,最后补充场景题。
- 贴合业务刷题:重点吃透区间贪心、最短路径、海量数据处理三类题,滴滴面试极大概率会结合出行场景做变形考察。
- 代码规范优先:滴滴面试官非常看重代码的可读性、边界处理、异常情况考虑,刷题时务必养成先写测试用例、再写核心逻辑、最后做边界校验的习惯。
- 面试答题技巧:先讲清楚算法思路和时间 / 空间复杂度,和面试官确认思路无误后再动手写代码,写完后主动走一遍测试用例,展示严谨的思维逻辑。