先分岗位
Uber 的不同岗位和团队可能考不同内容。先核对 JD 与面试邀请,再选对应题型。
Question Study
本地面经库有 84 条来源 URL 去重后的记录,其中 84 条有正文;目前整理出 55 道代表练习题,其中 55 道已完成独立深文。题目清单仍在逐帖核对和补充。
Reading Guide
题目根据面经方向重新表述,其中可能包含站内攻略建议的训练题;它们不是公司的官方题库,也不保证下一场面试重复出现。
Uber 的不同岗位和团队可能考不同内容。先核对 JD 与面试邀请,再选对应题型。
相同核心考点只保留一条,后续的附加约束放在原题里练,避免把同一道题当成多道题刷。
先口述输入、输出和边界,再写核心方案;最后解释复杂度、失败路径和面试官可能追加的约束。
Featured Deep Dive
先把这道题的核心思路讲完整,再根据自己的目标岗位挑下面的题继续练。
给定有向边,求从某个 root 出发需要反转多少条边才能到达所有节点;follow-up 计算每个 root 的答案。
Deduplicated Question Map
同一题的追加条件合并在一条里。题目清单用于确定训练范围;具体流程和准备优先级见公司攻略。
给定有向边,求从某个 root 出发需要反转多少条边才能到达所有节点;follow-up 计算每个 root 的答案。
阅读这道题的独立深文 →给 O/E/X 机器人网格和 [left,top,bottom,right] 最近障碍距离,边界也算障碍,求全部匹配的机器人坐标。
解题切入:机器人网格四向扫描各记录最近 X 或虚拟边界,再只对 O 单元比较 [left,top,bottom,right];边界距离计数须先声明。
阅读这道题的独立深文 →商品价格数组中,每件商品减去右侧第一个不高于它的商品价格;求逐件售价与最终总花费。
解题切入:右侧首个小于等于原价的折扣用单调递增下标栈,当前价格弹出所有不低于它的待处理商品;等价价格也触发折扣。
阅读这道题的独立深文 →给每月股价与 k,统计所有连续 k 个月严格递增的窗口数;重叠窗口也分别计数。
解题切入:严格递增 k 月窗口用以当前月结尾的上升段长度计数;每当长度至少 k 就增加一个窗口,等价价格使段长重置。
阅读这道题的独立深文 →给定 1..n 的排列,逐个 k 判断 1..k 是否恰好占据一个长度 k 的连续窗口;原帖样例与文字定义有冲突。
解题切入:平衡排列逐个加入值 1..k 的位置,仅当最右与最左位置的跨度恰为 k 时才有连续窗口;原帖 1011 样例与文字定义矛盾。
阅读这道题的独立深文 →给 manager-employee 关系,查询某个经理全部跨层级下属 ID;额外讨论重复边、坏数据成环与多次查询。
解题切入:组织关系建 manager→下属邻接表,从目标经理迭代 DFS/BFS 找跨层可达 ID;坏数据环路需 visited,真实组织树约束单独验证。
阅读这道题的独立深文 →实现过期 Counter 的 put、get_count、get_total_count;同一元素多次放入分别计数,查询时也要清理过期事件。
解题切入:过期 Counter 用按插入时间排序的事件队列清理过期项,哈希表保存每个元素计数,total 单独维护;操作时间要非递减且过期端点先确认。
阅读这道题的独立深文 →非递减价格摊位中,从指定 1-based 起点往右最多各买一件;对每个预算求最多能买的件数。
解题切入:Purchase Optimization 的有序后缀最便宜 t 件必是起点之后的前 t 件;用前缀和把成本化为区间差,再二分预算允许的最远端。
阅读这道题的独立深文 →数组中从下标 0 跳 1 步或尾数为 3 的特殊步长,必须落在末格并最大化累计分数;确认特殊步长是否还须是质数。
解题切入:跳跃最大得分按落脚点做 DP,前驱来自 1 步或个位为 3 的允许步长;不同面经对是否必须为质数不一致,33 等步长会区分答案。
阅读这道题的独立深文 →按天给出出发价与返程价,返程日必须严格晚于出发日;求最低往返价,追问至少间隔 3 天。
解题切入:往返机票先做返程价后缀最小值,再对出发日 i 查询 B[i+1..](隔 d 天用 B[i+d..]);原帖写 B[i..] 会误选同日返程。
阅读这道题的独立深文 →正整数 n 每次可加或减任意 2 的非负整数幂,求归零所需最少操作数;允许中间值暂时变大。
解题切入:±2^i 整数归零等价最少非零带符号二进制位;偶数右移,奇数按 mod 4 选进位或退位,7=8−1 只需两步。
阅读这道题的独立深文 →给整数数组和 k,求至少包含 k 个不同整数的最短连续子数组长度;不存在返回 -1。
解题切入:最短至少 k 不同值窗口用左右指针和频次表;窗口已达标时先记长度再缩左侧,次数归零必须删键,目标区别于恰好 k 的子数组计数。
阅读这道题的独立深文 →树的字符在节点上;对每个查询起点,统计到哪些祖先终点的路径字符可重新排列成回文。
解题切入:节点字符的祖先回文路径用根路径奇偶掩码;DFS 活跃表只存当前祖先链前缀,查询 prefix[u] 相同或相差一位的频数,退栈必须撤销。
阅读这道题的独立深文 →实现单向 Follow/Unfollow、创建快照和按版本查询关注关系;原帖示例还查询活动中的当前版本。
解题切入:关注快照按有向边保存版本化状态变化,同版本只保留最终写入;查询二分目标版本之前最后一次变化,原帖活动版本可查的语义要明说。
阅读这道题的独立深文 →二维矩阵不断加陆地,更新岛屿数量与当前最大岛面积;若允许删陆地,应重新确认算法。
解题切入:动态岛屿若只加陆地可用 DSU 合并四邻根并维护岛数/最大面积;若 modify matrix 允许删陆地,DSU 不能拆分,必须改离线或重算策略。
阅读这道题的独立深文 →会议预约请求逐个且可乱序到达,返回房间或会议 ID,支持取消;讨论离线最少房间与并发双订。
解题切入:离线 Meeting Rooms II 按开始时间排序用结束时间堆;在线乱序分配须按房间查询时间区间前驱/后继,取消靠 meetingId 索引,并发检查与插入原子化。
阅读这道题的独立深文 →司机每秒百万位置更新,十秒刷新一次热力图;按最新司机状态计数并支持历史数据、过期与热点区域。
解题切入:司机热力图要按 driverId 维护最新格子/状态并在跨格时一减一加,不能把每秒 GPS 上报数当司机数;十秒快照、历史回放与热点分片分层设计。
阅读这道题的独立深文 →设计附近司机查询服务:高频位置更新、地理格索引、跨格边界、位置过期、可接单状态和路网距离复排。
解题切入:附近司机服务按覆盖半径枚举所有相交地理格,合并后用最新位置/状态/TTL 最终核验;只查同格或固定 8 邻格可能漏司机,路网 ETA 需另做候选复排。
阅读这道题的独立深文 →设计 App 用户行为数据处理系统:从事件采集、清洗去重到 session/funnel 与下游模型可用特征。
解题切入:App 行为数据平台先定义事件 ID/时间/schema 与身份口径,再做去重、迟到处理、session/funnel 和可回放标准层;模型特征必须按预测时点 join,避免未来信息泄漏。
阅读这道题的独立深文 →设计停车场 park/unpark/checkcar 与 checkin/checkout;汽车仅普通车位,摩托可用专位或普通位。
解题切入:停车场把车位兼容和分配策略分开;摩托优先专位、汽车只占普通位,checkin/checkout 对 spot、vehicle、ticket 三个索引必须原子一致。
阅读这道题的独立深文 →给底层数据库查询与高层 Metric 任务的依赖,做拓扑排程;同表查询可合并,高层任务同级仍串行。
解题切入:Metric Scheduler 先用依赖入度释放 ready 任务,再按 table 合并语义兼容的底层查询;高层任务即使同拓扑层也按原帖串行约束执行。
阅读这道题的独立深文 →Folder System 中按文件夹 ID 输出根到节点的名字链;孤儿返回空串,原帖重复 root ID 需澄清。
解题切入:Folder System 先校验唯一 ID/单父与根可达性,再沿 parent 链逆序输出路径;原帖对 ID=0 使用两个根名称,必须标注歧义而不能静默覆盖。
阅读这道题的独立深文 →从 Root directory 前序输出目录与文件,每层按深度缩进;保持给定 children 顺序。
解题切入:Print Directory 用前序遍历配合 depth 生成缩进;显式栈需逆序压 children 才保持输入顺序,它与按单个 folder ID 查询根路径是不同输出。
阅读这道题的独立深文 →有序正负数组平方后排序;追问第 k 大平方或最小 k 个平方,分别利用两端/零点两侧结构。
解题切入:有序数组平方最大值在左右端,填完整结果用两端指针;最小 k 个从零点两侧合并,第 k 大与最小 k 个是不同追问。
阅读这道题的独立深文 →n 个单位时长任务组成依赖 DAG,允许多个任务同时执行,求全部完成的最短时间。
解题切入:单位时长任务 DAG 且无限并行时,最短完工时间是最长依赖链长度;Kahn 拓扑传播各任务最早完成时刻,并检查环。
阅读这道题的独立深文 →给 N 人二维坐标,选择 K 个 Shuttle 上车点,使每人到最近点的 Manhattan 距离总和最小。
解题切入:Shuttle 上车点的 L1 选址在 K=1 时分别取 x/y 中位数;K>1 需同时决定分组与中心,枚举可求小规模精确解,交替分配/中位数更新只给局部解。
阅读这道题的独立深文 →多个服务互相依赖,合并一份或多份 dependency array 后判断整个有向图是否成环。
解题切入:服务依赖判环必须先合并全部 dependency array 并去重,再用 Kahn 入度删除或三色 DFS;各数组单独无环不代表合并后无环。
阅读这道题的独立深文 →实现客户收入 add/referral、showRevenue 与收入高于阈值的最小 K 客户查询;原帖新客户收入示例有冲突。
解题切入:Referral Revenue 更新推荐人收入时同步删除/插入有序索引的旧/新键,TopSmallestK 按 (收入,ID) 从严格阈值后取 k 项;新客户收入示例自相矛盾。
阅读这道题的独立深文 →两座岛之间最少翻水格,且输出一条最短桥路径;用多源 BFS 与水格前驱回溯。
解题切入:最短桥路径把第一座岛所有格作 BFS 的距离 0 源,水格首次发现时记 predecessor;遇第二岛后回溯,避免在队列中复制整条路径。
阅读这道题的独立深文 →设计司机 Payout,确保应付金额准确、并发不超付、外部重试不会重复支付并能对账。
解题切入:Payout 先以稳定业务键和原子余额预留防并发超付,再以 outbox/外部幂等键处理重试;UNKNOWN 查询最终状态,账本与支付流水持续对账。
阅读这道题的独立深文 →输入仅由 S/M/L 组成的衣服尺码字符串,按 S<M<L 排序;比较通用排序与固定值域计数。
解题切入:S/M/L 字符串排序先明确业务顺序,再用三个计数 O(n) 输出;未知尺码是否忽略属于作者主动扩展,正式题目没要求。
阅读这道题的独立深文 →整数数组中找出严格高于相邻元素的数并求和;首尾只比较唯一的邻居。
解题切入:局部峰值求和逐项检查所有现有邻居,要求严格大于;首尾只比一个邻居,负数峰值之和也可能为负。
阅读这道题的独立深文 →Alien Dictionary 连续两问:先按已知字母序判断词表是否排序,再从已排序词表推断合法字母序,处理非法前缀与依赖环。
解题切入:Alien Dictionary 已知 order 时逐对比较词的首个差异并检查前缀;未知 order 时把相邻词首差异建成字母依赖图,去重边后拓扑排序并检查环。
阅读这道题的独立深文 →访问 user ID 持续到达,随时返回当前第一个仅出现一次的用户;追问第 N 个,比较有序哈希表与序数索引。
解题切入:流式首个未重复访客用频次表加按首访顺序的有序集合;首次访问入队、第二次删除、之后不恢复。第 N 个若频查需序数树,链表遍历是 O(N)。
阅读这道题的独立深文 →两份按起点排序的时间区间列表求交;输入放不进内存时流式归并各自重叠段,再用双指针输出交集。
解题切入:两份已排序区间表求交先各自流式归并内部重叠,再比较两段交集并推进右端更早的一方;输入输出都可迭代器化,避免超长列表整体驻内存。
阅读这道题的独立深文 →设计在线购物车与商品评分服务,支持最近一小时、一天及任意时间窗最高均分商品;说明评分去重、时间桶及榜单延迟。
解题切入:购物车写入与商品评分事件分离;评分按 eventId 去重并以 eventTime 聚合 sum/count,固定窗口可维护增量榜单,任意历史窗口需范围索引或明确较慢/近似契约。
阅读这道题的独立深文 →设计在线编程竞赛系统,重点给出比赛、题目、报名、提交、判题结果与排行榜的 schema,并处理判题重试和重判版本。
解题切入:在线编程比赛要把 contest/problem/registration/submission/judge_run/score_projection 分表,提交与判题用稳定唯一键去重;排行榜是可从原始判题事实重算的投影。
阅读这道题的独立深文 →设计二叉树序列化与反序列化,再扩展到 N 叉树;自定 token 格式并验证空树、截断与孩子数量边界。
解题切入:二叉树前序编码要显式写空子指针以消歧;N 叉树为每个节点写孩子数,再按序解析恰好那么多棵子树,并拒绝截断或尾随 token。
阅读这道题的独立深文 →整数网格从左上角出发,按每个阈值统计只经过严格小于阈值的四邻可达格;用离线排序和最小堆复用扩张。
解题切入:网格阈值查询先用逐查询 BFS 定义答案,再按阈值升序处理;最小堆保留未激活边界格,只弹出值严格小于当前阈值的格并累计可达数。
阅读这道题的独立深文 →N 个任务给两人各有 reward,第一人必须恰好做 K 个;先假设全给第二人,再取最大的 K 个奖励差。
解题切入:两人任务奖励最大化先把全给第二人作为基线,按 reward_1−reward_2 排序取前 K;第一人必须恰好做 K 项,负差值也可能必须选。
阅读这道题的独立深文 →二值矩阵每行都是先 0 后 1,求整张矩阵最左含 1 的列;比较逐行二分与 O(m+n) 单调指针。
解题切入:行内先 0 后 1 的二值矩阵找最左含 1 的列,可逐行二分后取最小,也可让候选列从 n 向左单调移动,总计 O(m+n)。
阅读这道题的独立深文 →评估 ETA 对 session rider conversion 的影响:按 geo×time switchback 分桶,定义比值指标与聚类 95% CI,安排多档 treatment 和放量护栏。
解题切入:ETA 对 session 转化率的实验先分清展示值与真实等待干预;双边市场按 geo×time 切换,ratio metric 汇总分子分母并按随机化块给聚类 CI,放量看司机侧和等待护栏。
阅读这道题的独立深文 →二叉树求两片叶之间最长严格升序或降序路径,按节点到叶的两个方向 DP 在最近公共祖先拼接。
解题切入:二叉树叶到叶严格单调路径用后序 DP 维护每节点向下到叶的 inc/dec;在分叉节点把一侧 inc 与另一侧 dec 相拼,减去公共祖先重复的一格。
阅读这道题的独立深文 →设计 Messenger 消息服务:服务器持久接收后单勾、接收方阅读后双勾;处理重试去重、会话顺序、离线补拉与 Redis 的缓存边界。
解题切入:Messenger 原帖把一个勾定义为服务端已接受、两个勾定义为已读;消息持久提交后才 ACK,clientMessageId 去重、会话 seq 保序、readUpToSeq 单调更新,Redis 负责热点状态。
阅读这道题的独立深文 →设计 Uber Eats 餐馆推荐:营业与配送硬过滤、多路召回、完成订单排序、冷启动、曝光偏差和双边市场评估。
解题切入:Uber Eats 餐馆推荐先做营业/配送可行性过滤,再多路召回与完成订单排序;日志须记录曝光与位置,特征只取决策时可见值,并按地区/新店拆分评估。
阅读这道题的独立深文 →设计 AI Chatbot 的发消息、聊天历史和推理服务:稳定 turn ID、上下文预算、流式部分输出、失败取消与重试幂等。
解题切入:AI Chatbot 的用户消息、生成任务和助手回复要分别建状态;clientMessageId 去重,历史按 token 预算构造 prompt,流式 token 与最终持久回复有不同完成语义。
阅读这道题的独立深文 →用真实项目说明自己的组织范围、技术决策、跨团队采纳与可核指标;区分个人推动与团队共同成果。
解题切入:Staff Scope & Impact 项目故事要先说明组织范围和真实指标基线,再给根因、备选方案、本人决策、跨团队采纳及结果证据;不能以项目规模代替个人影响。
阅读这道题的独立深文 →拿真实项目架构图逐层解释模块协作、端到端延迟、模型版本、基础设施编排、降级和自己做过的取舍。
解题切入:Staff Architecture 深挖按请求链路和训练部署链路分别画图,逐组件备好 latency、模型/特征版本、infra orchestration、故障降级与真实决策证据。
阅读这道题的独立深文 →平面上求 K 个最近点,K 远小于 N 时维护有界大顶堆;追问移动司机索引与真实路网距离精排。
解题切入:K 最近静态点用大小 K 的大顶堆保留最优集合;千万移动点用空间格粗筛,但路网距离排序只有几何下界超过已算第 K 名上界时才能安全剪枝。
阅读这道题的独立深文 →设计 Uber Eats 餐厅列表的数据流:目录、营业/可接单事件、区域索引、缓存失效与下单前最终核验。
解题切入:Eats 餐厅列表把商家目录与营业、菜单、配送等快变事件汇成区域物化视图;查询再做实时可行性过滤,响应暴露新鲜度,下单时重检事实源。
阅读这道题的独立深文 →设计基于评论的司机排行榜:评分事实去重、修改/撤销修正、时间窗聚合、Top K 索引与小样本公平性。
解题切入:司机评论榜单应从可审计 review 事实流更新分子/分母和窗口索引;修改/撤销要反向修正,排名政策明确最小样本与并列规则,不能和位置热力图混同。
阅读这道题的独立深文 →格子逐个点亮、全亮后按点击逆序自动熄灭;用 reducer 状态机和一次一个 timeout,处理旧回调与 effect 清理。
解题切入:React 格子灯把点击顺序、亮灯集与 clearing 阶段放在 reducer;effect 每次只安排一个 timeout 并清理,TICK 携 generation 防旧回调污染新一轮。
阅读这道题的独立深文 →按时间处理两名 Rider 共享乘车日志,求所有已知 Rider 最早全连通时间;主问题用并查集,block 删边规则需另问。
解题切入:Rider 同乘日志按时间加无向边,DSU 分量数首次降为 1 的时间就是最早全连通;完整 Rider 全集须给定,block 若删除边则 DSU 不能拆分。
阅读这道题的独立深文 →只给LC696编号的补充OA:标准训练版统计0/1数量相等且各自连续分组的子串,为什么相邻run贡献min?
解题切入:LC696标准训练中合法子串只跨一个字符边界,每个边界贡献相邻run长度的min;编号来源的截图变体仍待核。
阅读这道题的独立深文 →区域乘客加价策略:供需信号、约束与反馈延迟:模型预测和实际定价决策分开,避免价格反馈造成震荡。
解题切入:区域按可服务空间/时间窗聚合请求、在线可用司机、接单/取消及ETA,数据更新有延迟;相邻区域司机移动会让只看当前区域供需不完整。
阅读这道题的独立深文 →Next Step
题目只是准备的一部分;按公司攻略核对轮次、岗位差异和常见失分点。