← Whatnot Interview Insights

Whatnot·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Apr 2026

Summary

System design round at Whatnot for a software engineer role. The whole thing was basically one big question about building a competitive programming platform at scale, and they wanted real depth across execution, storage, and reliability rather than a surface-level sketch.

Questions Asked (5)

Q1

Design a large-scale online coding practice and contest platform that supports problem browsing, multi-language submissions, sandboxed execution, verdicts, submission history, and timed competitions with leaderboards.

System DesignTechnical Trade-offs
Author's notes

I started with the data models and APIs which felt safe, but I spent way too long there and then had to rush through the execution pipeline.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, then sketch a high-level architecture that separates the web app, submission queue, and sandboxed execution workers. Dive deep into the most challenging components—sandboxing, real-time leaderboards, and contest isolation—while discussing trade-offs and scalability.

Pro tip: Emphasize security and isolation in the code execution sandbox, as it's the highest-risk component; mention using containers with seccomp and cgroups, and consider ephemeral VMs for stronger isolation. Also, discuss how to handle contest spikes with autoscaling and queue prioritization.

1. Clarify Requirements

Ask about scale (users, submissions per second), supported languages, contest frequency, and latency requirements. Define functional requirements: problem browsing, submission, verdicts, history, contests, leaderboards.

2. High-Level Architecture

Outline components: API gateway, web servers, problem service, submission service, execution workers, result store, and leaderboard service. Use a message queue to decouple submission from execution.

3. Deep Dive: Sandboxed Execution

Explain how to run untrusted code securely: containerization (Docker) with resource limits, seccomp, network isolation, and read-only filesystems. Discuss trade-offs between containers and VMs for security vs. performance.

4. Data Storage and Leaderboards

Choose databases: relational for problems/submissions, Redis sorted sets for real-time leaderboards. Discuss sharding, caching, and eventual consistency for contest rankings.

5. Scalability and Trade-offs

Address scaling: autoscaling workers, queue prioritization during contests, rate limiting, and multi-region deployment. Discuss trade-offs like consistency vs. availability for leaderboards, and cost vs. isolation for sandboxing.

Key Points to Mention

  • Sandboxing techniques: containers, seccomp, cgroups, network isolation, and resource limits.
  • Message queue (e.g., Kafka, RabbitMQ) for asynchronous submission processing and load leveling.
  • Real-time leaderboard using Redis sorted sets with periodic persistence to a database.
  • Contest isolation and fairness: separate queues, rate limiting, and anti-cheating measures.
  • Scalability strategies: horizontal scaling of workers, caching, and CDN for problem statements.
  • Trade-offs: security vs. performance in sandboxing, consistency vs. latency in leaderboards, and cost implications.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

How would you handle compiling, sandboxing, and executing user-submitted code safely and at scale?

System DesignTechnical Trade-offs
Author's notes

This is the part I actually felt decent about.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements: what languages, expected load, latency, and security guarantees. Then outline a layered architecture that isolates untrusted code using containers or microVMs, enforces resource limits, and scales horizontally with a job queue. Discuss trade-offs between isolation strength, performance, and cost.

Pro tip: Emphasize defense in depth: even with strong sandboxing, assume a breach and design for least privilege, network isolation, and rapid patching. Also, mention that you'd start with a simple, secure baseline (e.g., gVisor) and only optimize when needed.

1. Clarify Requirements and Constraints

Ask about supported languages, expected submission volume, latency requirements, and security/compliance needs. This shapes the entire design.

2. Design the Execution Pipeline

Outline stages: submission intake, compilation (if needed), sandboxed execution, result collection, and cleanup. Use a job queue to decouple and scale.

3. Choose Isolation Technology

Compare options like containers (Docker), microVMs (Firecracker), and user-space kernels (gVisor). Discuss trade-offs in security, performance, and complexity.

4. Enforce Resource Limits and Security Policies

Set CPU, memory, disk, and network limits. Apply seccomp, AppArmor, and read-only filesystems. Ensure no network access unless required.

5. Scale and Monitor

Use a pool of workers with autoscaling. Implement monitoring, logging, and alerting for failures, abuse, and performance bottlenecks.

Key Points to Mention

  • Use of microVMs (e.g., Firecracker) or gVisor for strong isolation with low overhead.
  • Resource limits via cgroups and namespaces, and timeouts to prevent runaway processes.
  • Network isolation: default deny, allow only necessary egress.
  • Compilation sandboxing: separate compilation from execution, use read-only mounts, and limit compiler resources.
  • Queue-based architecture (e.g., RabbitMQ, SQS) with worker pools for horizontal scaling.
  • Security best practices: least privilege, regular patching, and auditing.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

How would you use signed URLs to handle uploading and downloading large test data, execution logs, or other artifacts?

System DesignAPI & Integrations
Author's notes

Pretty standard object storage pattern.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by explaining the problem: large artifacts shouldn't flow through your API servers due to bandwidth, memory, and timeout constraints. Then describe a design where the client requests a signed URL from your backend, which grants temporary, scoped access to object storage (e.g., S3) for direct upload or download. Finally, discuss security considerations like expiration, permissions, and validation.

Pro tip: Mention that you can use presigned POST policies to enforce size limits and content-type restrictions, preventing abuse and ensuring data integrity. Also, highlight the importance of logging and monitoring signed URL usage for audit and debugging.

1. Identify the problem

Explain why large artifacts (test data, logs) shouldn't be proxied through your API: high bandwidth costs, server memory pressure, and request timeouts.

2. Design the signed URL flow

Describe how the client requests a signed URL from your backend, which authenticates and authorizes the request, then generates a time-limited URL using your cloud provider's SDK.

3. Secure the URLs

Discuss setting short expiration times, restricting HTTP methods (PUT for upload, GET for download), and scoping to specific object keys or prefixes.

4. Handle uploads and downloads

For uploads, the client uses the signed URL to PUT the file directly to storage; for downloads, the client uses a signed GET URL. Optionally, use multipart uploads for very large files.

5. Integrate with your system

After upload, the client notifies your backend (or you use storage events) to trigger processing. For downloads, ensure the client has proper permissions and the URL is generated on-demand.

Key Points to Mention

  • Use of cloud object storage (e.g., AWS S3, GCS) with presigned URLs
  • Time-limited expiration to reduce security risks
  • Scoped permissions (e.g., specific bucket, key prefix, or content type)
  • Avoiding server-side proxying to reduce load and improve scalability
  • Handling large files with multipart uploads and resumable downloads
  • Security best practices: never expose credentials, validate requests, and log access

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q4

How would you scale the platform to handle a high-traffic competition with tens of thousands of concurrent participants and submission spikes?

System DesignTechnical Trade-offs
Author's notes

This is where I wish I'd been more structured.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements and constraints of the high-traffic competition, then propose a scalable architecture that handles concurrent participants and submission spikes. Focus on horizontal scaling, caching, asynchronous processing, and database optimization, while discussing trade-offs and monitoring.

Pro tip: Emphasize the importance of load testing and gradual rollout to validate scalability, and mention specific techniques like sharding and rate limiting to handle spikes gracefully.

1. Clarify Requirements

Ask about expected traffic patterns, peak concurrency, submission rate, latency requirements, and budget constraints to tailor your solution.

2. High-Level Architecture

Propose a scalable architecture using load balancers, stateless services, and horizontal scaling to distribute traffic across multiple instances.

3. Handle Submission Spikes

Introduce asynchronous processing with message queues (e.g., Kafka, RabbitMQ) to decouple submissions from processing, and use rate limiting to protect backend services.

4. Data Layer Scalability

Discuss database scaling strategies such as sharding, read replicas, and caching (e.g., Redis) to handle high read/write loads.

5. Monitoring and Trade-offs

Explain how to monitor system health with metrics and logging, and discuss trade-offs between consistency, availability, and cost.

Key Points to Mention

  • Horizontal scaling with stateless services and load balancers
  • Asynchronous processing using message queues for submissions
  • Caching strategies (e.g., Redis) to reduce database load
  • Database sharding and read replicas for scalability
  • Rate limiting and backpressure to handle spikes
  • Load testing and gradual rollout to validate scalability

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q5

What are the key reliability, security, and observability concerns for a platform like this, and what trade-offs would you make?

System DesignTechnical Trade-offs
Author's notes

I talked about idempotent submission handling so retries don't double-judge, circuit breakers around the execution cluster, and structured logging with trace IDs per submission.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by framing the platform's core characteristics (live video commerce, real-time bidding, high concurrency) and then systematically address reliability, security, and observability concerns. For each area, identify the top risks and propose concrete trade-offs, emphasizing how you'd balance competing priorities like latency vs. consistency or security vs. user experience.

Pro tip: Tie every trade-off back to business impact—e.g., 'We'd accept slightly higher latency in the bidding service to ensure strong consistency and prevent overselling, because trust in the auction is paramount.' This shows you think like an owner, not just an engineer.

1. Clarify platform context and scale

Briefly restate the platform's key features (live streaming, real-time auctions, payments) and ask clarifying questions about scale, latency requirements, and compliance needs. This ensures your answer is tailored and shows you gather requirements before diving in.

2. Identify reliability concerns and trade-offs

Discuss failure modes (e.g., stream outages, bid service downtime, payment failures) and strategies like redundancy, graceful degradation, and idempotency. Highlight trade-offs such as consistency vs. availability (CAP theorem) and cost vs. resilience.

3. Address security concerns and trade-offs

Cover authentication/authorization, data encryption, fraud prevention, and secure payment handling. Trade-offs include security vs. user friction (e.g., MFA) and latency vs. thorough validation.

4. Outline observability strategy and trade-offs

Propose logging, metrics, tracing, and alerting for key user journeys. Discuss trade-offs like sampling rate vs. cost, and real-time monitoring vs. batch analysis.

5. Summarize balanced trade-offs and priorities

Conclude by prioritizing trade-offs based on business impact and user experience, showing you can make pragmatic decisions under constraints.

Key Points to Mention

  • Real-time bidding requires low-latency, strongly consistent transactions to prevent overselling; consider using a centralized ledger or distributed consensus.
  • Live video streaming demands high availability and adaptive bitrate; trade-off between video quality and bandwidth/cost.
  • Security: implement OAuth 2.0/OpenID Connect for auth, encrypt PII and payment data, and use rate limiting to prevent DDoS and scalping bots.
  • Observability: use distributed tracing (e.g., OpenTelemetry) to track bid-to-payment flow, and set SLOs for critical paths like bid acceptance latency.
  • Trade-off example: choose eventual consistency for view counts to improve performance, but strong consistency for inventory to avoid overselling.
  • Cost vs. reliability: multi-region active-active increases resilience but doubles infrastructure cost; consider active-passive with fast failover for cost savings.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.