Atlassian·Software Engineer·Onsite - System Design / Architecture
- Design a data model for an organization structure where orgs form a DAG (not a tree), employees can belong to multiple orgs at once, and both org memberships and parent relationships can change at runtime.
- Given the mutable DAG structure, how would you implement an LCO query (lowest common organization for two employees) and what are the trade-offs between recomputing on each query versus maintaining incremental ancestor structures?
- How do you handle consistency between reads and writes for LCO queries when org memberships and parent relationships are being mutated concurrently?
- Given expected read/write ratios, which data structure or approach wins for the LCO problem, and how does that change if the system is read-heavy versus write-heavy?
“I started with the obvious adjacency list and it felt fine until they pushed on multi-parent orgs.”