Did the Lyft final loop in April for an ML engineer role. It was virtual but they called it the 'onsite.' Here's the breakdown for SWE/ML.
Round structure (5 rounds total): Coding 1: algorithmic, 45 min Coding 2: more practical/applied, 45 min System design: 1 hour Behavioral: 45 min Hiring manager chat: 30 min (not purely evaluative but they can flag concerns)
Rounds are spread across two half-days or one full day. I had them back-to-back in one day and that's fatiguing. Ask your recruiter if you can split it.
The coding rounds: First was a graph problem. Second was what they called 'practical coding' which was less algorithmic and more about writing clean production-style code. Think: given this data structure, write an API for it with proper error handling and a couple methods. This round felt like a code review almost. They care about edge cases, naming, clarity. Not about optimizing big-O.
System design: And I wrote separately about this. Real-time or marketplace-adjacent problem. Know how Lyft's business actually works before you walk in.
Behavioral: Three questions, deep dives. They're not checking boxes, they're probing. One question expanded into a 25 minute conversation because I mentioned an organizational conflict and they went deep.
HM chat: More conversational. My HM asked what I found most interesting about Lyft's ML challenges, what I'd want to build in the first 6 months, and whether I had questions about the team. Not a gotcha round but don't sleepwalk through it. Have real questions about the work.
Calibration and timeline: They told me debrief happens within 2 days of the loop. I heard back from my recruiter 3 business days after. Offer details took another 4 days after the verbal. Total timeline from OA to offer: about 6 weeks.
Overall: the loop is well-organized, interviewers are prepared, no one was trying to be clever or trick you. The hardest part is just the volume of it in one day.