Coinbase logo

Coinbase Backend Engineer System Design Questions

51 practice questions for Coinbase Backend Engineer interviews

Coinbase backend engineer interviews typically focus on APIs, databases, system design, concurrency, caching, and data structures.

All Roles Software Engineer Backend Engineer Frontend Engineer Full Stack Engineer Mobile Engineer Data Engineer Data Scientist ML Engineer DevOps Engineer DevOps Engineer Product Manager SRE Security Engineer Engineering Manager Data Analyst UX/UI Designer QA Engineer

No verified questions yet for Coinbase.

system design Senior messaging #1

1. [OA] Message Queue — Design a simple message queue system for the exchange

Coinbase needs a reliable way to queue messages between its services for processing operations asynchronously.
Design a MessageQueue class that allows adding messages, retrieving the next message, and checking the size of the queue.
Class signature:
- class MessageQueue:
- def enqueue(message: str) -> None – Adds a message to the queue.
- def dequeue() -> str – Retrieves and removes the next message from the queue.
- def size() -> int – Returns the current size of the queue.
Example 1:
Input: enqueue('msg1')
Output: None
Explanation: Message is queued.
Example 2:
Input: size()
Output: 1
Explanation: Queue size is currently 1 message.
Constraints:
- 1 <= len(message) <= 100
system design Senior api design #2

2. [OA] Job Scheduler — Design a job scheduling system

Coinbase requires a robust job scheduler to execute tasks at specific intervals. The system must handle thousands of jobs simultaneously.
Design a JobScheduler class that schedules jobs to run after a defined interval. It should allow for adding, removing, and checking job status.
Class signature:
- class JobScheduler:
- def add_job(job_id: str, interval: int) -> None – Adds a job with a specified interval (in seconds).
- def remove_job(job_id: str) -> None – Removes a job from the scheduler.
- def get_status(job_id: str) -> str – Returns the current status of a job (e.g. 'running', 'pending', 'completed').
Example 1:
Input: add_job('job1', 5)
Output: None
Explanation: Job is scheduled.
Example 2:
Input: get_status('job1')
Output: 'pending'
Explanation: Job is pending execution.
Constraints:
- 1 <= interval <= 3600
- 1 <= len(job_id) <= 20

Related Coinbase Backend Engineer interview prep

Start practicing Coinbase questions

Sign up for free to access walkthroughs, AI-generated questions, and more.

Get Started Free