Design user communication manager APIs
Company: Akuna Capital
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Take-home Project
Design a lightweight in-memory communication manager between users. Implement 2–3 functions: connect(userA, userB) to establish a bidirectional session, disconnect(userA, userB) to terminate it, and clear(userA, userB) to remove session state/history without leaving users connected. Specify method signatures, data structures (e.g., hash maps, adjacency sets), expected time/space complexities, edge cases (duplicate connects, missing sessions), and how you would handle concurrency or invalid inputs. Include a brief testing plan.
Quick Answer: The question evaluates a software engineer's ability to design lightweight in-memory APIs and data structures for bidirectional user sessions, covering API design, hash-based adjacency structures, complexity analysis, concurrency control, edge-case handling, and basic testing.