Dali demonstrated strong technical knowledge and problem-solving abilities during our session. The approach to the algorithm question was methodical, and communicated his thought process clearly.
Areas of Strength
- Clearly enumerated core functional and non-functional requirements.
- Provided concrete NFR metrics, including thoughtful scaling estimations.
- Addressed delete-message behavior across both online and offline scenarios.
- Explained the offline → online recovery workflow, including inbox table design.
- Delivered a detailed high-level send-message architecture, covering WS server vs. chat server roles, schema design, and data flow.
- Justified database selection with strong reasoning around scalability, write throughput, and join minimization to meet availability goals.
Areas for Improvement
- This problem has a broad solution space—clarifying and aligning early with the interviewer on the exact deep-dive direction would set clearer expectations.
- Avoid diving too deep into message broadcast architecture before reaching the designated deep-dive portion.
- Add more depth on offline user detection mechanisms: heartbeats, WebSocket ping/pong, presence service with TTL, and push-delivery receipts.
- Strengthen familiarity with common messaging-system topics, such as:
- Online vs. offline user handling
- Inbox and unread-message accounting
- Multi-tenant and isolation models
- Multi-device sync semantics
- Rich-media handling
- Message search
- Message ordering guarantees
- Threading / conversation hierarchy