Zepto Frontend Interview
Quick-commerce frontend loops often stress machine coding, DOM/CSS, and delivery-speed UI. Composite round types, not a claimed onsite transcript.
- interview-experience
- zepto
Composite guidance based on publicly shared candidate reports and common hiring patterns for frontend / UI roles at quick-commerce and high-frequency consumer apps. Processes vary by role, level, and year. Always confirm with your recruiter. This is not a claimed onsite transcript and is not affiliated with Zepto.
Zepto frontend interviews often filter on machine coding. The miss is spending the first 25 minutes on a CSS grid for a grocery card while the cart still cannot add an item. Delivery-speed products care whether you can ship a list + cart under time, keep scrolling smooth, and talk about inventory that changes while the user is staring at a 10-minute promise.
DSA still appears. It is rarely the only bar. Treat the UI round as the gate.
Key takeaways
- Machine coding is frequently the hard filter: working cart beats perfect spacing.
- Lists, search, and maps show up because that is the consumer surface.
- Inventory and ETA are stale-by-default. Design for change, not for a static JSON fixture.
- Confirm OA vs live MC, and whether CSS/DOM without a framework is expected.
Speed, lists, and a hard machine-coding filter
| Stage | Focus | Format |
|---|---|---|
| Recruiter / HR | Role, notice, location | Call |
| OA (common) | Timed DSA in JS | Platform |
| Machine coding | List, cart, filters, search | 45–90 min |
| JS / DOM | Language, events, CSS layout | Editor |
| HM / culture | Pace, ownership | Call |
Some loops add a second coding round or a lightweight design talk (home feed, store picker, live order tracking). Senior candidates should still be ready for frontend system design. Do not assume a FAANG-shaped five-round packet.
How the machine-coding filter is scored
Interviewers in this product family typically watch for:
- MVP in 30–40 minutes: products render, add-to-cart works, totals update
- State: cart keyed by sku, not an array you scan with
findon every click - List performance: keys, avoid rebuilding the world on one quantity change
- UI states: empty store, OOS item, slow image, failed cart add
- Layout competence: flex/grid enough to look like an app, not a 2012 blog
Timebox with the machine coding interview framework. If the happy path is not working at 70% time, stop tweaking shadows.
Practice builds that transfer:
| Surface | Practice page |
|---|---|
| Catalog + filters | Product filters sidebar |
| Infinite home feed | Infinite scroll feed |
| Cart | Shopping cart drawer |
| Search | Autocomplete search box |
| Store / slot picker | Custom dropdown |
DOM-only variants exist (no React). Be ready to delegate events on a list root. See event delegation and creating DOM nodes.
function createCart() {
const qty = new Map(); // sku -> count
function add(sku) {
qty.set(sku, (qty.get(sku) || 0) + 1);
}
function set(sku, n) {
if (n <= 0) qty.delete(sku);
else qty.set(sku, n);
}
function count() {
let n = 0;
for (const v of qty.values()) n += v;
return n;
}
return { add, set, count, qty };
}
Tiny, boring, and enough to keep totals O(1) to update if you also cache a running total. Interviewers notice when every click remaps a 200-item catalog to compute “3 in cart.”
Speed as a product constraint
Quick commerce is latency-sensitive in two ways: page speed (low-end Android, 4G) and promise speed (minutes, not days). In a design or HM chat, connect UI choices to both.
- Images: explicit width/height, lazy below the fold, CDN. See media CDN and Core Web Vitals.
- Lists: windowing when the catalog is large (list virtualization).
- Search: debounce + abort in-flight suggestions.
- Maps: viewport markers, not 2,000 DOM pins. See infinite maps marker UI.
- Live tracking: polling vs websocket, stale ETAs, what happens when the rider GPS jumps. Cousin: Uber frontend interview, realtime websocket UI.
Inventory flicker is a domain footgun. The card said 4 left; the add returns 409. Show an inline “just went out of stock,” do not toast into the void, and do not leave a ghost quantity in the cart.
JavaScript and DSA
OA and live JS rounds look like other Indian product companies: arrays, hashing, strings, occasional trees. Practice timed: Two Sum, Group Anagrams, Merge Intervals, LRU Cache, Number of Islands. Language: JavaScript unless they tell you otherwise.
Language depth: event loop, closures, promises, flattening, debounce. Use the JavaScript interview guide as a map, not a 200-question list. Output-style warmups: JavaScript output-based questions. List transforms: flatten nested array.
Footguns
- CSS first, cart last
- Using array index as React keys on a shuffleable catalog
- Infinite scroll without a loading sentinel or “end of list”
- Assuming GPS accuracy on the tracking map
- Ignoring the OA because “I am a UI person”
Preparation plan (4–6 weeks)
- Daily: one timed DSA problem in JS. Log the pattern, not the title.
- Twice a week: 60-minute MC from a blank file (list + cart, or filters).
- Once a week: teach-back of event loop + one CSS layout (flex vs grid).
- Last 10 days: two full mocks. Sleep. Recruiter confirmation of format.
OA tactics if you get a paper: frontend online assessments.
Out loud: “I would spend the first five minutes writing acceptance bullets: render SKUs, add/remove, badge count, empty cart. Cart state is a Map of sku to qty. The list virtualizes if they give me hundreds of rows. Out-of-stock is an item-level error, not a silent no-op. I can talk maps and ETAs in a design follow-up, but I will not start there if the filter round is a cart.”