Implement Order Modification Feature
Company: Hudson River Trading
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: hard
Interview Round: Onsite
Overview: 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.
Read the full Hudson River Trading Software Engineer interview experience this question came from
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.
Hints
- Keep active orders keyed by order_id.
- Reject modifications for missing/canceled orders or non-positive replacement values.