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

paytm logo
paytm
· Senior Software Engineer
September 5, 2026 · 1 reads

Summary

I interviewed for a Senior Software Engineer role at PayTM and completed a high‑level design (HLD) round that focused on building a system to stream live market prices and handle stock orders.

Full Experience

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

Interview Questions (2)

1.

Design a real‑time market data streaming system

System Design

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.

2.

Design a stock trading platform with order flow

System Design

User buy/sell stocks - place order -> app routes to exchange -> app shows the positions, holdings. The platform is similar to Groww/Zerodha.

📣 Found this helpful? Please share it with friends who are preparing for interviews!

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!