The short version
The list
- 1
What is the Virtual DOM and how does it work?
An in-memory tree representation of the actual DOM. React keeps two virtual trees: current (rendered) + next (after state/props change), diffs them via the reconciliation algorithm, and applies only the minimum set of changes to the real DOM. Result: fewer expensive real-DOM operations than directly manipulating it.
Why it matters: Asked at ~85% of Pune React fresher rounds. Mention the React Fiber reconciler + concurrent rendering (React 18+) as senior-fresher signal.
Best for: First-pass concepts screening; expected fluency.
- 2
Explain the difference between state and props.
Props: read-only data passed from parent to child component (one-way data flow). State: component-internal data that triggers re-render when changed via setState (class) or the setter from useState (hooks). Props are like function arguments; state is like local variables that survive re-renders.
Why it matters: Asked at ~80% of Pune rounds. Common follow-up: 'should I lift state up?' — yes, when multiple sibling components need the same state.
Best for: Foundation data-flow question.
- 3
What's the difference between useState and useReducer?
useState fits simple state with independent updates (boolean toggle, counter, form field). useReducer fits complex state where multiple values change together (form with validation, multi-step wizard), or where state transitions follow well-defined actions (Redux-like pattern). Cleaner for testing complex logic + easier to reason about state transitions.
Why it matters: Asked at ~55% of Pune product company rounds. Mention dispatch pattern + reducer purity (no side effects).
Best for: Demonstrating beyond-basic hooks understanding.
- 4
Explain useEffect with its dependency array.
useEffect runs side effects after render: data fetching, subscriptions, manual DOM mutations. Dependency array controls when: empty [] runs once after mount; [a, b] runs when a or b changes; omitted runs after every render. Cleanup function in the return handles unmount + dependency-change cleanup.
Why it matters: Asked at ~75% of Pune rounds. Common gotcha: 'why is my useEffect causing infinite loop?' (state set in effect + state in dep array = loop).
Best for: Hooks core concept; expected at every fresher round.
- 5
What's the difference between controlled and uncontrolled components?
Controlled: form input value lives in React state via value + onChange (one source of truth — React owns the data). Uncontrolled: input value lives in the DOM, accessed via refs (React doesn't track it directly). Modern React + form libraries (React Hook Form) blend both for performance.
Why it matters: Asked at ~50% of Pune full-stack rounds. Forms are the most-touched UI surface in Pune SaaS work; controlled is the safer default.
Best for: Forms / data-entry interview focus.
- 6
What is the Context API and when would you use it?
Context lets you share data across the component tree without prop drilling. Create a Context, wrap a tree in a Provider with a value, consume via useContext in any descendant. Best for low-frequency-change data (theme, current user, locale). Don't overuse — every Context change re-renders ALL consumers; not a Redux replacement.
Why it matters: Asked at ~50% of Pune rounds. Common follow-up: 'when would you reach for Redux/Zustand instead?' (high-frequency updates + complex state).
Best for: State-management architecture question.
- 7
Explain React.memo, useMemo, and useCallback.
React.memo: skip re-rendering a component if props are shallowly equal. useMemo: cache a computed value across renders; recompute only when deps change. useCallback: cache a function reference across renders; same function unless deps change. All three are performance optimisations — don't apply by default; profile first.
Why it matters: Asked at ~45% of Pune rounds. Mention the 'premature optimisation' trap — overusing memoisation hurts more than it helps.
Best for: Performance optimisation depth; differentiates beyond fresher tier.
- 8
What are React keys and why do they matter?
Unique identifiers that help React's reconciler track items across renders. Without keys (or with index keys on dynamic lists), React can't reliably tell which items moved/added/removed — causes stale state in inputs, wrong items animated, focus loss. Use stable IDs from your data (id field), not array indexes.
Why it matters: Asked at ~55% of Pune rounds. Common bug fix question: 'why does the wrong row's input show stale value when I delete one?' — answer is array-index keys.
Best for: List-rendering correctness; common debugging interview.
- 9
How do you handle data fetching in React?
Three patterns: (1) useEffect + useState (vanilla — simple but boilerplate). (2) Data-fetching library (TanStack Query, SWR) — handles caching, retries, dedup, stale-while-revalidate. (3) Framework-level data fetching (Next.js Server Components, Remix loaders). Production-grade: a library like TanStack Query is the modern default; raw useEffect for one-off fetches.
Why it matters: Asked at ~60% of Pune product company rounds. Services majors usually accept the vanilla pattern; product cos screen for library awareness.
Best for: Production-readiness signal; common architecture question.
- 10
How do you test React components?
Standard stack: React Testing Library (component behaviour from user perspective) + Vitest or Jest (test runner). Test what users see + do: render → query by accessible name/role/label → fire events → assert visible outcome. Avoid testing implementation details (state, internal calls). Mention MSW for mocking API calls.
Why it matters: Asked at ~40% of Pune rounds. Product companies screen depth; services majors check awareness. Mention `screen.getByRole` over `getByTestId` as senior-fresher signal.
Best for: Engineering discipline; product-company differentiator.
How we built this list
Questions ranked by interview-frequency data from Archer Infotech's placement-cell debriefs over 17 years across Pune services majors (Persistent, Capgemini, Mindtree, Tech Mahindra, Cognizant, TCS Pune) and product companies (Druva, Helpshift, BrowserStack, GUVI, Persistent product). Frequencies reflect 2024-2026 cycles; older Class components + lifecycle method depth has been deprioritised as hooks dominate modern Pune React work.
FAQs
Common questions about react interview qs.
Do I need to know class components for Pune React fresher interviews?
Conceptual awareness yes; deep depth no. Pune React work in 2024-2026 is overwhelmingly hooks-first; most production codebases are 90%+ functional components. You should be able to explain that lifecycle methods (componentDidMount, componentWillUnmount) map to useEffect, but you don't need to write class components day-to-day. Spend 80% of prep on hooks, 20% on awareness.
Which state management library should I learn for Pune React jobs?
Order of priority: useState + useContext (built-in) first → TanStack Query for server state → Zustand for client state (lightweight, easier than Redux) → Redux Toolkit for complex apps. Pune product companies mostly use TanStack Query + Zustand or Context for new work; services majors still use Redux at established codebases. Learn TanStack Query + Zustand for modern signal.
Do I need to know Next.js for Pune React fresher interviews?
Increasingly yes for product company and SaaS-targeted roles; less critical at services majors. Next.js + React Server Components is the modern Pune full-stack frontend default at product startups. Learning Next.js basics (file-system routing, server vs client components, data fetching patterns) adds ~3-4 weeks but materially improves product-company-targeted interview signal.
What's the most-failed React question at Pune fresher interviews?
useEffect dependency array pitfalls. Candidates know useEffect runs on render but miss: (1) infinite loops from missing deps, (2) stale closures from missing deps, (3) over-running from incorrect deps. Walk through 3 examples — the 'fetch on mount only' pattern (`[]`), the 'fetch when ID changes' pattern (`[id]`), and the 'avoid infinite loop' debug pattern.