上个月刚走完 Lyft Software Engineer Intern / New Grad 的全部流程,最终拿到了 Offer。整个过程大概花了 5 周左右,总体感觉是: Lyft SDE 面试比较务实,不像某些公司那么卷算法,但对工程能力和系统思维要求挺高。
下面把我经历的 OA 和 VO 两部分完整分享给大家。

Lyft OA
平台:HackerRank
时间:75 分钟
题量:2 道 Coding 题
第一题是 Easy-Medium 难度,考字符串处理和规则模拟,大概 15 分钟就写完了。
第二题是 Medium,是一道图 + 贪心题,类似「司机和乘客的匹配问题」,需要考虑距离和等待时间。我当时用 BFS + 优先队列做的,后面花了 35 分钟左右才调通所有 case。
小Tips:Lyft 的 OA 时间还算友好,但第二题的建模比较重要。如果思路不对很容易卡住,建议先把样例手动模拟几遍再动手写代码。
VO —— 共 4 轮,每轮 1 小时
第 1 轮:HM + Behavioral 轮
HM 先简单介绍了组内正在做的业务方向(主要是 Lyft 的目的地推荐相关)。 之后大部分时间都在深挖我的简历,穿插了不少经典 BQ 问题,例如:
- 你和同事产生过 conflict 是怎么处理的?
- 过往项目中遇到过的最大困难是什么?是怎么解决的?
这一轮主要看性格和文化匹配度,没有特别难的问题。
第 2 轮:上机 Coding 轮
(具体是 Medium 难度的一道数组 + 哈希题)。 面试我的是一位国人面试官,人超级 nice,全程沟通顺畅。他会先让我把思路讲清楚,确认没问题后再开始写代码,写完还会一起 review 时间复杂度和边界情况。
第 3 轮:ML System Infra 轮
面试官是一位 Senior Staff MLE,问题非常贴近 Lyft 真实业务: “在使用 Lyft App 时,如何给用户推荐目的地(Destination Recommendation)?”
他全程非常友好,会不断引导我往正确的方向思考。我们从数据采集、特征工程、模型选择、离线训练、在线 serving、到 AB 测试和监控都聊了一遍。
第 4 轮:ML System Design 轮
和上一轮考察的是同一个核心问题——Destination Recommendation System。 这一轮更偏系统设计,重点讨论了:
- 多模型并行训练与 serving
- 实时特征更新
- 大规模用户冷启动问题
- 系统可扩展性和容错机制
Lyft 独家真题分享
Rotting Oranges
这是面试最常考的中等题,核心考察广度优先搜索(BFS),因为腐烂是逐层扩散的,完美匹配 BFS 的层序遍历特性。
题目
给你一个 m x n 的网格,每个格子有三种值:
- 0:空单元格
- 1:新鲜橘子
- 2:腐烂橘子
每分钟,上下左右四个方向相邻的新鲜橘子都会被腐烂。
返回让所有橘子腐烂的最少分钟数;如果无法让所有橘子腐烂,返回 -1。
示例说明
- 输入:
[[2,1,1],[1,1,0],[0,1,1]]→ 输出:4 - 输入:
[[2,1,1],[0,1,1],[1,0,1]]→ 输出:-1(左下角橘子永远烂不了) - 输入:
[[0,2]]→ 输出:0(没有新鲜橘子)
解题步骤
- 初始化队列:遍历网格,把所有初始腐烂橘子加入队列,同时统计新鲜橘子总数。
- 边界判断:如果没有新鲜橘子,直接返回 0。
- BFS 扩散腐烂:
- 按层遍历(每一层 = 1 分钟)
- 每次取出当前层所有腐烂橘子,向四个方向扩散
- 遇到新鲜橘子就标记为腐烂,新鲜橘子数量 – 1,加入下一层队列
- 结果判断:遍历结束后,如果新鲜橘子数 = 0 → 返回时间;否则返回 – 1。
Read N Characters Given read4 II – Call Multiple Times
这是一道硬核困难题,也是面试高频设计题,核心难点在于:read 函数会被多次调用,必须保存上一次读取剩下的字符。
题目
你有一个 API 函数 read4(buf):
- 作用:从文件中最多读取 4 个字符,存入
buf数组 - 返回值:实际读取到的字符数(文件读完了会返回 0)
要求:利用 read4 实现 read(buf, n) 函数:
- 功能:从文件中精确读取 n 个字符
- 关键:read 函数可能被调用多次!(必须记住上一次没读完的剩余字符)
返回值:实际成功读取的字符总数(读完文件了就返回剩余长度)
解题思路
必须用 3 个「成员变量」保存状态(多次调用的关键)
- 缓存数组 buffer:存 read4 一次性读出来的 4 个字符
- 缓存指针 bufferPtr:指向缓存中下一个要读取的位置
- 缓存长度 bufferCount:缓存中实际有效的字符数
执行逻辑
- 先吃缓存:如果上一次还有剩余字符,优先用缓存
- 再读新的:缓存用完了,才调用 read4 读新的 4 个字符
- 边读边存:把字符复制到目标 buf,直到读够 n 个 或 文件读完
- 留状态:剩下的字符存在缓存里,给下一次调用使用
备考建议
如果你也在准备 Lyft MLE 2026(Intern / New Grad / 社招),欢迎留言或私信交流:
- 想看 K-Means 手写代码或推荐系统设计笔记?
- 需要 ML System Design 的详细框架?
- 想了解 Behavioral 的高频问题准备方法?
另外,如果你时间紧张或想系统性准备,推荐 Programhelp 的专业助攻服务。他们提供 OA 代写、VO 实时思路辅助 、全流程包过等支持,很多同学都是通过他们的帮助顺利拿下 Lyft Offer。
祝大家 Lyft 面试顺利,早日拿到心仪 Offer!