PayTM Interview HLD Round || Interview Experience || Senior Software Engineer

Anonymous User
719

Got a call from PayTm HR for direct HLD round for senior-software engineer role. And if clear this round then have to do home-assignement and one more Managerial round.

HLD Interview Question

    1. Design the system that receives the exchange tick stream (NSE/BSE: peak ~1M ticks/second across ~5,000 instruments)
      and delivers live prices to 5M concurrently connected app users, each watching a watchlist of ~20 instruments.
      Freshness target: user sees a price at most ~500 ms old.
    1. User buy/sell stocks - place order -> app routes to exchange -> app shows the positions, holdings

Kind of Groww/Zerodha kind of platform.

My Answer

Follow the Hello-Interview Pattern to explain the things.

Functional Requirements

  1. User can buy/sell stocks.
  2. User can watch the live prices of stocks.
  3. User can create a watchlist and add at max 20 stocks.
  4. User can check for status of their orders which they make.

Non-Functional Requirements

  1. System should be scalable to handle 5M concurrent DAU.
  2. Latency to make orders (buy/sell) should be <300ms.
  3. Availability >> Consistency (Eventual Consistency)
  4. System make sure that
    Buy order and sell order bus be trigger at required triggered point which you set.

Core Entities

  1. User
  2. Stock
  3. Orders (OrderType: BUY|SELL)
  4. Stock-Exchange
  5. WatchList

API's

  1. User buy/sell (order)
POST: /v1/stocks/stockId -> Order Information
Payload: 
{
    stockExchnage: NSE/BSE,
    orderType: BUY/SELL
    no_of_shares: <<>>,
    trigger_price: 
    at_market_price: true/false
}
  1. User can see the stocks
GET: /v1/stocks/stockId -> Stock Information
  1. User can create a watchList
POST: /v1/watchList -> watchlist
Payload: 
{
    name: <<>>,
    stocks: [<ticker-symbol>],
}
  1. User can see the watchlist
GET: /v1/watchlist/watchListId -> WatchList
  1. Check the status of the order
GET: /v1/orders/orderId -> Order along with status

HLD:
Main challenge is to deliever the live prices to user when they open the particular stock. I am confused how should i get the data from stock-exchange. And didn't do much to explain it, though i use redis-pub-sub to push live prices to the customer via Server Sent events.

For order updates, expecting web-hooks would be available when particular order is success and provide the update. Service is callback url for Stock-exchange when any order is confirmed. Apart from that cron-job as reconcilation job (second-option), which will run when market timing ends and check if any order status is still shows PENDING and make a batch call to stock-exchange to get the status information.

Screenshot 2026-09-05 at 4.55.35 PM.png

Comments (5)