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.
55
Questions
28
Day Plan
5
Stages
21
Topics
Frontend Engineer
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
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
Defines frontend architecture across teams, drives cross-team technical strategy, establishes engineering best practices, and leads initiatives for real-time features and design systems.
Based on publicly available information. Actual processes may vary by team and role.
Initial call covering role expectations, experience overview, motivation for joining Zomato, notice period, and salary expectations.
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.
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).
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.
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.
28-day study plan across 4 phases
Questions to practice:
Questions to practice:
Topics to study:
Questions to practice:
Topics to study:
Questions to practice:
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?
How does JavaScript hoisting work?
What is a closure in JavaScript and why are they useful?
What are Promises in JavaScript and how do they work?
How do async/await work and how do they relate to Promises?
Explain the JavaScript Event Loop and how it handles asynchronous operations.
How does the 'this' keyword work in JavaScript?
What is the difference between microtasks and macrotasks in JavaScript?
What are Promise.all, Promise.race, Promise.allSettled, and Promise.any, and when do you use each?
How do debounce and throttle work, and when would you use each?
What are call, apply, and bind and how do they differ?
What is the difference between block scope and function scope?
How do you implement data polling in JavaScript?
How would you implement a debounce function from scratch with advanced features?
How would you implement a simplified Promise from scratch?
What is requestIdleCallback and how does it compare to other scheduling APIs?
How do WebSockets work and when would you use them over HTTP?
How would you implement Function.prototype.bind from scratch?
How would you implement Promise.all and Promise.race from scratch?
What is the difference between functional and class components in React?
What is the Virtual DOM and how does it work?
Explain the useState and useEffect hooks and their common patterns.
What is React Context and when should you use it?
What are custom hooks and how do you create them?
What is useRef and when should you use it?
How do useSelector and useDispatch work in React-Redux?
How would you implement a useLocalStorage custom hook?
How would you implement a useFetch custom hook?
How do React component lifecycle methods map to hooks in functional components?
When should you use Context API vs Redux for state management?
Build an autocomplete/typeahead search component in React that fetches suggestions from an API with debouncing, keyboard navigation, and highlighted matching text.
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.
Explain React.memo, useMemo, and useCallback. When should each be used?
How does React's reconciliation algorithm work?
Explain common React patterns: Compound Components, Render Props, and Custom Hooks.
What are Higher-Order Components (HOCs) in React, and why are they less commonly used today?
What is Redux and Redux Thunk, and how do they manage application state and async operations?
How would you design and implement a reusable Pagination component in React?
How does list virtualization (windowing) work in React and when should you use it?
Explain React's hydration process and common hydration mismatch issues.
Explain React's diffing algorithm in detail. How does it achieve O(n) complexity?
Implement a basic version of useState from scratch.
Implement a basic version of useEffect from scratch.
What are Core Web Vitals and why do they matter?
How do you make a website responsive using CSS?
What are the advantages of utility-first CSS (Tailwind) over CSS-in-JS?
What makes a good component API for a design system?
What is the difference between client state and server state?
Design an autocomplete/typeahead search component
Design a real-time notification system for a web application
How do you design a component library / design system for multiple teams?
Design a social media news feed with infinite scroll
Design a food delivery tracking page with real-time updates
Design an offline-first web application with sync capabilities
Design a real-time chat application like Slack or Messenger
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 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.