跳到主要内容

didi

一、滴滴算法面试核心特点

滴滴作为出行赛道头部企业,后端开发岗的算法考察有极强的岗位和业务针对性,整体规律如下:

  1. 难度分布:中等题占 70%,简单题 20%,困难题 10%,极少出偏题怪题,重点考察代码基本功和算法思维落地能力。
  2. 必考核心:链表、二叉树、数组哈希、二分查找、双指针 / 滑动窗口,几乎每轮技术面都会出现 1-2 道。
  3. 特色高频:区间贪心、图论最短路径 / 拓扑排序、海量数据处理,和出行派单、路径规划、海量订单业务强绑定,二面 / 三面高频出现。
  4. 轮次侧重:一面侧重基础数据结构、代码规范;二面侧重中等算法思想、边界处理;三面 / 终面侧重困难题、海量数据场景题、业务结合算法设计。

二、滴滴面试 Top100 算法题(按高频优先级排序)

高频星级说明:★★★★★ 必考 / 超高频,80% 以上面试会出现;★★★★☆ 高频,50% 以上面试会出现。

模块一:链表(10 道,一面必考核心)

题号题目名称高频星级考察重点
LeetCode 206反转链表★★★★★基础递归 / 迭代,链表操作基本功
LeetCode 141环形链表★★★★★快慢指针,环的判定
LeetCode 21合并两个有序链表★★★★★递归 / 迭代,有序链表合并
LeetCode 19删除链表的倒数第 N 个结点★★★★★快慢指针,边界处理
LeetCode 92反转链表 II★★★★★区间反转,链表变形操作
LeetCode 142环形链表 II★★★★★快慢指针,环入口定位
LeetCode 148排序链表★★★★☆归并排序,链表分治
LeetCode 25K 个一组翻转链表★★★★☆分组反转,递归 + 迭代结合
LeetCode 23合并 K 个升序链表★★★★☆优先队列 / 分治,多链表合并
LeetCode 143重排链表★★★★☆找中点 + 反转 + 合并,链表综合操作

模块二:数组与哈希表(15 道,占比最高的基础模块)

题号题目名称高频星级考察重点
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滑动窗口最大值★★★★☆单调队列,滑动窗口进阶

模块三:字符串(10 道,一面高频热身题)

题号题目名称高频星级考察重点
LeetCode 3无重复字符的最长子串★★★★★滑动窗口,字符串高频核心题
LeetCode 20有效的括号★★★★★栈,基础数据结构应用
LeetCode 5最长回文子串★★★★★中心扩展 / 动态规划
LeetCode 415字符串相加★★★★★大数加法,模拟进位
LeetCode 14最长公共前缀★★★★☆字符串遍历,边界处理
LeetCode 151反转字符串中的单词★★★★☆双指针,字符串原地操作
LeetCode 22括号生成★★★★☆回溯,剪枝优化
LeetCode 43字符串相乘★★★★☆大数乘法,模拟竖式计算
LeetCode 76最小覆盖子串★★★★☆滑动窗口,困难级变形题
LeetCode 28找出字符串中第一个匹配项的下标★★★★☆KMP / 暴力匹配,字符串匹配基础

模块四:二叉树与递归(12 道,每轮面试必出)

题号题目名称高频星级考察重点
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二叉树中的最大路径和★★★★☆递归,困难级二叉树题,三面高频

模块五:栈与队列(6 道,单调栈为核心考点)

题号题目名称高频星级考察重点
LeetCode 155最小栈★★★★★辅助栈,栈的设计
LeetCode 232用栈实现队列★★★★★双栈,栈与队列特性转换
LeetCode 739每日温度★★★★★单调栈,经典应用题
LeetCode 225用队列实现栈★★★★☆单队列 / 双队列,基础设计题
LeetCode 84柱状图中最大的矩形★★★★☆单调栈,困难级经典题
LeetCode 85最大矩形★★★★☆单调栈,困难级进阶题

模块六:贪心算法(8 道,滴滴业务场景高频)

题号题目名称高频星级考察重点
LeetCode 435无重叠区间★★★★★区间贪心,派单 / 订单场景高频变形
LeetCode 55跳跃游戏★★★★★贪心,可达性判定
LeetCode 121买卖股票的最佳时机★★★★★贪心 / 动态规划,基础应用题
LeetCode 134加油站★★★★☆贪心,出行场景贴合题
LeetCode 45跳跃游戏 II★★★★☆贪心,最小步数计算
LeetCode 452用最少数量的箭引爆气球★★★★☆区间贪心,经典变形题
LeetCode 122买卖股票的最佳时机 II★★★★☆贪心,股票题变形
LeetCode 135分发糖果★★★★☆贪心,困难级经典题

模块七:双指针与滑动窗口(7 道,超高频核心思想)

题号题目名称高频星级考察重点
LeetCode 26删除有序数组中的重复项★★★★★快慢指针,数组原地操作
LeetCode 27移除元素★★★★★快慢指针,基础双指针题
LeetCode 42接雨水★★★★★双指针 / 单调栈,经典困难题
LeetCode 80删除有序数组中的重复项 II★★★★☆快慢指针,变形题
LeetCode 167两数之和 II - 输入有序数组★★★★☆左右指针,有序数组查找
LeetCode 1004最大连续 1 的个数 III★★★★☆滑动窗口,变形题
LeetCode 395至少有 K 个重复字符的最长子串★★★★☆滑动窗口 / 分治,进阶题

模块八:二分查找(7 道,必考变形题)

题号题目名称高频星级考察重点
LeetCode 704二分查找★★★★★基础二分,模板掌握
LeetCode 34在排序数组中查找元素的第一个和最后一个位置★★★★★二分左右边界,经典变形题
LeetCode 33搜索旋转排序数组★★★★★二分变形,无重复旋转数组
LeetCode 153寻找旋转排序数组中的最小值★★★★★二分变形,旋转数组极值查找
LeetCode 35搜索插入位置★★★★★二分变形,边界判定
LeetCode 81搜索旋转排序数组 II★★★★☆二分变形,有重复旋转数组
LeetCode 154寻找旋转排序数组中的最小值 II★★★★☆二分变形,有重复元素极值查找

模块九:动态规划(10 道,二面 / 三面高频)

题号题目名称高频星级考察重点
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,基础题

模块十:图论与并查集(5 道,滴滴出行场景特色题)

题号题目名称高频星级考察重点
LeetCode 200岛屿数量★★★★★DFS/BFS/ 并查集,连通性经典题
LeetCode 207课程表★★★★★拓扑排序,有向无环图判定
LeetCode 743网络延迟时间★★★★☆Dijkstra 最短路径,出行路径规划贴合题
LeetCode 547省份数量★★★★☆并查集 / DFS,连通性应用题
LeetCode 208实现 Trie (前缀树)★★★★☆前缀树设计,字符串检索场景

模块十一:排序与分治(3 道,手撕代码必考)

题号题目名称高频星级考察重点
LeetCode 912排序数组★★★★★手撕快排 / 归并排序,排序算法基本功
LeetCode 179最大数★★★★☆自定义排序,字符串排序变形
LeetCode 315计算右侧小于当前元素的个数★★★★☆归并排序分治,逆序对变形题

模块十二:海量数据与业务场景题(5 道,终面必考题,滴滴特色)

序号题目名称高频星级考察重点
110 亿条订单数据,找出出现次数 Top100 的订单号★★★★★分治 + 哈希 + 小顶堆,海量数据处理核心题
2两个 100G 的订单日志文件,找出共同的订单号★★★★★分治 + 哈希,大数据交集处理
3海量用户轨迹数据,快速找出指定地理区域内的所有用户★★★★☆GeoHash + 空间索引,出行场景专属题
410 亿个无序整数,找出其中位数★★★★☆分治 + 快速选择,海量数据统计
5设计打车派单系统的核心调度算法★★★★☆贪心 + 最短路径 + 优先级队列,业务算法设计

模块十三:其他高频题(2 道,位运算基础题)

题号题目名称高频星级考察重点
LeetCode 136只出现一次的数字★★★★★位运算,异或特性应用
LeetCode 2312 的幂★★★★☆位运算,二进制特性判定

三、滴滴算法面试备考建议

  1. 优先级分层:先刷完所有★★★★★的必考题目,确保手撕代码零 bug,再攻克★★★★☆的高频题,最后补充场景题。
  2. 贴合业务刷题:重点吃透区间贪心、最短路径、海量数据处理三类题,滴滴面试极大概率会结合出行场景做变形考察。
  3. 代码规范优先:滴滴面试官非常看重代码的可读性、边界处理、异常情况考虑,刷题时务必养成先写测试用例、再写核心逻辑、最后做边界校验的习惯。
  4. 面试答题技巧:先讲清楚算法思路和时间 / 空间复杂度,和面试官确认思路无误后再动手写代码,写完后主动走一遍测试用例,展示严谨的思维逻辑。