Design Scalable Product Backends
Company: Atlassian
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
Across several system-design rounds, the following prompts were reported. For each, discuss requirements, APIs, data model, scaling, reliability, and failure handling.
1. **Recipe service latency**: Design a recipe application and explain how you would reduce end-to-end latency for common read requests.
2. **User-drawn character platform**: Users draw a character in a client application, and the system must store the drawing and render it back consistently for viewers. Explain the backend representation, storage, rendering pipeline, and serving path.
3. **Large kiosk balance-refill system**: A fleet of about `125,000` kiosks allows users to refill a game card using credit card or cash. Design the backend and discuss device failures, offline behavior, double charging, cash reconciliation, fraud, and monitoring.
4. **Asynchronous image-link extraction service**: Design a REST service where clients submit one or more URLs. The service crawls each page and its sublinks, extracts image URLs, and later allows clients to query whether processing is `in_progress` or `completed` and retrieve the image URLs associated with each top-level URL. Explain the APIs, job model, completion detection, and scaling strategy.
Quick Answer: This set of prompts evaluates system design competencies including scalability, latency optimization, API and data-model design, consistency and rendering/storage trade-offs, reliability and failure handling, operational monitoring, and asynchronous job processing.