Lyft · Primly 社区

Lyft frontend engineer 面试:他们实际考什么、vanilla JS vs. React,以及我栽在哪

infra_ines (Primly starter) · 3 条回复

几个月前我走了 Lyft frontend engineer 的 loop,senior 级别(L5 对标)。分享一下,因为我在面试前找到的准备建议都挺表面,我是自己拼出来他们实际怎么考的。

背景:4 年经验,主要是 React,一些 TypeScript,上份工作用过一点 Vue。通过 Lyft 的朋友内推。

Phone screen: 一道 coding,重点是 DOM 操作。不是 React。纯 JavaScript。我很久没写原生 DOM 了,暴露得有点明显。题目大概是 "implement a simple virtual DOM diffing function(实现一个简单的 virtual DOM diff 函数)"。当然不是让你实现完整的 React reconciler,但你得理解真实的 reconciler 在做什么。哪怕你天天写框架,也建议补一下 JS 基础。

Onsite(4 轮):

第 1 轮:前端 coding。我拿到的是一个 UI 组件实现题:做一个可筛选的列表组件,支持实时搜索。他们给一个空的 HTML/JS 文件,不用框架。还是那句:vanilla JS。要会 event listener、debounce、基本的 DOM 更新模式。

第 2 轮:另一轮 coding。这轮比 UI 更偏算法。中等难度,图相关(给一组 pickup zone 之间的道路,找最短路径,本质就是 Dijkstra)。题面是交通领域的,但底层算法很标准。我觉得他们是故意这么设计的,因为和他们真实产品相关。

第 3 轮:系统设计,前端架构。"Design the real-time driver tracking UI that riders see during a trip.(设计乘客在行程中看到的实时司机追踪 UI。)" 这轮挺有意思。聊到的点包括:WebSockets vs. polling、怎么优雅处理断连、客户端如何缓存司机位置更新、用户把 app 切到后台时组件生命周期怎么处理。他们要的是状态管理和数据流的深度,不只是 UI 视觉。

第 4 轮:behavioral。标准 STAR。冲突故事、一个技术很复杂的功能、一个和 design 合作的故事。没什么特别。

让我意外的点: vanilla JS 比我想象的多很多,明明他们是 React 公司。他们明显想确认你理解平台本身,而不只是框架抽象。如果你只做过 React、没怎么想过底层发生了什么,建议花时间补一下。

实时 tracking 的系统设计是我感觉最好的一轮。面试前值得把 websocket 的常见模式想一遍。

Offer:L5,Seattle,base 大概 $185k。现在回头看,没谈得够狠。

由 AI 翻译,查看原文

3 条回复

hardware_hugo (Primly starter)

vanilla JS 这点确实存在。我在几家 mobility 公司也见过。站在面试官角度的逻辑是:如果你的 framework 消失了,你还知道底层在发生什么吗。这个门槛合理,哪怕对那种 3 年没碰过原生 DOM 的人来说准备起来很烦。

由 AI 翻译,查看原文

staff_steph (Primly starter)

实时追踪系统的 system design 很值得想一遍,因为它同时覆盖 websocket 生命周期、断线重连逻辑和状态管理。如果你是在专门准备这个角色,我会在 loop 前先把架构画出来。不只是「用 websockets」这种层面,还要想怎么处理重连,client-side buffer 策略是什么,断线期间给用户展示什么。

由 AI 翻译,查看原文

mobile_mara (Primly starter)

好奇他们有没有问到 mobile web 或 PWA,毕竟 Lyft 用户在移动端占比那么高。还是说整个面试流程更偏桌面端?

由 AI 翻译,查看原文