JS Guide
HomeQuestionsTopicsCompaniesResources
BookmarksSearch

Built for developers preparing for JavaScript, React & TypeScript interviews.

ResourcesQuestionsSupport
HomeQuestionsSearchProgress
HomeCompaniesZomato

Zomato

Zomato is India's largest food delivery and restaurant discovery platform, serving millions of daily orders across 1,000+ cities. Their frontend team builds the consumer-facing web and mobile apps, restaurant partner dashboard, and real-time delivery tracking interfaces using React, TypeScript, Next.js, and React Native.

Food Tech
JavaScript
TypeScript
React
Next.js
Tailwind CSS
React Native
Careers pageCompensation data

55

Questions

28

Day Plan

5

Stages

21

Topics

Frontend Roles

Frontend Engineer

SDE-1

Builds React components and user interfaces for Zomato's consumer app, restaurant partner dashboard, and order tracking features. Works on the web platform using React, TypeScript, and Next.js.

Senior Frontend Engineer

SDE-2

Leads frontend feature development, contributes to frontend architecture decisions, builds shared component libraries, and mentors junior engineers. Drives performance optimization for consumer-facing experiences.

Staff Frontend Engineer

SDE-3+

Defines frontend architecture across teams, drives cross-team technical strategy, establishes engineering best practices, and leads initiatives for real-time features and design systems.

Interview Process

Based on publicly available information. Actual processes may vary by team and role.

1

HR Screening

30 minutes

Initial call covering role expectations, experience overview, motivation for joining Zomato, notice period, and salary expectations.

2

Technical Round 1: JavaScript & React

1-1.5 hours

In-depth discussion of JavaScript fundamentals and React concepts. Expect output-based questions on closures, promises, event loop, and the this keyword. React deep dive covers hooks, component lifecycle, reconciliation, and state management patterns. May include live coding of small utility functions.

JavaScript fundamentals
React hooks
Closures
Promises
Event loop
State management
3

Technical Round 2: Machine Coding / System Design

1.5-2 hours

For SDE-1: Build a working React component or feature from scratch (e.g., autocomplete, infinite scroll, real-time order tracker). For SDE-2: Frontend system design for scalable consumer-facing features (e.g., food delivery tracking page, restaurant search with filters, real-time notification system).

Machine coding
React component building
Frontend system design
Custom hooks
Real-time features
4

Engineering Manager Round

1 hour

Deep-dive into past projects, technical decisions, and ownership stories. Behavioral questions using the STAR method, including handling disagreements, taking unpopular decisions, and demonstrating initiative. For senior roles, includes architecture discussions.

Behavioral questions
Ownership
Technical decisions
Team collaboration
5

Final Round

45 minutes-1 hour

Conversation with a senior leader covering cultural fit, career goals, and alignment with Zomato's mission. May include a brief technical discussion depending on the level.

Total process duration: 2-5 weeks

Zomato's interviews emphasize practical React skills and JavaScript depth for SDE-1, with hooks-from-scratch implementation and system design for SDE-2. Strong behavioral component focused on ownership and handling disagreements. Real-time features (WebSockets, polling, live tracking) are commonly discussed given Zomato's product. No heavy DSA round for frontend roles — basic problem solving suffices.

Study Plan

28-day study plan across 4 phases

1
JavaScript Fundamentals
Days 1-7
Closures
Hoisting
this keyword
Scope
Variables
Event loop

Questions to practice:

  • What is a closure in JavaScript and why are they useful?
  • How does JavaScript hoisting work?
  • How does the 'this' keyword work in JavaScript?
  • What is the difference between block scope and function scope?
  • What is the difference between var, let, and const in JavaScript?
  • Explain the JavaScript Event Loop and how it handles asynchronous operations.

Topics to study:

Closures
Hoisting
The this Keyword
Scope & Scope Chain
Variables
Event Loop & Runtime
2
Async JavaScript & Patterns
Days 8-14
Promises
Async/await
Data polling
WebSockets
Debounce/throttle

Questions to practice:

  • What are Promises in JavaScript and how do they work?
  • How do async/await work and how do they relate to Promises?
  • How do you implement data polling in JavaScript?
  • How do WebSockets work and when would you use them over HTTP?
  • How would you implement a debounce function from scratch with advanced features?

Topics to study:

Promises & Async/Await
Event Loop & Runtime
Debounce & Throttle
3
React Core & Hooks
Days 15-21
React hooks
Virtual DOM
Custom hooks
State management
Context vs Redux

Questions to practice:

  • Explain the useState and useEffect hooks and their common patterns.
  • What is the Virtual DOM and how does it work?
  • What are custom hooks and how do you create them?
  • When should you use Context API vs Redux for state management?
  • Implement a basic version of useState from scratch.

Topics to study:

Hooks
React Internals
State Management
Context API
4
Advanced React & System Design
Days 22-28
Diffing algorithm
useEffect implementation
Memoization
Performance
CSS approaches
System design

Questions to practice:

  • Explain React's diffing algorithm in detail. How does it achieve O(n) complexity?
  • Implement a basic version of useEffect from scratch.
  • Explain React.memo, useMemo, and useCallback. When should each be used?
  • How does React's reconciliation algorithm work?
  • What are the advantages of utility-first CSS (Tailwind) over CSS-in-JS?
  • Design a food delivery tracking page with real-time updates

Topics to study:

Performance Optimization
Advanced Patterns
CSS Methodologies & Styling Approaches
Responsive Design Fundamentals
Core Web Vitals & Performance Metrics
Real-Time System Architecture
Frontend Scalability Patterns

Questions to Practice (55)

Questions relevant to preparing for frontend interviews at Zomato, based on their known tech stack and common frontend interview patterns.

What is the difference between var, let, and const in JavaScript?

javascript
junior

How does JavaScript hoisting work?

javascript
junior

What is a closure in JavaScript and why are they useful?

javascript
mid

What are Promises in JavaScript and how do they work?

javascript
mid

How do async/await work and how do they relate to Promises?

javascript
mid

Explain the JavaScript Event Loop and how it handles asynchronous operations.

javascript
mid

How does the 'this' keyword work in JavaScript?

javascript
mid

What is the difference between microtasks and macrotasks in JavaScript?

javascript
mid

What are Promise.all, Promise.race, Promise.allSettled, and Promise.any, and when do you use each?

javascript
mid

How do debounce and throttle work, and when would you use each?

javascript
mid

What are call, apply, and bind and how do they differ?

javascript
mid

What is the difference between block scope and function scope?

javascript
mid

How do you implement data polling in JavaScript?

javascript
mid

How would you implement a debounce function from scratch with advanced features?

javascript
senior

How would you implement a simplified Promise from scratch?

javascript
senior

What is requestIdleCallback and how does it compare to other scheduling APIs?

javascript
senior

How do WebSockets work and when would you use them over HTTP?

javascript
senior

How would you implement Function.prototype.bind from scratch?

javascript
senior

How would you implement Promise.all and Promise.race from scratch?

javascript
senior

What is the difference between functional and class components in React?

react
junior

What is the Virtual DOM and how does it work?

react
junior

Explain the useState and useEffect hooks and their common patterns.

react
mid

What is React Context and when should you use it?

react
mid

What are custom hooks and how do you create them?

react
mid

What is useRef and when should you use it?

react
mid

How do useSelector and useDispatch work in React-Redux?

react
mid

How would you implement a useLocalStorage custom hook?

react
mid

How would you implement a useFetch custom hook?

react
mid

How do React component lifecycle methods map to hooks in functional components?

react
mid

When should you use Context API vs Redux for state management?

react
mid

Build an autocomplete/typeahead search component in React that fetches suggestions from an API with debouncing, keyboard navigation, and highlighted matching text.

react
mid

Build an infinite scroll component in React using Intersection Observer that loads more items as the user scrolls, with loading states and race condition handling.

react
mid

Explain React.memo, useMemo, and useCallback. When should each be used?

react
senior

How does React's reconciliation algorithm work?

react
senior

Explain common React patterns: Compound Components, Render Props, and Custom Hooks.

react
senior

What are Higher-Order Components (HOCs) in React, and why are they less commonly used today?

react
senior

What is Redux and Redux Thunk, and how do they manage application state and async operations?

react
senior

How would you design and implement a reusable Pagination component in React?

react
senior

How does list virtualization (windowing) work in React and when should you use it?

react
senior

Explain React's hydration process and common hydration mismatch issues.

react
senior

Explain React's diffing algorithm in detail. How does it achieve O(n) complexity?

react
senior

Implement a basic version of useState from scratch.

react
senior

Implement a basic version of useEffect from scratch.

react
senior

What are Core Web Vitals and why do they matter?

performance
junior

How do you make a website responsive using CSS?

css
junior

What are the advantages of utility-first CSS (Tailwind) over CSS-in-JS?

css
mid

What makes a good component API for a design system?

system-design
junior

What is the difference between client state and server state?

system-design
junior

Design an autocomplete/typeahead search component

system-design
mid

Design a real-time notification system for a web application

system-design
mid

How do you design a component library / design system for multiple teams?

system-design
mid

Design a social media news feed with infinite scroll

system-design
mid

Design a food delivery tracking page with real-time updates

system-design
senior

Design an offline-first web application with sync capabilities

system-design
senior

Design a real-time chat application like Slack or Messenger

system-design
senior

Recommended Topics (21)

Closures

A closure is a function that retains access to variables from its outer (enclosing) scope even after the outer function has returned, enabled by JavaScript's lexical scoping.

Promises & Async/Await

Promises represent eventual completion or failure of async operations with three states (pending, fulfilled, rejected), and async/await provides syntactic sugar for writing promise-based code that reads like synchronous code.

Event Loop & Runtime

JavaScript is single-threaded with one call stack — the event loop enables async behavior by processing microtasks (promises) before macrotasks (setTimeout) between each cycle of the call stack.

The this Keyword

The this keyword is dynamically bound based on how a function is called — four binding rules (new, explicit, implicit, default) determine its value, with arrow functions being the exception that inherits this lexically.

Scope & Scope Chain

JavaScript uses lexical scoping where variable access is determined by code structure at write time — the engine walks up the scope chain from inner to outer scopes until it finds the variable or reaches the global scope.

Hoisting

Hoisting is JavaScript's behavior of moving declarations to the top of their scope during compilation — var is initialized as undefined, let/const enter a Temporal Dead Zone, and function declarations are fully available before their code position.

Debounce & Throttle

Debounce delays execution until a pause in events, while throttle limits execution to a fixed interval — both are essential for controlling high-frequency event handlers.

Variables

var is function-scoped and hoisted with undefined, let is block-scoped and reassignable, const is block-scoped and cannot be reassigned — modern JavaScript favors const by default and let when reassignment is needed.

Hooks

Hooks let functional components manage state (useState), run side effects (useEffect), access refs (useRef), and extract reusable logic into custom hooks — all following strict rules about call order.

React Internals

React's reconciliation algorithm diffs virtual DOM trees in O(n) using two heuristics — different element types tear down the subtree, same types compare attributes — while the Fiber architecture makes this work interruptible so the browser stays responsive during large updates.

State Management

Redux provides predictable state with a single store, actions, and reducers (RTK simplifies this with createSlice). Zustand offers a lighter alternative. Choose based on app complexity — most apps can start with useState + Context.

Performance Optimization

React.memo skips re-renders when props haven't changed, useMemo caches computed values, and useCallback caches function references — but these are targeted optimizations, not defaults for every component.

Components

React components are reusable, self-contained UI building blocks — functional components (plain functions returning JSX) have replaced class components for most use cases since hooks were introduced in React 16.8.

Context API

Context provides data to any descendant component without passing props through every level — it solves prop drilling but is not state management, and context value changes re-render all consumers.

Advanced Patterns

React patterns evolved from mixins to HOCs to render props to hooks — compound components share implicit state for flexible APIs, while custom hooks have replaced most logic-sharing patterns.

CSS Methodologies & Styling Approaches

Modern CSS architecture offers four main approaches — BEM naming conventions, CSS Modules for build-time scoping, CSS-in-JS libraries for dynamic runtime styles, and utility-first frameworks like Tailwind that eliminate custom CSS entirely — each with distinct trade-offs in performance, maintainability, and framework compatibility.

Responsive Design Fundamentals

Responsive design combines the viewport meta tag, media queries, fluid units (%, vw, rem, clamp()), and mobile-first methodology to create layouts that adapt gracefully from mobile screens to large desktops.

Core Web Vitals & Performance Metrics

Core Web Vitals are Google's three key metrics (LCP, INP, CLS) that measure real-world user experience for loading speed, interactivity, and visual stability, directly impacting search rankings.

Real-Time System Architecture

Real-time frontend architecture enables instant data updates without page refreshes — choosing between WebSockets, Server-Sent Events, and long polling depends on whether your communication is bidirectional, and building features like presence indicators, notifications, and collaborative editing requires understanding event-driven patterns and conflict resolution.

Component Architecture at Scale

Scaling a component library beyond a handful of components requires deliberate architectural decisions — design systems, atomic design hierarchies, compound and headless component patterns, prop API design, versioning strategies, and documentation-driven development.

Data Layer Architecture

The data layer determines how a frontend application fetches, caches, normalizes, and synchronizes data — separating client state from server state and choosing the right fetching and caching strategies is critical for maintainable, performant applications.

Interview Tips

  • Focus on output-based JS questions — practice predicting console output for closures, hoisting, promises, this keyword, and event loop scenarios
  • The machine coding round is critical for SDE-1 — practice building React components from scratch under time pressure (autocomplete, infinite scroll, order tracker)
  • For SDE-2, expect to implement hooks from scratch (useState, useEffect) — understand the closure-based internals and index-based tracking
  • Be ready to explain React's diffing algorithm and Virtual DOM in depth — Zomato values deep understanding of React internals
  • Real-time features (WebSockets, polling, live updates) come up frequently given Zomato's food delivery product
  • Prepare strong ownership stories for the EM round — 'Tell me about a time you disagreed with a team decision' is commonly asked
  • Frontend system design questions often relate to Zomato's product — prepare designs for delivery tracking, restaurant search, and notification systems
  • Zomato uses Next.js and Tailwind CSS — familiarity with their tech stack shows genuine interest and preparation

Job Search Tips

  • Apply at zomato.com/careers — filter for Frontend Engineering roles
  • Zomato is active on LinkedIn — follow their engineering team and engage with their tech content
  • Employee referrals are highly valued — connect with Zomato engineers on LinkedIn for referrals
  • Check the Zomato tech blog and engineering talks to understand their technical challenges at scale
  • Zomato hires from LinkedIn, Naukri, and their careers page — apply on multiple channels
  • For senior roles, experience with real-time systems, food-tech or e-commerce frontends, or design systems strengthens your application

Interview information is curated from publicly available sources and may not reflect current processes.

All company names and trademarks are the property of their respective owners. JS Guide is not affiliated with, endorsed by, or sponsored by any of the companies listed. Use of company names is for informational and educational purposes only.