Swiggy is India's leading food delivery and quick commerce platform, powering Instamart, Genie, and Dineout across 500+ cities. Their frontend team builds the consumer-facing progressive web app, restaurant partner dashboards, and real-time delivery tracking interfaces using React, Redux, TypeScript, and React Native — with 700+ React components powering the web experience.
59
Questions
28
Day Plan
4
Stages
23
Topics
Frontend Engineer
Builds React components and user interfaces for Swiggy's consumer web app, restaurant partner dashboard, and delivery tracking features. Works with React, Redux, and TypeScript across the 700+ component web platform.
Senior Frontend Engineer
Leads frontend feature development, contributes to architecture decisions, builds shared component libraries, and mentors junior engineers. Drives performance optimization for consumer-facing experiences and real-time delivery tracking.
Staff Frontend Engineer
Defines frontend architecture across teams, drives cross-team technical strategy, establishes engineering best practices, and leads initiatives for real-time features, design systems, and platform scalability.
Based on publicly available information. Actual processes may vary by team and role.
HackerRank-based assessment. For SDE-1/Intern: 1 JavaScript coding question (polyfills like Promise.race), 1 React question (API calls, pagination, search/sorting, fixing performance bugs), and 10-12 CSS MCQs. For SDE-2: a single React coding problem to be solved using TypeScript. Practice HackerRank's React domain problems to prepare.
Build a working UI feature from scratch under time pressure. Can be React or Vanilla JavaScript — both have been asked. Past problems include: OTP input system, autosuggestion/autocomplete with API, shopping cart with search/filters/stock management/pagination, e-commerce product listing page, form validation for credit card payment page, and infinite scroll component. Focus on clean component design, state management, and API integration.
Two LeetCode Easy-Medium problems to be coded in JavaScript (not language-agnostic). Topics include arrays, maps, string manipulation, polyfill implementations (JSON.stringify, Function.prototype.bind, Promise.race), regular expressions, currying, and debounce/throttle. Past confirmed questions: Longest Palindromic Substring, Reverse Integer. An alternate interview track replaces the machine coding round with a second DSA round.
Deep-dive into past projects, technical decisions, and ownership stories using the STAR method. Swiggy values candidates who demonstrate ownership, bias for action, and curiosity. For SDE-2+, includes frontend system design discussion — designing Swiggy's restaurant page with real-time order updates, component architecture, state management, data fetching strategies, caching, and performance optimization. Also covers CI/CD pipelines, event loop internals, and React debugging approaches.
Total process duration: 2-4 weeks
Swiggy has two interview tracks for frontend roles: Track 1 (OA → Machine Coding → DSA → Hiring Manager) and Track 2 (OA → DSA → DSA → Hiring Manager). Unlike Zomato, Swiggy includes a dedicated DSA round for frontend roles — practice LeetCode Easy-Medium problems in JavaScript specifically. The machine coding round can require either React or vanilla JavaScript, so be prepared for both. For SDE-3 (L8) roles, expect 6 rounds including separate LLD and HLD rounds with company-specific scenarios (e.g., Swiggy serviceability design, notification system architecture).
28-day study plan across 4 phases
Questions to practice:
Questions to practice:
Questions to practice:
Questions to practice:
Questions relevant to preparing for frontend interviews at Swiggy, based on their known tech stack and common frontend interview patterns.
What is the difference between var, let, and const in JavaScript?
What is the difference between map(), filter(), and reduce() array methods?
How does JavaScript hoisting work?
What is event delegation in JavaScript and why is it useful?
What are polyfills and how do you implement Array.prototype.map from scratch?
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 is currying and partial application in JavaScript?
What are call, apply, and bind and how do they differ?
What is the difference between block scope and function scope?
Explain event bubbling, capturing, and how stopPropagation works.
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 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.
Currying & Partial Application
Currying transforms a function with multiple arguments into a sequence of single-argument functions, while partial application fixes some arguments upfront and returns a function expecting the rest.
Arrays
Understanding arrays in javascript
Events
DOM events flow through three phases — capture, target, and bubble — and event delegation leverages bubbling to handle events on dynamic child elements with a single parent listener.
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.
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.