PracHub
QuestionsCoachesLearningGuidesInterview Prep

Quick 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.

  • hard
  • Hudson
  • Coding & Algorithms
  • Software Engineer

Implement Order Modification Feature

Company: Hudson

Role: Software Engineer

Category: Coding & Algorithms

Difficulty: hard

Interview Round: Onsite

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.

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.

Process add, cancel, modify, and snapshot operations for an in-memory order map. Return operation results and snapshots.

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

  1. Keep active orders keyed by order_id.
  2. Reject modifications for missing/canceled orders or non-positive replacement values.
Last updated: Jun 27, 2026

Loading coding console...

PracHub

Master your tech interviews with 8,000+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • AI Coding Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.

Related Coding Questions

  • Solve Watcher Simulation And Integer Conversion - Hudson (medium)
  • Count People Reaching the Boundary - Hudson (easy)
  • Implement Buffer Parsers and Generic Map Class - Hudson (medium)
  • Count inversions in a permutation - Hudson (medium)
  • Count players reaching end with moving watchers - Hudson (easy)