Interview with a FAANG engineer.

System Design: Coding Practice Platform Backend

Interview Summary

Problem type
Design a Coding Practice Platform
Interview question
Design a system similar to a well-known competitive programming and interview prep platform. The system must support browsing and filtering problems by difficulty and language, providing an in-browser IDE, submitting code for evaluation, and returning results asynchronously. Stretch goals include supporting large-scale competitions with up to 100,000 simultaneous participants and a real-time leaderboard. Core challenges include securely isolating code execution environments, handling async job processing at scale, and choosing appropriate storage strategies for structured and unstructured data.

Interview Feedback

Feedback about Aerodynamic Lemur (the interviewee)

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

Strengths & what went well
Excellent overall performance for someone who said this was their first system design mock. You immediately identified the async pattern — submitting code, getting a submission ID back, and polling for results via Kafka — without any prompting. Your API design was well-structured with proper REST verbs and clear request/response contracts. You correctly identified the need for secure isolated execution environments (sandboxing with cgroups, resource limits) as a non-functional requirement, which is a critical security consideration that many candidates overlook.

Areas for improvement
Storage was the weakest area. You defaulted to putting everything in Postgres, including test cases and problem descriptions, which are unstructured data that can be large files.

Advice for future interviews
Before drawing any architecture, spend 2-3 minutes on entity design. List your core entities, their relationships (one-to-many, many-to-many), and what kind of data each holds (structured vs unstructured, small vs large). This naturally drives both your API design (entities map to REST resources) and your storage choices (relational for structured joins, blob storage for files). Understand the differences between Kafka and SQS for job queues, as well as queue failover patterns.

Interview Transcript

Aerodynamic Lemur: Hey, can you hear me?
Admiral Hex: Yes, I can hear you. It's all right, thank you.

Aerodynamic Lemur: All right, so hi, welcome to your practice interview. We have 1 hour for this interview, and the mock itself will take like 45 minutes, and then we'll go over feedback in the last 15 minutes or so. Let's start with introductions, and maybe you can go first.

Admiral Hex: Oh yes, I'm just a senior backend engineer, just preparing for the senior-level interview.

Aerodynamic Lemur: So do you know, um, what kind of questions to ask? Should I just ask a generic systems design question?

Admiral Hex: I think it's fine.

Aerodynamic Lemur: Alright, so let's get started if you're ready.

Functional Requirements

  1. Candidates should be able to review, search, filter problems.
  2. The UI should provide an IDE to resolve selected problems.
  3. Each problem has 3 levels of difficulty: easy, medium, and hard.
  4. The system should support competitions with a leaderboard for up to 100,000 simultaneous participants.

Non-Functional Requirements

  1. The search must be efficient with a target response time of 200-500 milliseconds.
  2. Each submission should run in a secure isolated environment.
  3. The system should be able to handle a maximum of 100 submissions per second.

API Definitions

Design Diagram

  1. UI makes calls to the API Gateway and Load Balancer.
  2. API Gateway directs the request to the appropriate service (search or submission).
  3. Each service interacts with the PostgreSQL database for data retrieval and storage.
  4. Asynchronous processing is handled through a Kafka queue for submission handling.

Closing Thoughts

This was a strong mock interview with clear strengths and areas to improve. Prioritize further understanding of storage patterns and queue mechanics for better performance in future interviews.