System Design Interview Video (Facebook/Meta)

A System Design interview with a Meta/Facebook engineer

Interview Summary

Problem type
Design Online Judge
Interview question
Design Online Judge, given a problem, allow users to submit code, test code and get result of submission.

Interview Feedback

Feedback about Aerodynamic Tortoise (the interviewee)

Advance this person to the next round?
Yes
How were their technical skills?
4/4
How was their problem-solving ability?
3/4
What about their communication ability?
3/4

Overall hire for E4. Weak hire for E5.

✅ What went well:

  1. Good functional requirement
  2. Good non-functional requirement
  3. Good quantitative analysis
  4. Core puzzle: talk about how to secure the code execution (requires hint tho). Decided to use containerization.
  5. Deep dive: Talk about securing the app with VPC
  6. Deep dive: talk about using API Gateway for authentication, throttling and load balancing
  7. Deep dive: talk about push and pull model on how to send submission result down to client
  8. Good data flow
  9. Complete solution
  10. Good component responsibilities

❌ What can be improved:

  1. Overtime by 4 mins, and didn't get a chance to talk about data API and data schema.

Interview Transcript

Digital Cactus: Hello.
Aerodynamic Tortoise: Hello. Can you hear me?
Digital Cactus: Yeah, I can hear you just fine, I'm not sure why I cannot log in I'm sorry for being late.
Aerodynamic Tortoise: Yeah sure no worries.
Digital Cactus: So you are here for a systems interview right?
Aerodynamic Tortoise: Yes, exactly.
Digital Cactus: Cool. I have 3 questions before we start.

Digital Cactus: Sounds like a plan.
Aerodynamic Tortoise: Okay, cool.

Digital Cactus: I want to set expectations real quick. The interview is going to be 45 minutes, but the first few minutes are mostly about greeting or restroom break. The goal is that you are not nervous.

Digital Cactus: The actual interview itself is really just 35 minutes.

Aerodynamic Tortoise: Sure, sounds good.


High Level Design

  1. Functional req
  2. Non-functional req
    • Reliability
    • Scalability
    • Security
    • Latency
  3. Quantitative analysis
    • Number estimation (how many users, use case scenarios, read/write ratio)
    • QPS / TPS
    • Storage consumption
    • Bandwidth (not always important)
  4. High level design + Data Flow
  5. Data API (REST - GET / POST, GraphQL)
  6. Data Schema + Data Store
    • SQL vs NoSQL
    • Object storage
    • Database partitioning / sharding
  7. Optimization -> important for E6+
    • Authentication
    • Monitoring
    • Mobile-specific knowledge
  8. Most important: Core Puzzle
    • somewhere between 3 - 6

Conclusion

Digital Cactus: Overall, you solved the primary problem well, but you need to improve your time management.
Aerodynamic Tortoise: Got it, I’ll work on that.