Sharing my backend phone screen with Coinbase.
The process was a recruiter call, then the phone screen got scheduled about a week later, 45 minutes long.
The question was to build the core logic of a URL shortener service, with the following requirements:
- Support generating short links
- Support automatically redirecting when a short link is visited
- Short links need an expiration time
- Concurrent access needs to be high-performance and secure
I wrote it in Java. For the data structure I went with a HashMap plus a simulated TTL cache, and handled thread safety simply by using ConcurrentHashMap.
Follow-up questions:
- What if traffic is 100,000 requests per second? (Answer: introduce a distributed cache plus consistent hashing)
- How do you prevent short links from being enumerated? (Answer: random generation, sufficient length, and access control)
- How do you clean up expired data efficiently? (Answer: lazy delete plus scheduled batch cleanup)
The interviewer said at the end that the implementation was fine, but wanted me to go deeper on the distributed consistency approach, like cross-datacenter sync and consistency guarantees.
Three days later I got an invite for the next round, a system design interview.
Overall impression: Coinbase prefers scalable design even for simple features — you're expected to think at the scale of hundreds of millions of users.
Hoping this helps anyone prepping for backend system design.
Discussion
Loading comments…