System Design Interview (FAANG engineer)
A System Design interview with a FAANG engineer
Interview Summary
Problem type
Designing WhatsApp
Interview question
Design a message app system and client (e.g., what's app) supporting the requirements followings:
- Group messaging (broadcasting) / 1:1 messaging
- msg send/receive confirmation (acknowledge) to make sure no message lost between clients
- Image/file sharing
Interview Feedback
Feedback about Dialectic Avalanche (the interviewee)
Advance this person to the next round? Yes
How were their technical skills? 3/4
How was their problem solving ability? 3/4
What about their communication ability? 3/4
In general, the interviewee did well. He was able to structure a system design interview in a clear way - breaking down a question into requirement and non-functional requirement, and covering high level system component, API, and going through the high level system diagram. As an interviewer, I could easily follow his thought process and could collect some data point for hiring decision if it was a real interview. And also, he demonstrated his technical background and experience during the session. That being said, I'd like to mention there are a few things that he can improve for future interviews such as being more specific on non-functional requirement and asking more good questions in requirement/assumption break-downs, and more importantly, trying to convince an interviewer with his system design with own rationale, which is the most important part of a system design interview.
Interview Transcript
Flannel Artichoke: Well, Hello.
Dialectic Avalanche: Hello.
Flannel Artichoke: Nice nice. Thanks for your time in joining this. My name is Alex. And I've worked for one of the big tech company more than five years, and also working as an interviewer for systems design and I do the questions for the current company. So for your, this session I'll run the interview, like real interview for you and your practice, how does it sound?
Dialectic Avalanche: Yeah sure sounds great.
Flannel Artichoke: Okay, before we start, why don't you give me your background a little bit like your backend design experience as a developer so I can kind of just observe the expectation for your session for us.
Dialectic Avalanche: Okay. Yeah. So basically, I'm a backend software developer. I work in online news. So we do news recommendations, and have worked on distributed systems.
...
Things went well:
- initial expectation setting with topics.
- good system component choice and explanation.
- Time management.
Things didn't go well:
- NFR analysis can go deeper.
- final verification that the system design meets given requirements.