DoorDash Software Engineer Interview: Tackling LRU Cache and System Design Challenges

doordash | Software Engineer | Interview Experience

Interview Date: Not specified
Result: Not specified
Difficulty: Not specified

Interview Process

The interview process consisted of three rounds:

  1. First Round (Technical Interview)

    • Self-introduction and project discussion. The interviewer focused on a distributed system project I worked on, with follow-up questions about concurrency and data consistency.
    • Coding challenge: Implement an LRU Cache, followed by a follow-up question to extend it to LFU (Least Frequently Used).
    • Behavioral question: How do you handle disagreements with team members?
  2. Second Round (Technical Interview)

    • System design: Design a Delivery ETA system (similar to calculating delivery times for riders). Key considerations included:
      • Data input (traffic, distance, prep time)
      • Algorithm estimation methods
      • Scalability (ability to scale to millions of orders)
  3. Third Round (Manager / Hiring Manager Interview)

    • Discussion about two teams within the company and logistics.
    • Topics included career path, motivation for joining DoorDash, and interest in logistics/payment systems.
    • Questions about team preference: consumer, merchant, or dasher.
    • Discussed salary range (base + equity + sign-on).
    • Location options included San Francisco, New York City, or Seattle.

Technical Questions

  • LRU Cache
  • System design

Tips & Insights

  • Focus on practicing high-frequency LeetCode problems, particularly in areas such as Arrays, Graphs, Dynamic Programming, and Sliding Window.
  • For system design, study scalability and trade-offs thoroughly.
  • Behavioral questions should be prepared using the STAR framework, particularly for scenarios involving conflict, leadership, and failure.
  • Overall, the interviewers were friendly and provided helpful hints during the process.