DEV Community

Discussion on: Get Hired: The System Design Interview, Explained

kyleboss profile image
Kyle Boss

This is an amazing write-up! I've definitely noticed in upward-trend in this type of interview question yet not as many resources for it compared to the other types of interview questions (Big(O) notation, sorting, etc.)

"I've had some bad system design interviews" I am curious! What was the question and was there anything in particular that caught you off guard?

techdebtor profile image
sam Author

Haha, okay, so this interview was with a major tech company in SF. The entire day ended up being one unfortunate situation after another (the interview was rescheduled the day of, I had no real lunch break, the interview was basically in a closet). The system design interview slot was an hour long. The interviewer was remote so I video chatted with her for quite a while about my previous experience. I don't think she was paying close attention to the time because finally after half an hour, she decided it was time to start the system design question. She wanted me to use some flow charting software I'd never used before to diagram my answer. Okay, sure, whatever, I'll figure it out.

So she asks me the system design question: Design Uber.
I ask, what features do you want me to focus on?
She says, all of them.
I clarify - you mean tracking drivers and riders, pairing them up, managing their accounts, processing payment...?
She says yes.
Uh, okay. I ask how many users we expect to have?
She says everybody.
I ask, everybody?
She says yes, everybody in the whole world will use this.

Well, here goes nothing. At the time, I hadn't quite figured out a good process for system design interviews, so I decided to start wherever I felt most comfortable. I've designed a lot of SQL tables at work, so I started with the database schema. I drew out the schema for the drivers and the riders while the interviewer watched me struggle with the diagramming software.

Then she asks, "Okay, how would you store credit cards?" I reply, "I've never worked on payments, so I don't know. I'd have to research it or ask someone with more experience in that domain for help." She replies, "Nope, you need to do something right now. How are you going to store them?" She offered no help whatsoever and I ended up drawing a database table that I knew was 100% wrong.

Then, she says, "Well, we only have five minutes left, and you haven't even gotten to the API yet. Write the API for pairing up rider and drivers." So I wrote something out. Then she says, "Now let's say some drivers keep cancelling rides. How would you punish those drivers?" Like, dude, what? Why is that the feature you pick to focus on?? Why didn't you just ask me to design the actual important features of Uber, like: matching drivers to riders, picking up a rider, navigating to a destination, and then dropping that rider off?

I didn't get that job, and the feedback I got was that I "didn't seem to understand databases." 🙄🙄🙄 I dodged a bullet tbh