Just finished my Instacart system design round last week for a senior SWE role (they call it L5 internally, though they don't always surface that externally during the process). Wanted to write this up while it was still fresh.
The round is 60 minutes. You get about 5 minutes of pleasantries and then they just... drop a prompt on you. Mine was along the lines of: design a real-time order tracking system that can handle millions of concurrent users. Classic but there are Instacart-specific wrinkles because their orders involve multiple parties: shopper, customer, retailer, and the Instacart platform itself. They expect you to think about that fan-out.
What they actually care about: How you handle the shoppers-to-customers notification path. Push vs. polling vs. WebSocket. I went with WebSocket for the customer side and explained why. Scale numbers. They will ask how many concurrent orders at peak. I estimated peak holiday load and they probed whether my design could handle 10x. Database choices. They are not dogmatic but they want you to justify. I said Postgres for transactional order data, Kafka for the event stream, Redis for hot session/state. Got questions on each. Tradeoffs. This is big. They stopped me to ask what I'd cut if we had 6 weeks instead of 6 months.
What surprised me: They asked about the shopper side more than I expected. How do you route update events specifically to the right shopper's device without broadcasting? Led to a solid 10-minute conversation on pub/sub namespacing.
I passed and got to the onsite. Not sure yet on offer but the round itself was fair. Not gotcha-y. The interviewer was a staff eng, asked good follow-up questions, didn't interrupt constantly.
If you're prepping: do a fresh pass on distributed pub/sub patterns and think specifically about food delivery domain quirks, not just generic "design Twitter" type problems.