Interview guides · Gupta Media
Gupta Media Software Engineer Interview Guide
Gupta Media Software Engineer interview guide: reported rounds, questions and how candidates describe the process.
The 60-second brief
At Gupta Media, a Software Engineer is a core builder of the agency's competitive advantage. Gupta Media sits at the intersection of technology, marketing, and design, crafting complex proprietary software that manages and optimizes millions of dollars in digital media spend. As a Software Engineer, you will build scalable applications, high-throughput data pipelines, and internal tools that allow media planners to optimize campaigns in real-time. The engineering team at Gupta Media moves fast, deploying code that directly impacts major entertainment, sports, and consumer brands globally. You will tackle unique technical challenges, such as integrating diverse marketing APIs, building real-time reporting dashboards, and managing high-volume data ingestion. It is a highly collaborative environment where your technical decisions directly influence business success.
This guide is scoped to a Software Engineer candidate at Gupta Media.
Focus areas
- MERN Stack (MongoDB, Express, React, Node)
- JavaScript
- Data Structures and Algorithms (DSA)
The Gupta Media interview process
Gupta Media candidates report 4 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.
Initial Screening
Screening by the People Ops team to align on your background and expectations.
What to demonstrate
- Screening by the People Ops team to align on your background and expectations
- Depth in MERN Stack (MongoDB, Express, React, Node)
How to prepare
- Be able to walk your CV end to end in two minutes, and say why this company specifically.
- Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.
Technical Round
Technical interview with the engineering team.
What to demonstrate
- Technical interview with the engineering team
- Depth in MERN Stack (MongoDB, Express, React, Node)
How to prepare
- Answer aloud and timed: Describe the difference between SQL and NoSQL databases and when you would use each.
- Answer aloud and timed: How do you handle asynchronous operations in Node.js, and what are the advantages of async/await over promises?
Coding Challenge
Practical coding challenge where you will later explain your architecture and design choices.
What to demonstrate
- Practical coding challenge where you will later explain your architecture and design choices
- Depth in MERN Stack (MongoDB, Express, React, Node)
How to prepare
- Answer aloud and timed: Write a function to deep-clone a nested JavaScript object without using JSON.parse.
- Answer aloud and timed: Given an array of marketing campaign data, write an algorithm to find the peak performance window.
Final Round
Comfortable conversation with the CEO, emphasizing the collaborative nature of the organization.
What to demonstrate
- Comfortable conversation with the CEO, emphasizing the collaborative nature of the organization
- Depth in MERN Stack (MongoDB, Express, React, Node)
How to prepare
- Answer aloud and timed: How would you implement a debounce function in vanilla JavaScript to optimize search input fields?
- Answer aloud and timed: Explain the time and space complexity of your solution for the provided coding challenge.
Where candidates lose points
Prioritize Code Readability
During the coding challenge, write clean, well-commented code. The engineering team values readability and maintainability over overly clever, complex one-liners.
Prepare for the Code Review
When you return to explain your coding challenge, treat it like a collaborative peer review. Be open to feedback, explain your trade-offs honestly, and don't be afraid to point out areas where you would improve the code if given more time.
Understand the Business Context
Gupta Media is a marketing and technology agency. Showing an interest in how advertising technology works and how data drives marketing decisions will make you stand out.
Questions & practice
How do you handle asynchronous operations in Node.js, and what are the advantages of async/await over promises
Medium · Technical & MERN Stack
How do you handle asynchronous operations in Node.js, and what are the advantages of async/await over promises?
Approach
- Say what the runtime actually does before reasoning about the code.
- Name what is shared across threads and what owns each piece of state.
- Identify the window where an invariant is briefly untrue.
- Distinguish a value from a reference to it, and say which one you handed out.
Follow-up
- What happens if two callers reach this at the same time?
- Where could this allocate more than you expect?
Write a function to deep-clone a nested JavaScript object without using JSON.parse.
Medium · Coding & Algorithmic Problem Solving
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Given an array of marketing campaign data, write an algorithm to find the peak performance window.
Medium · Coding & Algorithmic Problem Solving
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
How would you implement a debounce function in vanilla JavaScript to optimize search input fields?
Medium · Coding & Algorithmic Problem Solving
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Explain the time and space complexity of your solution for the provided coding challenge.
Medium · Coding & Algorithmic Problem Solving
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
How do you optimize query performance in MongoDB when dealing with large datasets?
Medium · Technical & MERN Stack
Approach
- Name the grain you start from and join outward from it.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
- Say which index the query would use, and what makes it unusable.
- Handle the rows that do not match: that is usually the actual question.
Follow-up
- How does the query change if that join becomes one-to-many?
- What happens to this when the table is ten times larger?
Describe the difference between SQL and NoSQL databases and when you would use each.
Medium · Technical & MERN Stack
Approach
- Name the grain you start from and join outward from it.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
- Say which index the query would use, and what makes it unusable.
- Handle the rows that do not match: that is usually the actual question.
Follow-up
- How does the query change if that join becomes one-to-many?
- What happens to this when the table is ten times larger?
Explain how state management works in React and when you would choose Context API over Redux.
Medium · Technical & MERN Stack
Approach
- Say who the caller is and what they do when the call fails halfway.
- Define the identity of a request so a retry cannot double-apply it.
- Separate accepted, pending, failed and confirmed; they are different facts.
- Design the error taxonomy before the success shape; callers branch on it.
Follow-up
- What happens if the caller retries after a timeout?
- How does a client discover it is on an old version of this contract?
Design the async export contract a client can resume safely
Hard · async operations · idempotency · leases
A tenant asks for a CSV of every resource. The work runs for minutes on the worker fleet through a job_run row carrying a lease, an attempt count and a dedupe_key, far past the edge's 400 ms budget. Callers are a browser that polls and a script that walks away and checks later. Specify what the submit call returns, the operation resource and its states, how a duplicate submit is handled, how a client learns about completion, what cancellation means given that a lease can expire mid-run, and how the result is fetched and when it expires.
Approach
- Split the API in two. Submit returns 202 with an operation id and a location to poll, and never blocks on the work. The operation is a real resource with its own lifecycle - queued, running, succeeded, failed, cancelled - plus attempt, a monotonic progress figure, and a terminal error drawn from the same code taxonomy the synchronous endpoints use, so a client needs one error vocabulary rather than two.
- Deduplicate at submit using job_run.dedupe_key, unique over (job_type, dedupe_key) while status is 'queued' or 'running': a repeat submit of the same logical export returns 200 with the existing operation instead of 202 with a new one, and the partial index deliberately permits a legitimate re-run once the first has finished. Pair it with the request's idempotency key so an HTTP-level retry of the submit is exact rather than merely similar.
- Tell the poller how to poll: Retry-After on the polling response, a minimum interval enforced at the edge, and a documented maximum lifetime after which an operation is reaped. Polling is the contract of record; the webhook is the fast path, and both must lead to the same terminal state, so a client that receives the completion event and then polls anyway sees no contradiction.
- Be exact about cancellation. A cancel request records intent; it cannot stop work already executing. The handler reads the flag at checkpoints, and because a lease expires on a clock that cannot distinguish a dead worker from a slow one, a second copy may start after the cancel was recorded - so the handler re-reads the flag immediately after claiming the lease. 'cancelled' becomes terminal only when no lease is outstanding; reporting it earlier shows a client a stopped job while a worker is still writing output.
Follow-up
- An operation has said 'running' for 40 minutes and the worker is gone. What does the client see, and which columns in job_run decide that?
- Two tenants each submit 50 exports at once. What in this contract stops one of them delaying the other?
p99 jumped on one listing filter while p50 stayed flat
Medium · query planning · composite index · percentiles
After a release that added an owner_user_id filter to the resource listing, p99 rose from 90 ms to 1.9 s while p50 stayed at 40 ms. Traffic and row counts are unchanged. resource carries the index (tenant_id, status, updated_at DESC, resource_id DESC). The new query filters tenant_id and owner_user_id, orders by updated_at DESC, resource_id DESC, and takes 20 rows. On PostgreSQL, explain the shape of the regression, prove it from a query plan, and give the index you would add.
Approach
- Start from the shape. A flat p50 with a moved p99 means a subset of requests changed cost, not all of them, so the first job is naming the subset. Bucket the endpoint's latency by the tenant's row count; the natural hypothesis is that large tenants are a small share of requests and all of the tail.
- Get the plan for the new query on a large tenant with EXPLAIN (ANALYZE, BUFFERS). Expect an index scan over the tenant's range, a filter discarding most of it, then a Sort feeding the Limit, possibly reporting Sort Method: external merge Disk. Read actual rows on the scan node, not estimated.
- Explain why the existing index cannot serve it. A composite B-tree is seekable only as a left prefix, and with no equality predicate on status the scan cannot treat updated_at as an ordering, because rows in the tenant's range are ordered by status first. Everything matching must be read and sorted before LIMIT 20 can apply, so a tenant with 400,000 rows pays 400,000 rows to return 20.
- Add (tenant_id, owner_user_id, updated_at DESC, resource_id DESC). Equality on the first two columns leaves the index ordered by updated_at within that pair, so the plan becomes an index scan that stops after 20 rows with no Sort node. PostgreSQL can scan a B-tree backwards, so the DESC markers matter only if the two sort columns ever disagree in direction; keeping them explicit documents the order the keyset cursor depends on.
Follow-up
- The endpoint paginates with OFFSET. What does page 500 cost with your index, and what does the keyset version cost?
- How would you have caught this before release, given that a 10,000-row seed database produces the same plan shape at an unnoticeable cost?
Suggested practice checklist
Built from the rounds and topics Gupta Media candidates report.
Day 1 — Map the Gupta Media loop
- Write out the reported sequence: Initial Screening, Technical Round, Coding Challenge, Final Round.
- For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.
Deliverable: A one-page map of the 4 reported rounds, with the weakest marked.
Day 2 — Work MERN Stack (MongoDB, Express, React, Node)
- Spend the session on MERN Stack (MongoDB, Express, React, Node), which Gupta Media candidates report being tested on.
- Write one worked example in MERN Stack (MongoDB, Express, React, Node) and time yourself on it.
Deliverable: One timed worked example in MERN Stack (MongoDB, Express, React, Node).
Day 3 — Work JavaScript
- Spend the session on JavaScript, which Gupta Media candidates report being tested on.
- Write one worked example in JavaScript and time yourself on it.
Deliverable: One timed worked example in JavaScript.
Day 4 — Work Data Structures and Algorithms (DSA)
- Spend the session on Data Structures and Algorithms (DSA), which Gupta Media candidates report being tested on.
- Write one worked example in Data Structures and Algorithms (DSA) and time yourself on it.
Deliverable: One timed worked example in Data Structures and Algorithms (DSA).
Day 5 — Answer out loud: Technical & MERN Stack
- Answer aloud, timed: Explain how state management works in React and when you would choose Context API over Redux.
- Answer aloud, timed: How do you optimize query performance in MongoDB when dealing with large datasets?
Deliverable: Spoken answers to 2 reported Technical & MERN Stack question(s), under time.
Day 6 — Answer out loud: Coding & Algorithmic Problem Solving
- Answer aloud, timed: Write a function to deep-clone a nested JavaScript object without using JSON.parse.
- Answer aloud, timed: Given an array of marketing campaign data, write an algorithm to find the peak performance window.
Deliverable: Spoken answers to 2 reported Coding & Algorithmic Problem Solving question(s), under time.
Day 7 — Answer out loud: Behavioral & Executive Fit
- Answer aloud, timed: Walk me through a complex technical project you led and how you handled unexpected scope creep.
- Answer aloud, timed: Why are you interested in working at a technology-driven marketing agency like Gupta Media?
Deliverable: Spoken answers to 2 reported Behavioral & Executive Fit question(s), under time.
Behavioural preparation
Behavioural rounds judge the decision you made and what it cost.
Walk me through a complex technical project you led and how you handled unexpected scope creep.
Medium · Behavioral & Executive Fit
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Why are you interested in working at a technology-driven marketing agency like Gupta Media?
Medium · Behavioral & Executive Fit
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Tell me about a time you had to explain a highly technical concept to a non-technical stakeholder.
Medium · Behavioral & Executive Fit
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
How do you prioritize tasks when working in a fast-paced environment with shifting priorities?
Medium · Behavioral & Executive Fit
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?