Implement Order Modification Feature
Company: Hudson
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: hard
Interview Round: Onsite
Quick Answer: This question evaluates a software engineering competency in modifying and extending a C++ client/server trading system, focusing on state management, input validation, API integration, and maintaining invariants for order lifecycle.
Constraints
- Operations are lists whose first item is add, cancel, modify, or snapshot.
- A successful modify only changes price and quantity.
- Snapshots return active orders sorted by order_id.
Examples
Input: ([["add",1,"AAPL","B",100,10],["modify",1,101,8],["snapshot"]],)
Expected Output: ['accepted', 'accepted', [[1, 'AAPL', 'B', 101, 8]]]
Explanation: Modify updates price and quantity but preserves id, symbol, and side.
Input: ([["modify",9,10,1],["add",9,"MSFT","S",12,5],["cancel",9],["modify",9,13,4]],)
Expected Output: ['rejected', 'accepted', 'accepted', 'rejected']
Explanation: Missing and canceled orders reject modification.
Input: ([["add",1,"A","B",0,1],["add",1,"A","B",10,1],["modify",1,11,0]],)
Expected Output: ['rejected', 'accepted', 'rejected']
Explanation: Invalid prices or quantities are rejected.
Hints
- Keep active orders keyed by order_id.
- Reject modifications for missing/canceled orders or non-positive replacement values.