It started with a self-introduction, then 20 minutes of the interviewer grilling my resume — almost no rote trivia questions, mostly project-related questions, and the interviewer asked at a very high level.
Then, very abruptly, I was told I had to spend the remaining thirty minutes finishing a system design question, any diagramming tool I wanted, and I had to share my screen.
The functional requirements and non-functional requirements were both given by the interviewer. The question was a very high-frequency scenario in TikTok system design interviews: design a hotel booking system. This system needs to handle booking confirmation, checking availability, and similar functions. That means designing a system that can handle real-time data and has high availability. Message latency had to be extremely low (<200ms), and dropping a few messages was fine. So don't jump straight into talking about databases or Redis — first nail down the business characteristics (weak consistency, high concurrency, low latency), and let the architecture trade-offs follow naturally from there.
There were a few key trade-offs the interviewer cared a lot about:
- Latency vs. reliability (choosing UDP/WebSocket over HTTP)
- How to prevent the same hotel room from being booked by different people at the same time (rate limiting + merging + throttling)
- How to horizontally shard a hot hotel (sharding by room or bucketing by user)
At the end I also mentioned a bit of practical experience — "at my last company, we used Kafka + Redis for message distribution and hot-spot control, and a single machine could support over a hundred thousand QPS" — that line probably helped my score.
Discussion
Loading comments…