Level: Staff-Level
Round: Phone Screen · Type: System Design · Difficulty: 6/10 · Duration: 60 min · Interviewer: Neutral
Topics: System Design, Redis Pub/Sub, Scalability, Caching, Sharding, Real-time Communication
Location: San Francisco Bay Area
Interview date: 2026-02-05
Got offer: False
I had a phone screen interview focused on system design. The interviewer asked me to design Slack.
In my phone screen, I was asked to design Slack. I based my design on Hello Interview's approach, first discussing Direct Messages (DMs) and then channels.
I spent time explaining my use of Redis Pub/Sub, and it seemed the interviewer wasn't very familiar with this approach. I drew diagrams to clarify the flow.
We spent a while discussing large channels. I suggested a pull model for large channels and a push model for DMs and small channels. The interviewer asked if I could unify everything into a pull model for backend consistency. I said it wouldn't work because clients would need to refresh to receive messages, which would hurt the user experience. Now I realize that clients might not even receive notifications.
Multi-device support was also discussed at length. The interviewer felt that adding a session table, as suggested by Hello Interview, would cause the inbox to bloat up. I confirmed that the message only needed to be received once and suggested deleting all sessions for that user in the inbox after the message was received once. I didn't proactively cover multi-device support in my design; the interviewer had to ask about it. Perhaps I should have addressed it from the start. I forgot to include it, even though I had prepared for it.
Another issue was my lack of discussion about scale. I didn't mention caching. I only briefly touched on sharding at the end because I spent too much time on large channels. With five minutes remaining, the interviewer said "good" and asked if I had any questions. In retrospect, I should have covered scalability from the beginning, as it's relatively straightforward to add a cache and discuss sharding to handle it.
I don't have much experience with design interviews. This was only my second design interview in a while. I'd appreciate any feedback on what I could have done better. I was interviewing for an Engineering Manager role, likely at a Staff level, which felt challenging. I realize now that I should have proactively addressed scalability.