Katkat

Implement Order Modification Feature

Hudson River TradingSoftware Engineer · Onsite

Last updated

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.

You are given an existing C++ trading system with a client/server architecture. The current system already supports two request types:

  • AddOrder(order_id, symbol, side, price, quantity)
  • CancelOrder(order_id)

The server keeps all active orders in memory, keyed by order_id.

Add support for a new request:

  • ModifyOrder(order_id, new_price, new_quantity)

Requirements:

  1. If the order does not exist or has already been canceled, the modification must be rejected.
  2. symbol and side cannot be changed by a modify request.
  3. A successful modification updates only price and quantity for the existing order.
  4. new_price and new_quantity must both be positive; otherwise reject the request.
  5. The order must remain associated with the same order_id after modification.
  6. Integrate the new request into the existing client/server flow in the same style as the existing add/cancel functionality.

Implement the feature and explain what parts of the codebase you would inspect or reuse before making changes.