Doordash | PhoneScreen | Onsite
Anonymous User
4150

Phone Screen :
https://leetcode.com/problems/maximum-profit-in-job-scheduling/
Modification -> Added extra start and end time of dasher

Virtual Onsite :
Coding Round 1:

  1. https://leetcode.com/problems/buddy-strings/
  2. KAnagrams of Array of String
    Variation of https://leetcode.com/problems/minimum-number-of-steps-to-make-two-strings-anagram/

How it went:
All test passed for first one
Code written for second one, some out of bound exception

Impression of Interviewer ->
Mentioned don't worry about completing the code, given 2 more mintues you would have finished it.
Felt it went well.

Coding Round 2:
Variation of https://leetcode.com/problems/binary-tree-maximum-path-sum/
Follow up questions

  1. leaf node = live node
  2. Only valid path having only two live node
  3. live node can be any node -> path between only two live node
  4. Only valid path -> strictly containing only two live nodes

How it went->
Finished the question within 30 minitues while explaining to interviewer
Missed valid path case, eg if tree has only one child, so live node would be only one
Fixed this case after interviewer explained
Added condition when we predefined any node could be live node by adding the flag
There was no test cases written, so wrote code to initialise tree and test the flow
My condition did not work when we have multiple live node in same path -> missed the trick

Impression of Interviewer ->
Interviewer seemed quite calm and was always thinking about edge cases.
Mentioned you did fine even if I missed the last part.
Felt it went OK

Hiring Manager round
Basic questions like proud moment in life, conflicts in team, what do you expect from team, why doordash, etc
Note -> I generally ace behavioural rounds as I always have some stories with me.
If you are not good at it prepare it.

Impression of Interviewer ->
Hiring manager had set of questions it became mostly Q&A round with less discussion
Felt it went well

System Design and Domain knowledge round:

  1. Discussion about project -> 10 mins
  2. Variation of Design a donation app
    a. 3 Day event
    b. Target 100M dollars
    c. 30 static diffent Donotaion Orgs
    d. Payment API -> store and charge
    e. Cannot store CC details but can store stripe token which can be used to charge the CC
    f. Average donation 35 dollars

How it went->

  1. Started with Requirement Gathering and discussed scenarios like if payment api is reliable and can hold load
  2. Designed Database table -> user and payment
  3. Calculated the storage required on the basis of above details
  4. Calculated QPS using 100M and 35 dollars, mentioned it would be write heavy
  5. Wrote design with compents like user-> web server -> load balancer -> application server -> cache, db, payment api
  6. Mentioned two api -> post and get api, time was less I did not write
  7. Handled particular scenario when payment api fails or slow
  8. Disccussed synchronous and asynchrous approach
  9. Added cron for email notifications
  10. Add static content from cache
  11. Before every transaction store entry in database like Write Ahead Log
  12. Discussed how queue can be beneficial
  13. How to handle database connection failures like timeout, 500
  14. Added master slave architecture for databases and range or consitent hasing for distibution
  15. Used the concept of circuit breaker to handle health or concept like actuator for Payment api

Follow up

  1. What changes/feature can be made if we take this to design to production
  2. How different comapnies can use this product if they don't want to share data -> I mentioned we can either add config with different db or deploy the application the vendor cluster for security and database separation

Impression of Interviewer ->
He was friendly and felt he was getting the answer for all the questions
No cross argument for questions, just the agreement with answer.
I felt it went good, considering design questions are quite subjective in nature and it depends on particular interviewer and their understanding

Result -> Not Selected (Surprised as they did not provide any feedback just a general email)
If we spend so much time in giving 5 rounds, some kind of feedback is highly appreciated especially beacuse they take notes.

Assumption -> Coding round 2 could have decided the result but not sure

It is actually very difficult to predict the result when interviewers agree with your answers with a smile but in the end result is negative.

I thank all LC members for sharing posts which helped me in my preparation, need to go back and analyse what I could have done better in each round.

~ All the best

Comments (8)