{"id":10074,"date":"2025-09-17T14:11:54","date_gmt":"2025-09-17T08:41:54","guid":{"rendered":"https:\/\/namastedev.com\/blog\/?p=10074"},"modified":"2025-09-17T14:11:54","modified_gmt":"2025-09-17T08:41:54","slug":"top-react-interview-questions-2025","status":"publish","type":"post","link":"https:\/\/namastedev.com\/blog\/top-react-interview-questions-2025\/","title":{"rendered":"Top React Interview Questions (2025)"},"content":{"rendered":"\n<!DOCTYPE html>\n<html>\n\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>React Blind 75<\/title>\n  <link rel=\"stylesheet\" href=\"https:\/\/stackedit.io\/style.css\" \/>\n<\/head>\n\n<body class=\"stackedit\">\n<p>This guide is a carefully curated collection of <strong>75 React interview questions<\/strong> designed to help learners build a deep understanding of React and confidently crack technical interviews at product-based companies, startups, and top-tier organizations.<\/p>\n<p>The questions are structured progressively, starting from the fundamentals and moving toward advanced concepts, including state management, hooks, performance optimization, server-side rendering, error handling, and more. Each question is accompanied by:<\/p>\n<ol>\n<li>The full question text.<\/li>\n<li>The topic it belongs to.<\/li>\n<li>Difficulty level (Easy \/ Intermediate \/ Advanced).<\/li>\n<li>A detailed explanation with code examples where applicable.<\/li>\n<li>Common interview scenarios where the question might arise.<\/li>\n<li>Additional best practices, pitfalls, and optimization tips where relevant.<\/li>\n<\/ol>\n<p>Whether you\u2019re preparing for your first React interview or aiming for a senior frontend role, this guide covers everything you need to confidently discuss React concepts, debug problems, and architect scalable solutions.<\/p>\n<p><strong>How to use this guide:<\/strong><\/p>\n<ul>\n<li>Study each question thoroughly.<\/li>\n<li>Write and practice coding examples yourself.<\/li>\n<li>Revise the best practices and pitfalls.<\/li>\n<li>Mock interviews using the sample scenarios provided.<\/li>\n<li>Reinforce learning by building small projects using the concepts covered.<\/li>\n<\/ul>\n<p>With consistent practice and understanding, you\u2019ll be well-equipped to answer React-related interview questions with clarity, confidence, and depth.<\/p>\n<p>Let\u2019s begin this journey toward mastering React!<\/p>\n<hr>\n<h3 id=\"what-is-react-describe-the-benefits-of-react--react-basics--easy\">1. <strong>What is React? Describe the benefits of React<\/strong> | React Basics | Easy<\/h3>\n<p>React is a JavaScript library created by Facebook for building user interfaces, especially single-page applications (SPAs).<\/p>\n<p>It helps developers build reusable UI components that can manage their own state, which makes it easier to build complex applications.<\/p>\n<p>Key features include:<\/p>\n<ul>\n<li>\n<p><strong>Component-based architecture:<\/strong> Developers can break the UI into small, reusable components.<\/p>\n<\/li>\n<li>\n<p><strong>Virtual DOM:<\/strong> React updates the UI efficiently by calculating differences between the new and old DOM trees.<\/p>\n<\/li>\n<li>\n<p><strong>Declarative UI:<\/strong> You describe how the UI should look for any given state, and React manages the rendering.<\/p>\n<\/li>\n<li>\n<p><strong>One-way data binding:<\/strong> Data flows from parent to child components, making state management predictable.<\/p>\n<\/li>\n<li>\n<p><strong>JSX syntax:<\/strong> Allows mixing HTML and JavaScript, making component structure more readable.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Welcome<\/span><span class=\"token punctuation\">(<\/span>props<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Hello<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span>props<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><span class=\"token operator\">!<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Welcome<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>Alice<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> App<span class=\"token punctuation\">;<\/span>\n\n<\/code><\/pre>\n<p>In this example, the <code>Welcome<\/code> component takes a <code>name<\/code> prop and renders it dynamically.<\/p>\n<p><strong>Interview Scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Explaining React\u2019s role in a web application during a technical round.<\/p>\n<\/li>\n<li>\n<p>Answering why React is preferred over other libraries\/frameworks for SPA development.<\/p>\n<\/li>\n<li>\n<p>Discussing how reusable components can help scale applications.<\/p>\n<\/li>\n<li>\n<p>Talking about performance optimizations using Virtual DOM in a system design interview.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-difference-between-react-node-react-element-and-a-react-component--react-core-concepts--easy\">2. <strong>What is the difference between React Node, React Element, and a React Component?<\/strong> | React Core Concepts | Easy<\/h3>\n<p>In React:<\/p>\n<ul>\n<li>\n<p>A <strong>React Node<\/strong> is anything that can be rendered, such as a React element, string, number, array, or <code>null<\/code>.<\/p>\n<\/li>\n<li>\n<p>A <strong>React Element<\/strong> is an immutable object that describes what should appear in the UI. It\u2019s created using JSX or <code>React.createElement()<\/code>.<\/p>\n<\/li>\n<li>\n<p>A <strong>React Component<\/strong> is a function or class that returns a React element and encapsulates logic and UI behavior.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token comment\">\/\/ React Element<\/span>\n<span class=\"token keyword\">const<\/span> element <span class=\"token operator\">=<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Hello<span class=\"token punctuation\">,<\/span> world<span class=\"token operator\">!<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/ React Component<\/span>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Greeting<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Hello<span class=\"token operator\">!<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/\/ Using the component<\/span>\n<span class=\"token keyword\">const<\/span> node <span class=\"token operator\">=<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Greeting<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n\n<\/code><\/pre>\n<p><strong>Interview Scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Clarifying the difference between various React constructs during an entry-level interview.<\/p>\n<\/li>\n<li>\n<p>Asking how React builds and renders components efficiently.<\/p>\n<\/li>\n<li>\n<p>Discussing the importance of immutability and declarative rendering.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-jsx-and-how-does-it-work--react-syntax--easy\">3. <strong>What is JSX and how does it work?<\/strong> | React Syntax | Easy<\/h3>\n<p>JSX (JavaScript XML) is a syntax extension that allows writing HTML-like code inside JavaScript. It makes defining UI structures more intuitive.<\/p>\n<p>JSX is not understood by browsers directly, so tools like Babel transpile it into <code>React.createElement()<\/code> calls.<\/p>\n<p>Example:<\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">const<\/span> element <span class=\"token operator\">=<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Hello<span class=\"token punctuation\">,<\/span> world<span class=\"token operator\">!<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>Is transpiled to:<\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token keyword\">const<\/span> element <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">createElement<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'div'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'Hello, world!'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p><strong>Interview Scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asking how JSX simplifies component development.<\/p>\n<\/li>\n<li>\n<p>Exploring how transpilers work with React code.<\/p>\n<\/li>\n<li>\n<p>Understanding how React internally manages element creation.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-difference-between-state-and-props-in-react--state-management--easy\">4. <strong>What is the difference between state and props in React?<\/strong> | State Management | Easy<\/h3>\n<ul>\n<li>\n<p><strong>State:<\/strong> Internal data managed by the component, can change over time.<\/p>\n<\/li>\n<li>\n<p><strong>Props:<\/strong> External data passed from parent components, read-only within the component.<\/p>\n<\/li>\n<\/ul>\n<p>Example:<\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">Counter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ state<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Count<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Counter<\/span> <span class=\"token attr-name\">initialCount<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ props can be passed here if needed<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Interview Scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asking how data flows in a React component hierarchy.<\/p>\n<\/li>\n<li>\n<p>Explaining why state and props serve different roles.<\/p>\n<\/li>\n<li>\n<p>Understanding how changes in state affect rendering.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-purpose-of-the-key-prop-in-react--lists--rendering--easy\">5. <strong>What is the purpose of the <code>key<\/code> prop in React?<\/strong> | Lists &amp; Rendering | Easy<\/h3>\n<p>The <code>key<\/code> prop helps React uniquely identify elements in a list. It optimizes rendering by tracking which items changed, were added, or removed.<\/p>\n<p>Example:<\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">const<\/span> items <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>\n  <span class=\"token punctuation\">{<\/span> id<span class=\"token punctuation\">:<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> value<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Apple'<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token punctuation\">{<\/span> id<span class=\"token punctuation\">:<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> value<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Banana'<\/span> <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">ItemList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>ul<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token punctuation\">{<\/span>items<span class=\"token punctuation\">.<\/span><span class=\"token function\">map<\/span><span class=\"token punctuation\">(<\/span>item <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">(<\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>li<\/span> <span class=\"token attr-name\">key<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>item<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>item<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>ul<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Interview Scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asking how React improves performance when rendering lists.<\/p>\n<\/li>\n<li>\n<p>Discussing how improper key usage can cause bugs.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-consequence-of-using-array-indices-as-the-value-for-key-in-react--rendering--lists--intermediate\">6. <strong>What is the consequence of using array indices as the value for <code>key<\/code> in React?<\/strong> | Rendering \/ Lists | Intermediate<\/h3>\n<p>Using array indices as keys in React lists can lead to bugs and performance issues because React uses keys to identify which items have changed, been added, or removed.<\/p>\n<ul>\n<li>Keys should be stable, predictable, and unique.<\/li>\n<li>If array indices are used as keys, reordering, adding, or removing items can confuse React during reconciliation.<\/li>\n<li>This can cause components to unnecessarily re-render or preserve incorrect state.<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">const<\/span> items <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">'Apple'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'Banana'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'Cherry'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n\nitems<span class=\"token punctuation\">.<\/span><span class=\"token function\">map<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">,<\/span> index<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">key<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>index<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>item<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>If items are reordered, React may reuse DOM nodes incorrectly, leading to UI inconsistencies.<\/p>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Use unique identifiers (like IDs) for keys.<\/li>\n<li>Avoid using indices unless the list is static and won\u2019t change order.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked to explain list rendering and key importance.<\/li>\n<li>Debugging a component that behaves incorrectly after array reordering.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-difference-between-controlled-and-uncontrolled-react-components--forms--state--intermediate\">7. <strong>What is the difference between controlled and uncontrolled React Components?<\/strong> | Forms \/ State | Intermediate<\/h3>\n<p>Controlled components are form inputs whose values are managed by React state. Uncontrolled components maintain their own internal state and are accessed via refs.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>Controlled:<\/strong> The state is the single source of truth. Input value is tied to <code>state<\/code> and updated via <code>onChange<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>Uncontrolled:<\/strong> Input value is stored in the DOM. Accessed using <code>ref<\/code> when needed.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example (Controlled):<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">ControlledInput<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>value<span class=\"token punctuation\">,<\/span> setValue<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">''<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>input<\/span> <span class=\"token attr-name\">value<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>value<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token attr-name\">onChange<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setValue<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">.<\/span>target<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Example (Uncontrolled):<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">UncontrolledInput<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> inputRef <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">useRef<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">handleClick<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token function\">alert<\/span><span class=\"token punctuation\">(<\/span>inputRef<span class=\"token punctuation\">.<\/span>current<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>input<\/span> <span class=\"token attr-name\">ref<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>inputRef<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>handleClick<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Show Value<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Use controlled components for form validation, complex forms, or dynamic updates.<\/li>\n<li>Use uncontrolled components for simple forms or when integrating with third-party libraries.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked to explain differences between controlled vs uncontrolled components.<\/li>\n<li>Asked when to use <code>ref<\/code> for form inputs.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-some-pitfalls-about-using-context-in-react--state-management--context--intermediate\">8. <strong>What are some pitfalls about using context in React?<\/strong> | State Management \/ Context | Intermediate<\/h3>\n<p>React Context provides a way to share global state, but improper usage can lead to performance and maintainability issues.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>Context updates propagate to all consuming components.<\/li>\n<li>Overuse can lead to unnecessary re-renders.<\/li>\n<li>Using large or frequently changing data in context may degrade performance.<\/li>\n<\/ul>\n<p><strong>Common pitfalls:<\/strong><\/p>\n<ul>\n<li>Putting too much state in a single context.<\/li>\n<li>Passing non-memoized objects as context values.<\/li>\n<li>Relying solely on context instead of external state management for complex apps.<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Memoize context values using <code>useMemo<\/code>.<\/li>\n<li>Split contexts to isolate frequently changing state.<\/li>\n<li>Use libraries like Redux or Zustand for complex scenarios.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked about performance issues with context.<\/li>\n<li>Asked to optimize a component consuming context for frequently updating data.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-the-benefits-of-using-hooks-in-react--hooks--functional-components--beginner\">9. <strong>What are the benefits of using hooks in React?<\/strong> | Hooks \/ Functional Components | Beginner<\/h3>\n<p>Hooks allow functional components to use state and other React features without writing classes.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>Simpler code:<\/strong> Eliminates the need for class components and lifecycle methods.<\/p>\n<\/li>\n<li>\n<p><strong>Reusable logic:<\/strong> Custom hooks allow encapsulating stateful logic.<\/p>\n<\/li>\n<li>\n<p><strong>Better readability:<\/strong> Clear separation of state and effects.<\/p>\n<\/li>\n<li>\n<p><strong>Functional approach:<\/strong> Encourages a functional programming style, making code easier to test and maintain.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> useState<span class=\"token punctuation\">,<\/span> useEffect <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Counter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token string\">`Count is: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>count<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">`<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<\/code><\/pre>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Use hooks only in functional components.<\/li>\n<li>Follow rules of hooks (top-level calls, no conditional calls).<\/li>\n<li>Extract reusable logic into custom hooks.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked why hooks replaced class components.<\/li>\n<li>Asked to refactor class component into functional component using hooks.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-the-rules-of-react-hooks--hooks--functional-components--intermediate\">10. <strong>What are the rules of React hooks?<\/strong> | Hooks \/ Functional Components | Intermediate<\/h3>\n<p>Hooks have rules to ensure predictable behavior and maintain component integrity.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<ol>\n<li>\n<p><strong>Call hooks at the top level:<\/strong> Don\u2019t call inside loops, conditions, or nested functions.<\/p>\n<\/li>\n<li>\n<p><strong>Call hooks only in React functions:<\/strong> Functional components or custom hooks.<\/p>\n<\/li>\n<li>\n<p><strong>Custom hooks must start with \u201cuse\u201d:<\/strong> Helps React identify hook calls.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Why rules matter:<\/strong><\/p>\n<ul>\n<li>Maintaining the order of hook calls ensures React can correctly preserve state across renders.<\/li>\n<li>Violating rules can lead to unpredictable behavior or errors.<\/li>\n<\/ul>\n<p><strong>Example (Incorrect use):<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">MyComponent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>someCondition<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>value<span class=\"token punctuation\">,<\/span> setValue<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u274c called conditionally<\/span>\n  <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Correct use:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">MyComponent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>value<span class=\"token punctuation\">,<\/span> setValue<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/always called<\/span>\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>someCondition<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token comment\">\/\/ logic<\/span>\n  <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked to explain why hooks must be top-level.<\/li>\n<li>Asked to identify why a component using hooks fails unexpectedly.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-difference-between-useeffect-and-uselayouteffect-in-react--hooks---side-effects--intermediate\">11. <strong>What is the difference between <code>useEffect<\/code> and <code>useLayoutEffect<\/code> in React?<\/strong> | Hooks &#8211; Side Effects | Intermediate<\/h3>\n<p><code>useEffect<\/code> and <code>useLayoutEffect<\/code> are two hooks in React used to perform side effects, such as data fetching, subscriptions, or DOM manipulations. Although they are similar in API, they differ in when they execute during the component lifecycle.<\/p>\n<h4 id=\"key-differences\"><strong>Key Differences:<\/strong><\/h4>\n\n<table>\n<thead>\n<tr>\n<th align=\"left\">Aspect<\/th>\n<th align=\"right\"><code>useEffect<\/code><\/th>\n<th align=\"right\"><code>useLayoutEffect<\/code><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"left\">Execution timing<\/td>\n<td align=\"right\">Runs after the browser has painted the UI<\/td>\n<td align=\"right\">Runs after DOM updates but before paint<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">Suitable for<\/td>\n<td align=\"right\">Data fetching, subscriptions, event listeners<\/td>\n<td align=\"right\">Measuring or synchronizing DOM elements before user sees it<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">Blocking behavior<\/td>\n<td align=\"right\">Doesn\u2019t block rendering<\/td>\n<td align=\"right\">Blocks rendering until executed<\/td>\n<\/tr>\n<\/tbody>\n<\/table><h4 id=\"example\">Example:<\/h4>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useState<span class=\"token punctuation\">,<\/span> useEffect<span class=\"token punctuation\">,<\/span> useLayoutEffect<span class=\"token punctuation\">,<\/span> useRef <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Example<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>width<span class=\"token punctuation\">,<\/span> setWidth<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> divRef <span class=\"token operator\">=<\/span> <span class=\"token function\">useRef<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useLayoutEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token comment\">\/\/ Runs before paint, ideal for measuring layout<\/span>\n    <span class=\"token function\">setWidth<\/span><span class=\"token punctuation\">(<\/span>divRef<span class=\"token punctuation\">.<\/span>current<span class=\"token punctuation\">.<\/span>offsetWidth<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Rendered with width:\"<\/span><span class=\"token punctuation\">,<\/span> width<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span>width<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">ref<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>divRef<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token attr-name\">style<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">{<\/span> width<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'50%'<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Resize me<span class=\"token operator\">!<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<h4 id=\"when-to-use-each\"><strong>When to use each:<\/strong><\/h4>\n<ul>\n<li>\n<p><strong><code>useEffect<\/code>:<\/strong><\/p>\n<ul>\n<li>Fetching data after initial render<\/li>\n<li>Adding event listeners or subscriptions<\/li>\n<li>Performing actions that don\u2019t affect layout calculations<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong><code>useLayoutEffect<\/code>:<\/strong><\/p>\n<ul>\n<li>Measuring DOM elements before paint<\/li>\n<li>Synchronously updating DOM styles<\/li>\n<li>Adjusting scroll position or animations before user interaction<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4 id=\"mistakes-to-avoid\"><strong>Mistakes to avoid:<\/strong><\/h4>\n<ul>\n<li>\n<p>Using <code>useLayoutEffect<\/code> for data fetching unnecessarily blocks rendering, causing a poor user experience.<\/p>\n<\/li>\n<li>\n<p>Forgetting to clean up effects like event listeners, which can cause memory leaks.<\/p>\n<\/li>\n<li>\n<p>Assuming both hooks behave the same &#8211; <code>useLayoutEffect<\/code> blocks paint, so it should be used carefully.<\/p>\n<\/li>\n<\/ul>\n<h4 id=\"best-practices\"><strong>Best practices:<\/strong><\/h4>\n<ul>\n<li>\n<p>Default to using <code>useEffect<\/code> unless layout measurements or synchronous DOM updates are required.<\/p>\n<\/li>\n<li>\n<p>Always clean up side effects in the return function to avoid resource leaks.<\/p>\n<\/li>\n<\/ul>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">handleResize<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* logic *\/<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n  window<span class=\"token punctuation\">.<\/span><span class=\"token function\">addEventListener<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'resize'<\/span><span class=\"token punctuation\">,<\/span> handleResize<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> window<span class=\"token punctuation\">.<\/span><span class=\"token function\">removeEventListener<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'resize'<\/span><span class=\"token punctuation\">,<\/span> handleResize<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<h4 id=\"interview-scenarios\"><strong>Interview scenarios:<\/strong><\/h4>\n<ul>\n<li>\n<p>You are asked to explain how React manages updates and why <code>useLayoutEffect<\/code> might be necessary in animation-heavy applications.<\/p>\n<\/li>\n<li>\n<p>You are given a component that flickers when updated and asked to debug why the layout measurement might be happening too late.<\/p>\n<\/li>\n<li>\n<p>You are asked how to manage side effects in components and what the difference between synchronous and asynchronous updates is.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-purpose-of-callback-function-argument-format-of-setstate-in-react-and-when-should-it-be-used--state-management--intermediate\">12. <strong>What is the purpose of callback function argument format of <code>setState()<\/code> in React and when should it be used?<\/strong> | State Management | Intermediate<\/h3>\n<p>The callback function format of <code>setState()<\/code> ensures that state updates are calculated based on the most recent state and props. It\u2019s important when the new state depends on the current state because React batches updates asynchronously.<\/p>\n<h4 id=\"explanation\"><strong>Explanation:<\/strong><\/h4>\n<p>React\u2019s <code>setState()<\/code> doesn\u2019t immediately update the state instead, it schedules an update. If you calculate the next state based on the current state directly, you may end up using a stale value.<\/p>\n<p>The callback format takes two arguments:<\/p>\n<ul>\n<li><code>prevState<\/code>: The state before the update<\/li>\n<li><code>props<\/code>: The latest props passed to the component<\/li>\n<\/ul>\n<p>This ensures your update logic always references the correct state.<\/p>\n<h4 id=\"example-1\">Example:<\/h4>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Counter<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">React<span class=\"token punctuation\">.<\/span>Component<\/span> <span class=\"token punctuation\">{<\/span>\n  state <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span> count<span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function-variable function\">increment<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">setState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>prevState<span class=\"token punctuation\">,<\/span> props<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\n      count<span class=\"token punctuation\">:<\/span> prevState<span class=\"token punctuation\">.<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">render<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Count<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>state<span class=\"token punctuation\">.<\/span>count<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>increment<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>If you used this instead, it could cause bugs:<\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">setState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\n  count<span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>state<span class=\"token punctuation\">.<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>Because multiple calls to <code>increment<\/code> might not correctly use the updated value of <code>count<\/code>.<\/p>\n<h4 id=\"when-should-it-be-used\"><strong>When should it be used:<\/strong><\/h4>\n<ul>\n<li>\n<p>When updating state based on previous state, such as toggling values, counters, or accumulative calculations.<\/p>\n<\/li>\n<li>\n<p>When updates need to ensure they are using the latest state, especially in event handlers or asynchronous operations.<\/p>\n<\/li>\n<\/ul>\n<h4 id=\"mistakes-to-avoid-1\"><strong>Mistakes to avoid:<\/strong><\/h4>\n<ul>\n<li>\n<p>Updating state directly using <code>this.state<\/code> instead of <code>prevState<\/code> may lead to inconsistent updates.<\/p>\n<\/li>\n<li>\n<p>Not recognizing that state updates are batched and asynchronous, especially in concurrent rendering.<\/p>\n<\/li>\n<\/ul>\n<h4 id=\"best-practices-1\"><strong>Best practices:<\/strong><\/h4>\n<ul>\n<li>Always use the callback format when the new state depends on previous values.<\/li>\n<li>Avoid side effects within <code>setState()<\/code> callbacks keep logic pure and predictable.<\/li>\n<\/ul>\n<h4 id=\"interview-scenarios-1\"><strong>Interview scenarios:<\/strong><\/h4>\n<ul>\n<li>Asked to implement a counter where multiple increments happen quickly.<\/li>\n<li>Asked to explain how React manages asynchronous state updates.<\/li>\n<li>Asked why certain bugs happen when state is updated based on stale values.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-does-the-dependency-array-of-useeffect-affect--hooks-side-effects--intermediate\">13. <strong>What does the dependency array of <code>useEffect<\/code> affect?<\/strong> | Hooks Side Effects | Intermediate<\/h3>\n<p>The dependency array determines when the effect should be re-executed after renders. It\u2019s crucial to manage this correctly to avoid unnecessary reruns or stale data.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>If the dependency array is empty (<code>[]<\/code>), the effect runs once after the initial render.<\/li>\n<li>If the array includes variables, the effect runs whenever one of them changes.<\/li>\n<li>If omitted, the effect runs after every render, which can lead to performance issues.<\/li>\n<\/ul>\n<h4 id=\"example-2\">Example:<\/h4>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useState<span class=\"token punctuation\">,<\/span> useEffect <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Timer<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Effect runs'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">const<\/span> interval <span class=\"token operator\">=<\/span> <span class=\"token function\">setInterval<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n      <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>c <span class=\"token operator\">=&gt;<\/span> c <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">clearInterval<\/span><span class=\"token punctuation\">(<\/span>interval<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ Empty array: effect runs once on mount<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Count<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>If we used <code>[count]<\/code>, it would re-run the effect on every count update, unnecessarily creating new intervals.<\/p>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>Forgetting to include all relevant dependencies, which can cause bugs due to stale closures.<\/li>\n<li>Adding too many dependencies, causing unnecessary rerenders.<\/li>\n<li>Omitting the array entirely, which makes effects run on every render.<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Include all dependencies that are referenced inside the effect to avoid stale data.<\/li>\n<li>Use <code>useCallback<\/code> or <code>useMemo<\/code> to stabilize functions or values used as dependencies.<\/li>\n<li>Use ESLint\u2019s <code>react-hooks\/exhaustive-deps<\/code> rule to catch missing dependencies.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked how effects can cause bugs due to stale closures.<\/li>\n<li>Asked how to handle API calls inside <code>useEffect<\/code>.<\/li>\n<li>Asked why developers should not omit the dependency array.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-useref-hook-in-react-and-when-should-it-be-used--hooks-refs--intermediate\">14. <strong>What is the <code>useRef<\/code> hook in React and when should it be used?<\/strong> | Hooks Refs | Intermediate<\/h3>\n<p><code>useRef<\/code> creates a persistent reference that doesn\u2019t cause rerenders when updated. It\u2019s commonly used to access DOM elements or keep mutable state across renders.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>Returns a mutable object <code>{ current: ... }<\/code>.<\/li>\n<li>Persists across renders, making it suitable for storing values without triggering updates.<\/li>\n<li>Useful for:\n<ul>\n<li>Accessing DOM nodes<\/li>\n<li>Storing previous state<\/li>\n<li>Holding intervals or timers<\/li>\n<li>Managing focus<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4 id=\"example-focus-input\">Example (Focus input):<\/h4>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useRef<span class=\"token punctuation\">,<\/span> useEffect <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">FocusInput<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> inputRef <span class=\"token operator\">=<\/span> <span class=\"token function\">useRef<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    inputRef<span class=\"token punctuation\">.<\/span>current<span class=\"token punctuation\">.<\/span><span class=\"token function\">focus<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>input<\/span> <span class=\"token attr-name\">ref<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>inputRef<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token attr-name\">type<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>text<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>Manipulating DOM directly (focus, scroll, measurements).<\/li>\n<li>Storing mutable values that should not cause rerenders.<\/li>\n<li>Keeping references to timers, WebSocket connections, or subscriptions.<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>Using <code>useRef<\/code> for state that should trigger UI updates use <code>useState<\/code> instead.<\/li>\n<li>Forgetting that <code>useRef<\/code> does not cause rerenders when its value changes.<\/li>\n<li>Overusing refs instead of proper state management.<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Use <code>useRef<\/code> for non-render affecting data.<\/li>\n<li>Keep ref logic outside of component state to avoid unnecessary complexity.<\/li>\n<li>Avoid using it as a substitute for state management when state-driven UI changes are required.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked to manage form input focus.<\/li>\n<li>Asked how to store previous render values without triggering rerenders.<\/li>\n<li>Asked how to manipulate DOM directly within functional components.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-usecallback-hook-in-react-and-when-should-it-be-used--hooks-performance-optimization--intermediate\">15. <strong>What is the <code>useCallback<\/code> hook in React and when should it be used?<\/strong> | Hooks Performance Optimization | Intermediate<\/h3>\n<p><code>useCallback<\/code> memoizes functions so that they are only recreated when dependencies change. It\u2019s a performance optimization that prevents unnecessary rerenders, especially in child components.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Functions in JavaScript are recreated every time a component rerenders. If a function is passed as a prop to a child, the child may rerender unnecessarily. <code>useCallback<\/code> ensures that the function reference stays stable unless its dependencies change.<\/p>\n<h4 id=\"example-3\">Example:<\/h4>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useState<span class=\"token punctuation\">,<\/span> useCallback <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Parent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">const<\/span> increment <span class=\"token operator\">=<\/span> <span class=\"token function\">useCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>c <span class=\"token operator\">=&gt;<\/span> c <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Child<\/span> <span class=\"token attr-name\">onIncrement<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>increment<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Child<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> onIncrement <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Child rendered\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>onIncrement<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>In this example, <code>Child<\/code> will not rerender unnecessarily because the <code>increment<\/code> function is memoized.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>Passing callbacks to optimized child components.<\/li>\n<li>Avoiding function recreation when dependencies are unchanged.<\/li>\n<li>Managing expensive event handlers.<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>Using <code>useCallback<\/code> indiscriminately it adds overhead and complexity without real benefits in simpler cases.<\/li>\n<li>Forgetting to include dependencies, leading to stale references.<\/li>\n<li>Overusing memoization without profiling.<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Use <code>useCallback<\/code> when functions are passed as props and you want to prevent rerenders.<\/li>\n<li>Include all relevant dependencies in the dependency array.<\/li>\n<li>Profile performance before over-optimizing.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked how to avoid unnecessary renders in performance-critical applications.<\/li>\n<li>Asked to explain how closures and stale references occur in hooks.<\/li>\n<li>Asked why memoization is important in component hierarchies.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-usememo-hook-in-react-and-when-should-it-be-used--performance-optimization--intermediate\">16. <strong>What is the <code>useMemo<\/code> hook in React and when should it be used?<\/strong> | Performance Optimization | Intermediate<\/h3>\n<p><code>useMemo<\/code> is a React hook that memoizes the result of a function so that it is only recalculated when its dependencies change. This helps avoid expensive computations on every render and improves performance.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>In React, computations or derived state that rely on props or state might be expensive. Without memoization, these computations would run every time the component rerenders. <code>useMemo<\/code> caches the result and recalculates only when dependencies change.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useState<span class=\"token punctuation\">,<\/span> useMemo <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>text<span class=\"token punctuation\">,<\/span> setText<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">''<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">const<\/span> factorial <span class=\"token operator\">=<\/span> <span class=\"token function\">useMemo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Calculating factorial...'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">computeFactorial<\/span><span class=\"token punctuation\">(<\/span>count<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Factorial <span class=\"token keyword\">of<\/span> <span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span> is <span class=\"token punctuation\">{<\/span>factorial<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>input<\/span> <span class=\"token attr-name\">value<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>text<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token attr-name\">onChange<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>e <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setText<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">.<\/span>target<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span> <span class=\"token attr-name\">placeholder<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>Type here<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">computeFactorial<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>n <span class=\"token operator\">&lt;=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> n <span class=\"token operator\">*<\/span> <span class=\"token function\">computeFactorial<\/span><span class=\"token punctuation\">(<\/span>n <span class=\"token operator\">-<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>In this example, changing <code>text<\/code> won\u2019t recalculate the factorial because the dependency array ensures it only recomputes when <code>count<\/code> changes.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>Avoid expensive computations on every render.<\/li>\n<li>Memoize derived data from props or state.<\/li>\n<li>Improve performance in large component trees.<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>Overusing <code>useMemo<\/code> for trivial computations where caching overhead outweighs the benefits.<\/li>\n<li>Not specifying the correct dependencies, which can lead to stale or incorrect results.<\/li>\n<li>Assuming <code>useMemo<\/code> always improves performance without profiling.<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Use it when you have expensive computations.<\/li>\n<li>Always include all dependencies that affect the computation.<\/li>\n<li>Profile performance to justify memoization.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked how to optimize performance when components rerender frequently.<\/li>\n<li>Asked to explain how memoization avoids unnecessary computations.<\/li>\n<li>Asked to contrast <code>useMemo<\/code> and <code>useCallback<\/code>.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-usereducer-hook-in-react-and-when-should-it-be-used--state-management--intermediate\">17. <strong>What is the <code>useReducer<\/code> hook in React and when should it be used?<\/strong> | State Management | Intermediate<\/h3>\n<p><code>useReducer<\/code> is a hook that manages complex state logic by using a reducer function. It\u2019s an alternative to <code>useState<\/code>, suitable when state has multiple sub-values or when the next state depends on the previous state.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>A reducer is a function that takes the current state and an action, and returns a new state. <code>useReducer<\/code> provides a more structured way of updating state, especially when state transitions are complex or require multiple branches of logic.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useReducer <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> initialState <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span> count<span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">reducer<\/span><span class=\"token punctuation\">(<\/span>state<span class=\"token punctuation\">,<\/span> action<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">switch<\/span><span class=\"token punctuation\">(<\/span>action<span class=\"token punctuation\">.<\/span>type<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">case<\/span> <span class=\"token string\">'increment'<\/span><span class=\"token punctuation\">:<\/span>\n      <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span> count<span class=\"token punctuation\">:<\/span> state<span class=\"token punctuation\">.<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">case<\/span> <span class=\"token string\">'decrement'<\/span><span class=\"token punctuation\">:<\/span>\n      <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span> count<span class=\"token punctuation\">:<\/span> state<span class=\"token punctuation\">.<\/span>count <span class=\"token operator\">-<\/span> <span class=\"token number\">1<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">default<\/span><span class=\"token punctuation\">:<\/span>\n      <span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Unknown action'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Counter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>state<span class=\"token punctuation\">,<\/span> dispatch<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useReducer<\/span><span class=\"token punctuation\">(<\/span>reducer<span class=\"token punctuation\">,<\/span> initialState<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Count<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>state<span class=\"token punctuation\">.<\/span>count<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token operator\">&lt;<\/span>button onClick<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">dispatch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> type<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'increment'<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token operator\">+<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token operator\">&lt;<\/span>button onClick<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">dispatch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> type<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'decrement'<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token operator\">-<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> Counter<span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>When state is an object with multiple properties.<\/li>\n<li>When state updates depend on the current state.<\/li>\n<li>When managing forms, complex UI interactions, or nested state.<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>Using it when <code>useState<\/code> is sufficient, adding unnecessary complexity.<\/li>\n<li>Forgetting to handle unknown actions, which may cause errors.<\/li>\n<li>Not memoizing the reducer function when needed.<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Define clear action types.<\/li>\n<li>Separate state logic from component logic for readability.<\/li>\n<li>Use context with <code>useReducer<\/code> to share state across components.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked to manage complex form states with multiple inputs.<\/li>\n<li>Asked to implement undo\/redo functionality using state history.<\/li>\n<li>Asked to refactor <code>useState<\/code> logic into <code>useReducer<\/code>.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-useid-hook-in-react-and-when-should-it-be-used--accessibility--forms--intermediate\">18. <strong>What is the <code>useId<\/code> hook in React and when should it be used?<\/strong> | Accessibility \/ Forms | Intermediate<\/h3>\n<p><code>useId<\/code> generates unique IDs that are stable across server and client renders. It is particularly useful for linking form elements, labels, and other accessibility-related attributes.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Generating unique IDs is important to prevent clashes when rendering forms or components multiple times. <code>useId<\/code> ensures IDs are unique even when server-side rendering (SSR) is used, which helps with hydration and accessibility.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useId <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">LoginForm<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> id <span class=\"token operator\">=<\/span> <span class=\"token function\">useId<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>form<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>label<\/span> <span class=\"token attr-name\">htmlFor<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>id<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Username<span class=\"token punctuation\">:<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>label<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>input<\/span> <span class=\"token attr-name\">id<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>id<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token attr-name\">type<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>text<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>form<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>Here, the <code>id<\/code> generated by <code>useId<\/code> ensures that the <code>label<\/code> is correctly associated with the <code>input<\/code>.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>Linking labels to form inputs.<\/li>\n<li>Generating unique IDs for accessibility attributes.<\/li>\n<li>Ensuring SSR compatibility with stable IDs.<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>Using random or incremental IDs that break during hydration.<\/li>\n<li>Forgetting to use <code>useId<\/code> when accessibility features require unique identifiers.<\/li>\n<li>Manually managing IDs in complex forms leading to duplication.<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Always use <code>useId<\/code> for form-related accessibility.<\/li>\n<li>Avoid global counters for generating IDs.<\/li>\n<li>Ensure IDs remain consistent across renders.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked to improve form accessibility.<\/li>\n<li>Asked how server-side rendering affects unique identifiers.<\/li>\n<li>Asked to explain how hydration issues arise in React.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-does-re-rendering-mean-in-react--rendering-concepts--easy\">19. <strong>What does re-rendering mean in React?<\/strong> | Rendering Concepts | Easy<\/h3>\n<p>Re-rendering refers to the process where React updates a component\u2019s output based on changes in its state or props. React recalculates the virtual DOM and updates the actual DOM to reflect those changes.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Whenever a component\u2019s state or props change, React schedules a rerender. It creates a new virtual DOM tree, compares it to the previous one using the reconciliation process, and applies only the differences to the real DOM.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useState <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Counter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Component rendered\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Count<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>Each time you click the button, the state changes, causing React to rerender the component.<\/p>\n<p><strong>When re-rendering happens:<\/strong><\/p>\n<ul>\n<li>State updates using <code>useState<\/code> or <code>setState<\/code>.<\/li>\n<li>Props change from a parent component.<\/li>\n<li>Context value changes.<\/li>\n<li>Force updates triggered programmatically.<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>Causing unnecessary renders by not memoizing functions or objects passed as props.<\/li>\n<li>Deeply nesting state and causing complex rerenders.<\/li>\n<li>Forgetting that every state change triggers a rerender.<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Lift state only when necessary.<\/li>\n<li>Use <code>React.memo<\/code> or <code>useCallback<\/code> to optimize rerenders.<\/li>\n<li>Keep state flat and minimal to reduce complexity.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked how React handles updates efficiently.<\/li>\n<li>Asked to explain why components rerender after state changes.<\/li>\n<li>Asked to debug performance issues related to unnecessary rerenders.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-react-fragments-used-for--jsx--rendering--easy\">20. <strong>What are React Fragments used for?<\/strong> | JSX \/ Rendering | Easy<\/h3>\n<p>React Fragments allow you to group multiple elements without adding extra nodes to the DOM. It\u2019s useful when you want to return multiple elements from a component without introducing unnecessary wrappers.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Normally, JSX requires a single parent element. React Fragments let you group elements without rendering extra DOM nodes, which can interfere with layout or styling.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">List<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Item <span class=\"token number\">1<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Item <span class=\"token number\">2<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Item <span class=\"token number\">3<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>This way, the component returns multiple list items without wrapping them in a <code>&lt;div&gt;<\/code> or other container.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>Grouping elements in a list without extra DOM nodes.<\/li>\n<li>Avoiding unnecessary wrappers that complicate styling or structure.<\/li>\n<li>Returning multiple elements from a component.<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>Forgetting to wrap elements when JSX expects a single parent.<\/li>\n<li>Using extra <code>&lt;div&gt;<\/code> containers that break CSS layouts.<\/li>\n<li>Overusing fragments where semantic HTML elements are better.<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Use fragments when grouping elements that don\u2019t need a container.<\/li>\n<li>Keep your component tree clean and avoid unnecessary DOM nodes.<\/li>\n<li>Use <code>React.Fragment<\/code> if you need to attach keys in lists.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked how to return multiple elements from a component.<\/li>\n<li>Asked why unnecessary DOM nodes can cause styling issues.<\/li>\n<li>Asked to explain differences between fragments and regular containers.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-forwardref-in-react-used-for--refs--advanced-patterns--intermediate\">21. <strong>What is <code>forwardRef()<\/code> in React used for?<\/strong> | Refs \/ Advanced Patterns | Intermediate<\/h3>\n<p><code>forwardRef()<\/code> is a React API that allows a component to forward its ref to one of its child components. This is useful when the parent component needs direct access to a DOM element or a child component\u2019s instance.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Normally, refs are used to directly access DOM elements or components. However, when you wrap a component, its ref doesn\u2019t automatically get passed down. <code>forwardRef()<\/code> lets you explicitly forward the ref to a specific child, enabling scenarios like focusing inputs or managing animations.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> forwardRef<span class=\"token punctuation\">,<\/span> useRef <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> CustomInput <span class=\"token operator\">=<\/span> <span class=\"token function\">forwardRef<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>props<span class=\"token punctuation\">,<\/span> ref<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>input<\/span> <span class=\"token attr-name\">ref<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>ref<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token spread\"><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">...<\/span><span class=\"token attr-value\">props<\/span><span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> inputRef <span class=\"token operator\">=<\/span> <span class=\"token function\">useRef<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">focusInput<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    inputRef<span class=\"token punctuation\">.<\/span>current<span class=\"token punctuation\">.<\/span><span class=\"token function\">focus<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>CustomInput<\/span> <span class=\"token attr-name\">ref<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>inputRef<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token attr-name\">placeholder<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>Type here<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>focusInput<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Focus Input<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> App<span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>Here, <code>CustomInput<\/code> forwards the ref to the <code>&lt;input&gt;<\/code> element, enabling <code>App<\/code> to call <code>focus()<\/code>.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>When you need to expose a DOM element or instance to a parent component.<\/p>\n<\/li>\n<li>\n<p>For building reusable input components that need focus or selection management.<\/p>\n<\/li>\n<li>\n<p>When integrating with third-party libraries that require direct DOM manipulation.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Forgetting to forward the ref and expecting it to work automatically.<\/p>\n<\/li>\n<li>\n<p>Using <code>forwardRef()<\/code> when it\u2019s unnecessary, adding complexity.<\/p>\n<\/li>\n<li>\n<p>Not handling the ref correctly in functional components.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use <code>forwardRef()<\/code> for wrapper components that need to expose internal elements.<\/p>\n<\/li>\n<li>\n<p>Document how the forwarded ref is used in the component\u2019s API.<\/p>\n<\/li>\n<li>\n<p>Combine <code>forwardRef()<\/code> with <code>useImperativeHandle<\/code> when you need to expose custom instance methods.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked to explain how to control a child input from the parent.<\/p>\n<\/li>\n<li>\n<p>Asked to implement reusable form fields with ref forwarding.<\/p>\n<\/li>\n<li>\n<p>Asked to expose methods in functional components.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-do-you-reset-a-components-state-in-react--state-management--beginner\">22. <strong>How do you reset a component\u2019s state in React?<\/strong> | State Management | Beginner<\/h3>\n<p>Resetting a component\u2019s state means restoring it to its initial values, often used after form submissions or when navigating between views.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>State in React is mutable through <code>setState<\/code> or the <code>useState<\/code> hook. To reset it, you simply assign the initial state again. This ensures the component\u2019s UI reflects the reset state.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useState <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> initialState <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span> name<span class=\"token punctuation\">:<\/span> <span class=\"token string\">''<\/span><span class=\"token punctuation\">,<\/span> email<span class=\"token punctuation\">:<\/span> <span class=\"token string\">''<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Form<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>formData<span class=\"token punctuation\">,<\/span> setFormData<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span>initialState<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">handleReset<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token function\">setFormData<\/span><span class=\"token punctuation\">(<\/span>initialState<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token operator\">&lt;<\/span>input\n        value<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span>formData<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span>\n        onChange<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setFormData<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> <span class=\"token operator\">...<\/span>formData<span class=\"token punctuation\">,<\/span> name<span class=\"token punctuation\">:<\/span> e<span class=\"token punctuation\">.<\/span>target<span class=\"token punctuation\">.<\/span>value <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n        placeholder<span class=\"token operator\">=<\/span><span class=\"token string\">\"Name\"<\/span>\n      <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token operator\">&lt;<\/span>input\n        value<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span>formData<span class=\"token punctuation\">.<\/span>email<span class=\"token punctuation\">}<\/span>\n        onChange<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setFormData<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> <span class=\"token operator\">...<\/span>formData<span class=\"token punctuation\">,<\/span> email<span class=\"token punctuation\">:<\/span> e<span class=\"token punctuation\">.<\/span>target<span class=\"token punctuation\">.<\/span>value <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n        placeholder<span class=\"token operator\">=<\/span><span class=\"token string\">\"Email\"<\/span>\n      <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>handleReset<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Reset<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> Form<span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>Clicking the reset button clears the form fields.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>After submitting or canceling a form.<\/p>\n<\/li>\n<li>\n<p>When switching between different data views.<\/p>\n<\/li>\n<li>\n<p>For clearing controlled inputs.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Mutating the state directly instead of using <code>setState<\/code>.<\/p>\n<\/li>\n<li>\n<p>Using stale state when resetting due to incorrect reference copying.<\/p>\n<\/li>\n<li>\n<p>Forgetting to reset nested objects properly.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Store initial state in a constant and reuse it.<\/p>\n<\/li>\n<li>\n<p>Avoid mutating state; always create a new object when resetting.<\/p>\n<\/li>\n<li>\n<p>Ensure form fields are controlled with <code>value<\/code> and <code>onChange<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked to implement a form that can be reset.<\/p>\n<\/li>\n<li>\n<p>Asked how to manage controlled form inputs.<\/p>\n<\/li>\n<li>\n<p>Asked about state immutability and how to ensure state is updated correctly.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"why-does-react-recommend-against-mutating-state--state-management--best-practices--intermediate\">23. <strong>Why does React recommend against mutating state?<\/strong> | State Management \/ Best Practices | Intermediate<\/h3>\n<p>React\u2019s rendering system relies on detecting changes in state. If state is mutated directly, React may not detect changes, causing rendering bugs and stale UI.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>React uses shallow comparison to determine if state or props have changed. When you mutate state directly, you don\u2019t create a new reference, so React may not rerender the component even though data has changed.<\/p>\n<p><strong>Example of incorrect approach:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>items<span class=\"token punctuation\">,<\/span> setItems<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">addItem<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  items<span class=\"token punctuation\">.<\/span><span class=\"token function\">push<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">4<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ Direct mutation!<\/span>\n  <span class=\"token function\">setItems<\/span><span class=\"token punctuation\">(<\/span>items<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ React might not rerender<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Correct approach:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">addItem<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token function\">setItems<\/span><span class=\"token punctuation\">(<\/span>prevItems <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token operator\">...<\/span>prevItems<span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ Create new array<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Why mutation causes issues:<\/strong><\/p>\n<ul>\n<li>\n<p>React compares old and new state by reference.<\/p>\n<\/li>\n<li>\n<p>Mutated state keeps the same reference, causing skipped renders.<\/p>\n<\/li>\n<li>\n<p>May lead to bugs where UI doesn\u2019t update correctly.<\/p>\n<\/li>\n<\/ul>\n<p><strong>When this becomes a problem:<\/strong><\/p>\n<ul>\n<li>\n<p>Complex state objects or arrays.<\/p>\n<\/li>\n<li>\n<p>Nested state that\u2019s deeply updated.<\/p>\n<\/li>\n<li>\n<p>Optimized components using <code>React.memo<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Mutating arrays with <code>push<\/code> or <code>splice<\/code> instead of creating new arrays.<\/p>\n<\/li>\n<li>\n<p>Mutating objects by assigning properties directly.<\/p>\n<\/li>\n<li>\n<p>Mixing mutable and immutable patterns.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Always create a new object or array when updating state.<\/p>\n<\/li>\n<li>\n<p>Use helper functions like <code>map<\/code>, <code>filter<\/code>, or <code>spread syntax<\/code>.<\/p>\n<\/li>\n<li>\n<p>Embrace immutability for predictable rendering and debugging.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked why state changes sometimes don\u2019t reflect in the UI.<\/p>\n<\/li>\n<li>\n<p>Asked to identify why a component doesn\u2019t rerender after updating state.<\/p>\n<\/li>\n<li>\n<p>Asked how immutability helps in debugging or optimizing performance.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-error-boundaries-in-react-for--error-handling--intermediate\">24. <strong>What are error boundaries in React for?<\/strong> | Error Handling | Intermediate<\/h3>\n<p>Error boundaries are special React components that catch errors in their child components during rendering, lifecycle methods, or constructors, preventing the entire app from crashing.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>React\u2019s component tree doesn\u2019t handle errors by default. Error boundaries act as a safeguard by catching JavaScript errors and showing fallback UI instead of breaking the entire application.<\/p>\n<p><strong>How they work:<\/strong><\/p>\n<ul>\n<li>\n<p>Implemented using <code>componentDidCatch<\/code> and <code>getDerivedStateFromError<\/code>.<\/p>\n<\/li>\n<li>\n<p>Catch errors in rendering, lifecycle methods, and constructors.<\/p>\n<\/li>\n<li>\n<p>Don\u2019t catch errors in event handlers, asynchronous code, or server-side rendering.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ErrorBoundary<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">React<span class=\"token punctuation\">.<\/span>Component<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token function\">constructor<\/span><span class=\"token punctuation\">(<\/span>props<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">super<\/span><span class=\"token punctuation\">(<\/span>props<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>state <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span> hasError<span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">false<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n\n  <span class=\"token keyword\">static<\/span> <span class=\"token function\">getDerivedStateFromError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span> hasError<span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n\n  <span class=\"token function\">componentDidCatch<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">,<\/span> info<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    console<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Error caught:\"<\/span><span class=\"token punctuation\">,<\/span> error<span class=\"token punctuation\">,<\/span> info<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n\n  <span class=\"token function\">render<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>state<span class=\"token punctuation\">.<\/span>hasError<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n      <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h2<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Something went wrong<span class=\"token punctuation\">.<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h2<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>props<span class=\"token punctuation\">.<\/span>children<span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">BuggyComponent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Oops!\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Normal content<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>ErrorBoundary<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>BuggyComponent<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>ErrorBoundary<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> App<span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Catch errors in UI rendering.<\/p>\n<\/li>\n<li>\n<p>Avoid breaking the entire app due to a minor component failure.<\/p>\n<\/li>\n<li>\n<p>Provide fallback UI to improve user experience.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Expecting error boundaries to catch errors in event handlers.<\/p>\n<\/li>\n<li>\n<p>Forgetting to log or report the error for debugging.<\/p>\n<\/li>\n<li>\n<p>Wrapping too large portions of the app, making error isolation harder.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Wrap only critical parts of the UI.<\/p>\n<\/li>\n<li>\n<p>Use multiple error boundaries to localize errors.<\/p>\n<\/li>\n<li>\n<p>Provide meaningful fallback UI and logging.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to improve app resilience when parts of the UI fail.<\/p>\n<\/li>\n<li>\n<p>Asked to explain how React handles exceptions in child components.<\/p>\n<\/li>\n<li>\n<p>Asked about best practices in debugging production errors.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-do-you-test-react-applications--testing--quality-assurance--intermediate\">25. <strong>How do you test React applications?<\/strong> | Testing \/ Quality Assurance | Intermediate<\/h3>\n<p>Testing ensures that React components behave as expected. You can use libraries like Jest and React Testing Library to write unit, integration, and end-to-end tests.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Testing helps catch bugs early and ensures UI correctness. Jest is a test runner and assertion library, while React Testing Library simulates user interactions and verifies component behavior without relying on implementation details.<\/p>\n<p><strong>Types of tests:<\/strong><\/p>\n<ol>\n<li>\n<p><strong>Unit tests:<\/strong> Test individual components or functions.<\/p>\n<\/li>\n<li>\n<p><strong>Integration tests:<\/strong> Verify how components interact together.<\/p>\n<\/li>\n<li>\n<p><strong>End-to-end tests:<\/strong> Test full workflows, often using tools like Cypress.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example (Unit test with React Testing Library):<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> render<span class=\"token punctuation\">,<\/span> screen<span class=\"token punctuation\">,<\/span> fireEvent <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'@testing-library\/react'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">import<\/span> Counter <span class=\"token keyword\">from<\/span> <span class=\"token string\">'.\/Counter'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token function\">test<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'increments count on button click'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token function\">render<\/span><span class=\"token punctuation\">(<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Counter<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  \n<span class=\"token keyword\">const<\/span> button <span class=\"token operator\">=<\/span> screen<span class=\"token punctuation\">.<\/span><span class=\"token function\">getByText<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Increment'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  \nfireEvent<span class=\"token punctuation\">.<\/span><span class=\"token function\">click<\/span><span class=\"token punctuation\">(<\/span>button<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  \n<span class=\"token function\">expect<\/span><span class=\"token punctuation\">(<\/span>screen<span class=\"token punctuation\">.<\/span><span class=\"token function\">getByText<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Count: 1'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">toBeInTheDocument<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  \n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<hr>\n<p><strong>When to test:<\/strong><\/p>\n<ul>\n<li>Before releasing features.<\/li>\n<li>When fixing bugs.<\/li>\n<li>While refactoring code.<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>Testing implementation details instead of behavior.<\/li>\n<li>Writing brittle tests that break easily with minor refactoring.<\/li>\n<li>Not cleaning up mocks or listeners between tests.<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>Write tests that focus on what the user sees and interacts with.<\/li>\n<li>Use <code>beforeEach<\/code> and <code>afterEach<\/code> to reset state.<\/li>\n<li>Avoid over-mocking unless necessary.<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked how to test a form submission flow.<\/li>\n<li>Asked to explain the difference between unit and integration tests.<\/li>\n<li>Asked why testing UI components improves maintainability.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-what-react-hydration-is--rendering--ssr--intermediate\">26. <strong>Explain what React hydration is<\/strong> | Rendering \/ SSR | Intermediate<\/h3>\n<p>Hydration is the process where a server-rendered HTML page is \u201cwired up\u201d with JavaScript to make it interactive on the client side.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>When you use Server-Side Rendering (SSR), the server sends a fully rendered HTML page to the browser. This improves load time and SEO. However, the HTML alone isn\u2019t interactive event listeners and state management need to be attached once the JavaScript code is loaded on the client. This process of attaching event handlers and initializing state without replacing the existing markup is called hydration.<\/p>\n<p><strong>How it works:<\/strong><\/p>\n<ol>\n<li>\n<p>Server renders the page and sends HTML.<\/p>\n<\/li>\n<li>\n<p>The browser loads the HTML and displays it.<\/p>\n<\/li>\n<li>\n<p>React runs on the client, finds the matching DOM structure, and attaches event listeners without re-rendering.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example with Next.js:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token comment\">\/\/ pages\/index.js<\/span>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Home<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Welcome<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        Count<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> Home<span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>This page can be server-rendered by Next.js and hydrated on the client to become interactive.<\/p>\n<p><strong>When hydration is important:<\/strong><\/p>\n<ul>\n<li>\n<p>SEO-focused websites that benefit from server rendering.<\/p>\n<\/li>\n<li>\n<p>Apps where fast initial load is critical.<\/p>\n<\/li>\n<li>\n<p>Complex UIs that need both pre-rendered content and interactivity.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Hydration mismatch errors when server and client render differently.<\/p>\n<\/li>\n<li>\n<p>Adding dynamic data on the server that changes on the client without syncing.<\/p>\n<\/li>\n<li>\n<p>Not using consistent props or markup between server and client.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Ensure that server-rendered markup matches client-side rendering.<\/p>\n<\/li>\n<li>\n<p>Avoid using non-deterministic data during initial render.<\/p>\n<\/li>\n<li>\n<p>Handle loading and fallback states carefully during hydration.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked about the difference between SSR and CSR.<\/p>\n<\/li>\n<li>\n<p>Asked how hydration improves performance.<\/p>\n<\/li>\n<li>\n<p>Asked why hydration errors occur and how to debug them.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-react-portals-used-for--rendering--advanced-patterns--intermediate\">27. <strong>What are React Portals used for?<\/strong> | Rendering \/ Advanced Patterns | Intermediate<\/h3>\n<p>Portals allow you to render a component\u2019s children into a DOM node that exists outside the parent component\u2019s hierarchy.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Sometimes you need UI elements like modals, tooltips, or dropdowns to break out of their parent container\u2019s styles, overflow, or z-index constraints. Portals let you render content elsewhere in the DOM tree while keeping the component\u2019s logic within its parent.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">import<\/span> ReactDOM <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react-dom'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Modal<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> children <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> ReactDOM<span class=\"token punctuation\">.<\/span><span class=\"token function\">createPortal<\/span><span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">className<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>modal<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token punctuation\">{<\/span>children<span class=\"token punctuation\">}<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">,<\/span>\n    document<span class=\"token punctuation\">.<\/span><span class=\"token function\">getElementById<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'modal-root'<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token comment\">\/\/ outside the main app container<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>My App<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Modal<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h2<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>I'm a modal<span class=\"token operator\">!<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h2<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>Modal<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> App<span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>Here, <code>Modal<\/code> is rendered into a separate <code>div<\/code> with ID <code>modal-root<\/code>, outside the main app tree.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Building modals, popovers, or tooltips.<\/p>\n<\/li>\n<li>\n<p>Managing z-index or overflow issues.<\/p>\n<\/li>\n<li>\n<p>Isolating UI elements that require special handling.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Forgetting to create the target DOM node (<code>modal-root<\/code>).<\/p>\n<\/li>\n<li>\n<p>Rendering mismatched content between parent and portal.<\/p>\n<\/li>\n<li>\n<p>Not handling accessibility concerns (like focus trapping).<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Ensure the portal\u2019s target node exists before rendering.<\/p>\n<\/li>\n<li>\n<p>Manage focus and accessibility within portals.<\/p>\n<\/li>\n<li>\n<p>Avoid passing complex state unless needed.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to build a modal component.<\/p>\n<\/li>\n<li>\n<p>Asked how to solve overflow or styling issues in nested layouts.<\/p>\n<\/li>\n<li>\n<p>Asked how to manage event bubbling with portals.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-do-you-debug-react-applications--debugging--tools--beginner\">28. <strong>How do you debug React applications?<\/strong> | Debugging \/ Tools | Beginner<\/h3>\n<p>Debugging in React involves inspecting component trees, checking state and props, and identifying errors using browser tools and libraries.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Debugging helps developers find and fix issues during development or in production. React apps can be debugged using both built-in browser tools and external libraries designed to inspect React-specific structures.<\/p>\n<p><strong>Tools and methods:<\/strong><\/p>\n<ol>\n<li>\n<p><strong>React Developer Tools:<\/strong> Inspect the component hierarchy, state, and props.<\/p>\n<\/li>\n<li>\n<p><strong>Console logs:<\/strong> Use <code>console.log()<\/code> to trace state updates or errors.<\/p>\n<\/li>\n<li>\n<p><strong>Breakpoints:<\/strong> Set breakpoints in browser DevTools to step through code.<\/p>\n<\/li>\n<li>\n<p><strong>Error boundaries:<\/strong> Catch rendering errors and inspect stack traces.<\/p>\n<\/li>\n<li>\n<p><strong>Network inspection:<\/strong> Check API requests and responses.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example use of React Developer Tools:<\/strong><\/p>\n<ul>\n<li>\n<p>Inspect a component\u2019s props.<\/p>\n<\/li>\n<li>\n<p>See which component caused an error.<\/p>\n<\/li>\n<li>\n<p>Trace state changes and understand component rerenders.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Common debugging approaches:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\">console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Current state:\"<\/span><span class=\"token punctuation\">,<\/span> state<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\nconsole<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Something went wrong!\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>Use conditionals to debug state transitions or logic flow.<\/p>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Logging too much data, making debugging harder.<\/p>\n<\/li>\n<li>\n<p>Relying only on <code>console.log<\/code> instead of structured error handling.<\/p>\n<\/li>\n<li>\n<p>Forgetting to clean up event listeners or intervals during component unmount.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use React DevTools for structural inspection.<\/p>\n<\/li>\n<li>\n<p>Leverage <code>useEffect<\/code> cleanup functions to manage side effects.<\/p>\n<\/li>\n<li>\n<p>Integrate monitoring tools like Sentry in production environments.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how you would identify why a component isn\u2019t updating.<\/p>\n<\/li>\n<li>\n<p>Asked how you would debug API calls in a React app.<\/p>\n<\/li>\n<li>\n<p>Asked how you would troubleshoot hydration issues.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-react-strict-mode-and-what-are-its-benefits--development-tools--best-practices--beginner\">29. <strong>What is React strict mode and what are its benefits?<\/strong> | Development Tools \/ Best Practices | Beginner<\/h3>\n<p>React Strict Mode is a tool that helps developers find potential issues by adding additional checks and warnings during development.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Strict Mode doesn\u2019t render anything on the screen, but it activates extra checks in the background. It helps catch unsafe lifecycle methods, side effects, deprecated APIs, and other common issues early.<\/p>\n<p><strong>Key features:<\/strong><\/p>\n<ul>\n<li>\n<p>Detects components with unsafe lifecycle methods.<\/p>\n<\/li>\n<li>\n<p>Identifies side effects and unexpected behaviors.<\/p>\n<\/li>\n<li>\n<p>Highlights deprecated APIs.<\/p>\n<\/li>\n<li>\n<p>Helps prepare code for future versions of React.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example usage:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>React.StrictMode<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>MyComponent<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>React.StrictMode<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>This wraps the component and applies extra checks during development.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>During development to catch bugs early.<\/p>\n<\/li>\n<li>\n<p>To prepare for future React updates.<\/p>\n<\/li>\n<li>\n<p>To ensure best practices in component design.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Thinking it\u2019s meant for production performance optimization.<\/p>\n<\/li>\n<li>\n<p>Ignoring warnings without fixing underlying issues.<\/p>\n<\/li>\n<li>\n<p>Confusing it with error boundaries (they serve different purposes).<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Always enable it during development.<\/p>\n<\/li>\n<li>\n<p>Use it alongside testing and code reviews.<\/p>\n<\/li>\n<li>\n<p>Address warnings to maintain code health.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to ensure code quality in a React app.<\/p>\n<\/li>\n<li>\n<p>Asked how to find side effects or deprecated code.<\/p>\n<\/li>\n<li>\n<p>Asked why a component behaves unexpectedly in strict mode.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-do-you-localize-react-applications--internationalization-i18n--intermediate\">30. <strong>How do you localize React applications?<\/strong> | Internationalization (i18n) | Intermediate<\/h3>\n<p>Localization is the process of adapting an application\u2019s content for different languages and regions, making it accessible to a broader audience.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Localization involves providing translations, date\/time formats, number formats, and culturally appropriate content. In React, libraries like <code>react-i18next<\/code> and <code>react-intl<\/code> make it easier to manage translations and switch languages dynamically.<\/p>\n<p><strong>Steps to localize an app:<\/strong><\/p>\n<ol>\n<li>\n<p>Create translation files for different languages.<\/p>\n<\/li>\n<li>\n<p>Use an i18n library to load and switch translations.<\/p>\n<\/li>\n<li>\n<p>Replace static text with translatable keys.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example using <code>react-i18next<\/code>:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token comment\">\/\/ i18n.js<\/span>\n<span class=\"token keyword\">import<\/span> i18n <span class=\"token keyword\">from<\/span> <span class=\"token string\">'i18next'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> initReactI18next <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react-i18next'<\/span><span class=\"token punctuation\">;<\/span>\n\ni18n<span class=\"token punctuation\">.<\/span><span class=\"token function\">use<\/span><span class=\"token punctuation\">(<\/span>initReactI18next<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">init<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\n  resources<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>\n    en<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>\n      translation<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>\n        welcome_message<span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"Welcome!\"<\/span><span class=\"token punctuation\">,<\/span>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n    fr<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>\n      translation<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>\n        welcome_message<span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"Bienvenue!\"<\/span><span class=\"token punctuation\">,<\/span>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n  lng<span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"en\"<\/span><span class=\"token punctuation\">,<\/span>\n  fallbackLng<span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"en\"<\/span><span class=\"token punctuation\">,<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/ Component<\/span>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> useTranslation <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react-i18next'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">MyComponent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> t <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useTranslation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token operator\">&lt;<\/span>p<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">{<\/span><span class=\"token function\">t<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'welcome_message'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>p<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Applications targeting global audiences.<\/p>\n<\/li>\n<li>\n<p>Apps with dynamic language switching.<\/p>\n<\/li>\n<li>\n<p>Apps needing support for multiple date, time, or currency formats.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Hardcoding text instead of using translation keys.<\/p>\n<\/li>\n<li>\n<p>Forgetting to handle fallback languages.<\/p>\n<\/li>\n<li>\n<p>Not considering text direction or pluralization rules.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Store translations in separate files for maintainability.<\/p>\n<\/li>\n<li>\n<p>Use context-aware translations for complex sentences.<\/p>\n<\/li>\n<li>\n<p>Test with multiple languages to ensure correct rendering.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>Asked how you would support multiple languages in a web app.<\/li>\n<li>Asked how to manage translations for dynamic content.<\/li>\n<li>Asked how to ensure fallback options when translations are missing.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-code-splitting-in-a-react-application--performance-optimization--intermediate\">31. <strong>What is code splitting in a React application?<\/strong> | Performance Optimization | Intermediate<\/h3>\n<p>Code splitting is a technique that helps improve performance by breaking the application\u2019s code into smaller chunks and loading them on demand.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>In large React applications, bundling everything into one file can slow down the initial load time. Code splitting allows you to split your code at logical points (such as routes or components) so that only the necessary code is loaded when required.<\/p>\n<p>React provides built-in support for code splitting through <code>React.lazy()<\/code> and <code>Suspense<\/code>, allowing developers to load components asynchronously.<\/p>\n<p><strong>How it works:<\/strong><\/p>\n<ol>\n<li>\n<p>Define a component to be lazily loaded using <code>React.lazy<\/code>.<\/p>\n<\/li>\n<li>\n<p>Wrap the component with <code>React.Suspense<\/code>, specifying a fallback UI while the component loads.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> Suspense<span class=\"token punctuation\">,<\/span> lazy <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> LazyComponent <span class=\"token operator\">=<\/span> <span class=\"token function\">lazy<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token keyword\">import<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'.\/LazyComponent'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span>\n      <span class=\"token operator\">&lt;<\/span>h1<span class=\"token operator\">&gt;<\/span>Main App<span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>h1<span class=\"token operator\">&gt;<\/span>\n      <span class=\"token operator\">&lt;<\/span>Suspense fallback<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span>Loading<span class=\"token operator\">...<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token operator\">&gt;<\/span>\n        <span class=\"token operator\">&lt;<\/span>LazyComponent <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>Suspense<span class=\"token operator\">&gt;<\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> App<span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>Here, <code>LazyComponent<\/code> is loaded only when needed, improving the initial load time.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Large applications with multiple routes.<\/p>\n<\/li>\n<li>\n<p>Components not required at the initial render.<\/p>\n<\/li>\n<li>\n<p>Reducing the size of JavaScript bundles.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Not wrapping lazy components with <code>Suspense<\/code>, leading to errors.<\/p>\n<\/li>\n<li>\n<p>Overusing code splitting, causing excessive network requests.<\/p>\n<\/li>\n<li>\n<p>Not handling errors during dynamic imports.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Code split by route or feature rather than at arbitrary points.<\/p>\n<\/li>\n<li>\n<p>Use fallback UI that provides useful loading feedback.<\/p>\n<\/li>\n<li>\n<p>Combine with error boundaries to handle loading failures gracefully.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to optimize performance for large React apps.<\/p>\n<\/li>\n<li>\n<p>Asked why code splitting is beneficial.<\/p>\n<\/li>\n<li>\n<p>Asked how to handle lazy loading errors in production.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-would-one-optimize-the-performance-of-react-contexts-to-reduce-rerenders--state-management--performance--advanced\">32. <strong>How would one optimize the performance of React contexts to reduce rerenders?<\/strong> | State Management \/ Performance | Advanced<\/h3>\n<p>Optimizing React context involves ensuring that only the necessary components re-render when context values change.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>React\u2019s context API provides a way to pass data through the component tree without prop drilling. However, when context values change, all components that consume the context re-render by default, even if they don\u2019t use the changed part of the context.<\/p>\n<p>Optimizing context ensures better performance by minimizing unnecessary re-renders.<\/p>\n<p><strong>Techniques to optimize:<\/strong><\/p>\n<ol>\n<li><strong>Memoize context values:<\/strong><br>\nUse <code>useMemo<\/code> to prevent context values from changing unnecessarily.<\/li>\n<\/ol>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token keyword\">const<\/span> value <span class=\"token operator\">=<\/span> <span class=\"token function\">useMemo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> state<span class=\"token punctuation\">,<\/span> dispatch <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span>state<span class=\"token punctuation\">,<\/span> dispatch<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<ol start=\"2\">\n<li>\n<p><strong>Split contexts:<\/strong><br>\nCreate separate contexts for unrelated state slices.<\/p>\n<\/li>\n<li>\n<p><strong>Use selectors:<\/strong><br>\nLibraries like <code>use-context-selector<\/code> allow consumers to only listen to specific parts of the context.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token keyword\">const<\/span> AppContext <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">createContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">AppProvider<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> children <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> value <span class=\"token operator\">=<\/span> <span class=\"token function\">useMemo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> count<span class=\"token punctuation\">,<\/span> setCount <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">&lt;<\/span>AppContext<span class=\"token punctuation\">.<\/span>Provider value<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span>value<span class=\"token punctuation\">}<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token punctuation\">{<\/span>children<span class=\"token punctuation\">}<\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>AppContext<span class=\"token punctuation\">.<\/span>Provider<span class=\"token operator\">&gt;<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>When to apply:<\/strong><\/p>\n<ul>\n<li>\n<p>Applications with deep component trees.<\/p>\n<\/li>\n<li>\n<p>State shared across unrelated components.<\/p>\n<\/li>\n<li>\n<p>Performance-critical apps where frequent state updates occur.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Passing inline objects or functions as context values, triggering re-renders.<\/p>\n<\/li>\n<li>\n<p>Using a single context for all state, causing widespread updates.<\/p>\n<\/li>\n<li>\n<p>Forgetting to memoize or separate unrelated state.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Structure contexts based on state usage patterns.<\/p>\n<\/li>\n<li>\n<p>Always memoize values that change over time.<\/p>\n<\/li>\n<li>\n<p>Avoid unnecessary context usage when local state suffices.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked why your app\u2019s performance drops with global state.<\/p>\n<\/li>\n<li>\n<p>Asked how to manage global state in a scalable way.<\/p>\n<\/li>\n<li>\n<p>Asked about alternatives to Redux or MobX.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-higher-order-components-in-react--component-patterns--intermediate\">33. <strong>What are higher order components in React?<\/strong> | Component Patterns | Intermediate<\/h3>\n<p>Higher-order components (HOCs) are functions that take a component as input and return a new component with added functionality or props.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>HOCs are a design pattern for reusing logic across components without duplicating code. Instead of inheritance, you wrap a component to enhance its behavior.<\/p>\n<p>A typical HOC adds props, handles state, or injects logic into wrapped components.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">withLogger<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>WrappedComponent<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>props<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Rendering with props:'<\/span><span class=\"token punctuation\">,<\/span> props<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token operator\">&lt;<\/span>WrappedComponent <span class=\"token punctuation\">{<\/span><span class=\"token operator\">...<\/span>props<span class=\"token punctuation\">}<\/span> <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">Hello<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> name <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span>Hello<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><span class=\"token operator\">!<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> HelloWithLogger <span class=\"token operator\">=<\/span> <span class=\"token function\">withLogger<\/span><span class=\"token punctuation\">(<\/span>Hello<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>Now, <code>HelloWithLogger<\/code> logs props before rendering <code>Hello<\/code>.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Reusing component logic like authentication checks or data fetching.<\/p>\n<\/li>\n<li>\n<p>Injecting props without modifying the original component.<\/p>\n<\/li>\n<li>\n<p>Enhancing components for testing or logging.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Mutating props or state inside the HOC.<\/p>\n<\/li>\n<li>\n<p>Not forwarding refs when needed.<\/p>\n<\/li>\n<li>\n<p>Using HOCs where hooks would suffice, complicating the component tree.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use HOCs for shared logic that applies to multiple components.<\/p>\n<\/li>\n<li>\n<p>Avoid overusing them; prefer hooks where appropriate.<\/p>\n<\/li>\n<li>\n<p>Ensure composability by properly handling props and refs.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked to explain patterns for code reuse.<\/p>\n<\/li>\n<li>\n<p>Asked how you would share logic across multiple components.<\/p>\n<\/li>\n<li>\n<p>Asked why inheritance is avoided in React.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-flux-pattern-and-what-are-its-benefits--state-management--intermediate\">34. <strong>What is the Flux pattern and what are its benefits?<\/strong> | State Management | Intermediate<\/h3>\n<p>Flux is an architectural pattern for managing application state with a unidirectional data flow.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>In traditional applications, data can flow in multiple directions, making it hard to track state changes. Flux enforces a single direction for data flow, making state management predictable and easier to debug.<\/p>\n<p><strong>Core components:<\/strong><\/p>\n<ol>\n<li>\n<p><strong>Dispatcher:<\/strong> Sends actions to stores.<\/p>\n<\/li>\n<li>\n<p><strong>Stores:<\/strong> Hold application state and logic.<\/p>\n<\/li>\n<li>\n<p><strong>Actions:<\/strong> Define events that change the state.<\/p>\n<\/li>\n<li>\n<p><strong>Views (Components):<\/strong> React to changes in stores and update the UI.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Data flow sequence:<\/strong><\/p>\n<ol>\n<li>\n<p>User triggers an event.<\/p>\n<\/li>\n<li>\n<p>An action is created and dispatched.<\/p>\n<\/li>\n<li>\n<p>Stores update based on the action.<\/p>\n<\/li>\n<li>\n<p>Views re-render with updated state.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Benefits:<\/strong><\/p>\n<ul>\n<li>\n<p>Predictable state transitions.<\/p>\n<\/li>\n<li>\n<p>Easier debugging and tracing of state changes.<\/p>\n<\/li>\n<li>\n<p>Separation of concerns between data and UI logic.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example illustration:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token comment\">\/\/ Action<\/span>\n<span class=\"token keyword\">const<\/span> incrementAction <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span> type<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'INCREMENT'<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/ Store<\/span>\n<span class=\"token keyword\">let<\/span> count <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">handleAction<\/span><span class=\"token punctuation\">(<\/span>action<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">switch<\/span><span class=\"token punctuation\">(<\/span>action<span class=\"token punctuation\">.<\/span>type<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">case<\/span> <span class=\"token string\">'INCREMENT'<\/span><span class=\"token punctuation\">:<\/span>\n      count <span class=\"token operator\">+=<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n      <span class=\"token keyword\">break<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>This simplified model shows how actions modify state and trigger UI updates.<\/p>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Overcomplicating the dispatcher or stores.<\/p>\n<\/li>\n<li>\n<p>Using it for trivial state instead of shared state.<\/p>\n<\/li>\n<li>\n<p>Mixing responsibilities across actions and stores.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Keep actions descriptive and minimal.<\/p>\n<\/li>\n<li>\n<p>Ensure stores only hold state logic.<\/p>\n<\/li>\n<li>\n<p>Use libraries like Redux that implement Flux principles with added tools.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked why unidirectional data flow helps in complex apps.<\/p>\n<\/li>\n<li>\n<p>Asked how Redux or MobX relate to Flux.<\/p>\n<\/li>\n<li>\n<p>Asked to describe how state changes propagate in your app.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-one-way-data-flow-of-react-and-its-benefits--data-flow--core-concepts--beginner\">35. <strong>Explain one-way data flow of React and its benefits<\/strong> | Data Flow \/ Core Concepts | Beginner<\/h3>\n<p>One-way data flow means that data flows from parent components down to child components, making state management more predictable.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>In React, data flows in a single direction\u2014from parent components to child components via props. This ensures that data dependencies are clear and that child components cannot directly modify data owned by parent components.<\/p>\n<p><strong>How it works:<\/strong><\/p>\n<ul>\n<li>\n<p>Parent defines state and passes it to children.<\/p>\n<\/li>\n<li>\n<p>Children render UI based on props.<\/p>\n<\/li>\n<li>\n<p>Children communicate changes via callbacks passed from the parent.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">Parent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">&lt;<\/span>Child count<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span> increment<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span> <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Child<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> count<span class=\"token punctuation\">,<\/span> increment <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span>\n      <span class=\"token operator\">&lt;<\/span>p<span class=\"token operator\">&gt;<\/span>Count<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>p<span class=\"token operator\">&gt;<\/span>\n      <span class=\"token operator\">&lt;<\/span>button onClick<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span>increment<span class=\"token punctuation\">}<\/span><span class=\"token operator\">&gt;<\/span>Increment<span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>button<span class=\"token operator\">&gt;<\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>Here, <code>Parent<\/code> manages state, and <code>Child<\/code> uses props to render and request updates.<\/p>\n<p><strong>Benefits:<\/strong><\/p>\n<ul>\n<li>\n<p>Predictable UI updates.<\/p>\n<\/li>\n<li>\n<p>Easier debugging since data flow is traceable.<\/p>\n<\/li>\n<li>\n<p>Reduces unexpected side effects.<\/p>\n<\/li>\n<li>\n<p>Encourages better component design and separation of concerns.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Passing unnecessary props that cause re-renders.<\/p>\n<\/li>\n<li>\n<p>Overusing prop drilling instead of context for global state.<\/p>\n<\/li>\n<li>\n<p>Allowing children to mutate parent data directly.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Keep state where it logically belongs.<\/p>\n<\/li>\n<li>\n<p>Use callbacks to notify parents of changes.<\/p>\n<\/li>\n<li>\n<p>Use context or state managers when prop drilling gets cumbersome.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how state updates in React are managed.<\/p>\n<\/li>\n<li>\n<p>Asked why data shouldn\u2019t be passed in multiple directions.<\/p>\n<\/li>\n<li>\n<p>Asked how to handle shared state across components.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-do-you-handle-asynchronous-data-loading-in-react-applications--data-fetching--side-effects--intermediate\">36. <strong>How do you handle asynchronous data loading in React applications?<\/strong> | Data Fetching \/ Side Effects | Intermediate<\/h3>\n<p>Handling asynchronous data loading in React involves fetching data from APIs or other sources and updating the component state accordingly while managing loading and error states.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>In React, data fetching is typically done inside the <code>useEffect<\/code> hook, which allows you to run side effects after the component mounts or when dependencies change. You also use <code>useState<\/code> to store the data and track the loading or error status.<\/p>\n<p><strong>Steps to handle data fetching:<\/strong><\/p>\n<ol>\n<li>\n<p>Define state variables to store data, loading, and error.<\/p>\n<\/li>\n<li>\n<p>Use <code>useEffect<\/code> to trigger the data fetch on component mount or when dependencies change.<\/p>\n<\/li>\n<li>\n<p>Use <code>async\/await<\/code> or promises to fetch data.<\/p>\n<\/li>\n<li>\n<p>Update state when data is successfully loaded or an error occurs.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useState<span class=\"token punctuation\">,<\/span> useEffect <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">DataFetchingComponent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>data<span class=\"token punctuation\">,<\/span> setData<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>loading<span class=\"token punctuation\">,<\/span> setLoading<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>error<span class=\"token punctuation\">,<\/span> setError<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">async<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">fetchData<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n      <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span>\n        <span class=\"token keyword\">const<\/span> response <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> <span class=\"token function\">fetch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'https:\/\/api.example.com\/data'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token operator\">!<\/span>response<span class=\"token punctuation\">.<\/span>ok<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n          <span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Network response was not ok'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n        <span class=\"token keyword\">const<\/span> result <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> response<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token function\">setData<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n      <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">err<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n        <span class=\"token function\">setError<\/span><span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">.<\/span>message<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n      <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span>\n        <span class=\"token function\">setLoading<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">false<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n      <span class=\"token punctuation\">}<\/span>\n    <span class=\"token punctuation\">}<\/span>\n\n    <span class=\"token function\">fetchData<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ Empty dependency array to run once on mount<\/span>\n\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>loading<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> <span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span>Loading<span class=\"token operator\">...<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> <span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span>Error<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>error<span class=\"token punctuation\">}<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span>Data<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>JSON<span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>When to apply:<\/strong><\/p>\n<ul>\n<li>\n<p>Loading data from REST APIs.<\/p>\n<\/li>\n<li>\n<p>Interacting with backend services.<\/p>\n<\/li>\n<li>\n<p>Updating UI based on external data sources.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Forgetting the empty dependency array, causing infinite fetch loops.<\/p>\n<\/li>\n<li>\n<p>Not handling error states, leading to broken UI.<\/p>\n<\/li>\n<li>\n<p>Updating state after the component has unmounted.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Always handle errors gracefully.<\/p>\n<\/li>\n<li>\n<p>Cancel or clean up requests when the component unmounts.<\/p>\n<\/li>\n<li>\n<p>Use loading states to inform users while data is being fetched.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how you would fetch data in a functional component.<\/p>\n<\/li>\n<li>\n<p>Asked how to avoid memory leaks in components.<\/p>\n<\/li>\n<li>\n<p>Asked how to manage loading and error states.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-server-side-rendering-of-react-applications-and-its-benefits--rendering--performance--intermediate\">37. <strong>Explain server-side rendering of React applications and its benefits<\/strong> | Rendering \/ Performance | Intermediate<\/h3>\n<p>Server-side rendering (SSR) refers to rendering React components on the server and sending fully rendered HTML to the client.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Normally, React applications are client-rendered, where JavaScript loads and renders the UI after the page has loaded. With SSR, the server pre-renders the page into HTML, improving performance and SEO.<\/p>\n<p>After the initial HTML is sent to the browser, React takes over with hydration, attaching event listeners and enabling interactivity.<\/p>\n<p><strong>Benefits:<\/strong><\/p>\n<ol>\n<li>\n<p><strong>Improved SEO:<\/strong> Search engines can index content from the initial HTML.<\/p>\n<\/li>\n<li>\n<p><strong>Faster load times:<\/strong> Users see content faster since it\u2019s rendered on the server.<\/p>\n<\/li>\n<li>\n<p><strong>Better performance on slow devices:<\/strong> Less JavaScript processing is required on the client.<\/p>\n<\/li>\n<\/ol>\n<p><strong>How SSR works:<\/strong><\/p>\n<ol>\n<li>\n<p>Server renders components into static HTML.<\/p>\n<\/li>\n<li>\n<p>HTML is sent to the client.<\/p>\n<\/li>\n<li>\n<p>React hydrates the page, making it interactive.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example using Next.js:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token comment\">\/\/ pages\/index.js<\/span>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">async<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">getServerSideProps<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> res <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> <span class=\"token function\">fetch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'https:\/\/api.example.com\/data'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> data <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span> props<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span> data <span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">Home<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> data <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span>Data<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>JSON<span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>Here, <code>getServerSideProps<\/code> fetches data during each request on the server.<\/p>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Fetching data incorrectly without server context.<\/p>\n<\/li>\n<li>\n<p>Rendering components that rely on browser-specific APIs without checks.<\/p>\n<\/li>\n<li>\n<p>Not using caching strategies, causing slow responses.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Handle browser-only code using feature detection or lifecycle checks.<\/p>\n<\/li>\n<li>\n<p>Cache frequently requested data where possible.<\/p>\n<\/li>\n<li>\n<p>Use frameworks like Next.js that provide built-in SSR support.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked why SEO is a problem with client-side rendering.<\/p>\n<\/li>\n<li>\n<p>Asked how you would implement SSR in your app.<\/p>\n<\/li>\n<li>\n<p>Asked to compare SSR vs static generation.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-static-generation-of-react-applications-and-its-benefits--rendering--performance--intermediate\">38. <strong>Explain static generation of React applications and its benefits<\/strong> | Rendering \/ Performance | Intermediate<\/h3>\n<p>Static generation refers to pre-rendering pages at build time rather than on each request, delivering optimized HTML files.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Static generation builds the pages ahead of time into HTML files that can be served quickly, often from a CDN. It\u2019s suitable for pages that don\u2019t change frequently and helps achieve fast load times and better SEO.<\/p>\n<p>Frameworks like Next.js allow developers to generate static pages easily with functions like <code>getStaticProps<\/code>.<\/p>\n<p><strong>Benefits:<\/strong><\/p>\n<ol>\n<li>\n<p><strong>Blazing fast load times:<\/strong> Pages are served without runtime data fetching.<\/p>\n<\/li>\n<li>\n<p><strong>SEO-friendly content:<\/strong> Search engines see the full content without JavaScript execution.<\/p>\n<\/li>\n<li>\n<p><strong>Lower server load:<\/strong> Pages are generated at build time.<\/p>\n<\/li>\n<\/ol>\n<p><strong>How it works:<\/strong><\/p>\n<ol>\n<li>\n<p>At build time, data is fetched and pages are pre-rendered.<\/p>\n<\/li>\n<li>\n<p>The static files are deployed to servers or CDNs.<\/p>\n<\/li>\n<li>\n<p>Clients receive ready-to-render HTML.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example with Next.js:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token comment\">\/\/ pages\/index.js<\/span>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">async<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">getStaticProps<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> res <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> <span class=\"token function\">fetch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'https:\/\/api.example.com\/data'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> data <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span> props<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span> data <span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">Home<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> data <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span>Data<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>JSON<span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>The data is fetched during the build process.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Marketing pages, blogs, documentation sites.<\/p>\n<\/li>\n<li>\n<p>Pages with infrequent content updates.<\/p>\n<\/li>\n<li>\n<p>Sites aiming for performance and SEO improvements.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Using static generation for highly dynamic pages.<\/p>\n<\/li>\n<li>\n<p>Not implementing incremental regeneration when needed.<\/p>\n<\/li>\n<li>\n<p>Failing to handle API errors at build time.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use static generation where data rarely changes.<\/p>\n<\/li>\n<li>\n<p>Combine with incremental static regeneration for freshness.<\/p>\n<\/li>\n<li>\n<p>Optimize API calls to reduce build time.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to optimize page load times.<\/p>\n<\/li>\n<li>\n<p>Asked the difference between SSR and static generation.<\/p>\n<\/li>\n<li>\n<p>Asked when to prefer static generation over SSR.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-the-presentational-vs-container-component-pattern-in-react--component-architecture--intermediate\">39. <strong>Explain the presentational vs container component pattern in React<\/strong> | Component Architecture | Intermediate<\/h3>\n<p>This pattern helps separate concerns by distinguishing between components responsible for UI and those responsible for logic and state.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>Presentational components:<\/strong> Focus on how the UI looks. They receive data and callbacks via props and have little to no state.<\/p>\n<\/li>\n<li>\n<p><strong>Container components:<\/strong> Focus on how the application works. They manage state, data fetching, and logic, and pass props to presentational components.<\/p>\n<\/li>\n<\/ul>\n<p>This separation makes code more reusable, testable, and maintainable.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token comment\">\/\/ Presentational component<\/span>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">UserList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> users <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">&lt;<\/span>ul<span class=\"token operator\">&gt;<\/span>\n      <span class=\"token punctuation\">{<\/span>users<span class=\"token punctuation\">.<\/span><span class=\"token function\">map<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>user<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">(<\/span>\n        <span class=\"token operator\">&lt;<\/span>li key<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span>user<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">}<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">{<\/span>user<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>li<span class=\"token operator\">&gt;<\/span>\n      <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>ul<span class=\"token operator\">&gt;<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/\/ Container component<\/span>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">UserContainer<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>users<span class=\"token punctuation\">,<\/span> setUsers<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token function\">fetch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'\/api\/users'<\/span><span class=\"token punctuation\">)<\/span>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>res<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setUsers<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token operator\">&lt;<\/span>UserList users<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span>users<span class=\"token punctuation\">}<\/span> <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>Here, <code>UserList<\/code> only renders the UI, while <code>UserContainer<\/code> handles fetching data.<\/p>\n<p><strong>Benefits:<\/strong><\/p>\n<ol>\n<li>\n<p>Clear separation of UI and logic.<\/p>\n<\/li>\n<li>\n<p>Reusable and easily testable components.<\/p>\n<\/li>\n<li>\n<p>Encourages a modular and scalable architecture.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Mixing state logic into presentational components.<\/p>\n<\/li>\n<li>\n<p>Overusing containers, making code harder to navigate.<\/p>\n<\/li>\n<li>\n<p>Ignoring prop drilling when it\u2019s unnecessary.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Keep presentational components stateless where possible.<\/p>\n<\/li>\n<li>\n<p>Move logic to containers for better readability.<\/p>\n<\/li>\n<li>\n<p>Use hooks to manage side effects in containers.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how you structure components in a large project.<\/p>\n<\/li>\n<li>\n<p>Asked how you make components reusable.<\/p>\n<\/li>\n<li>\n<p>Asked to explain separation of concerns in React.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-some-common-pitfalls-when-doing-data-fetching-in-react--data-fetching--error-handling--intermediate\">40. <strong>What are some common pitfalls when doing data fetching in React?<\/strong> | Data Fetching \/ Error Handling | Intermediate<\/h3>\n<p>Data fetching can lead to various issues if not handled correctly, impacting performance, usability, or causing bugs.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>While fetching data in React is straightforward, developers often overlook edge cases like race conditions, memory leaks, or improper error handling. Recognizing and avoiding these pitfalls ensures robust and performant applications.<\/p>\n<p><strong>Common pitfalls:<\/strong><\/p>\n<ol>\n<li>\n<p><strong>Not handling loading and error states:<\/strong><br>\nUsers might see incomplete or broken interfaces.<\/p>\n<\/li>\n<li>\n<p><strong>Ignoring cleanup of subscriptions:<\/strong><br>\nLeads to memory leaks when components unmount before the fetch completes.<\/p>\n<\/li>\n<li>\n<p><strong>Infinite loops in <code>useEffect<\/code>:<\/strong><br>\nCaused by missing dependency arrays or including unstable references.<\/p>\n<\/li>\n<li>\n<p><strong>Directly mutating state:<\/strong><br>\nReact won\u2019t track changes if state is updated improperly.<\/p>\n<\/li>\n<li>\n<p><strong>Using stale closures:<\/strong><br>\nFunctions capturing outdated state can lead to unexpected results.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use proper dependency arrays in <code>useEffect<\/code>.<\/p>\n<\/li>\n<li>\n<p>Use <code>AbortController<\/code> to cancel fetch requests on unmount.<\/p>\n<\/li>\n<li>\n<p>Handle loading and error states explicitly.<\/p>\n<\/li>\n<li>\n<p>Avoid updating state after a component unmounts.<\/p>\n<\/li>\n<li>\n<p>Structure data fetching logic using custom hooks.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example with cleanup:<\/strong><\/p>\n<pre class=\" language-javascript\"><code class=\"prism  language-javascript\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useState<span class=\"token punctuation\">,<\/span> useEffect <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">DataComponent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>data<span class=\"token punctuation\">,<\/span> setData<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>loading<span class=\"token punctuation\">,<\/span> setLoading<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">const<\/span> controller <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">AbortController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token function\">fetch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'\/api\/data'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> signal<span class=\"token punctuation\">:<\/span> controller<span class=\"token punctuation\">.<\/span>signal <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>res<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n        <span class=\"token function\">setData<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token function\">setLoading<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">false<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\n      <span class=\"token punctuation\">.<\/span><span class=\"token keyword\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">.<\/span>name <span class=\"token operator\">!==<\/span> <span class=\"token string\">'AbortError'<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n          console<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Fetch error:'<\/span><span class=\"token punctuation\">,<\/span> err<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">abort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ Cleanup on unmount<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>loading<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> <span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span>Loading<span class=\"token operator\">...<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token operator\">&lt;<\/span>div<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">{<\/span>JSON<span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>div<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to prevent memory leaks.<\/p>\n<\/li>\n<li>\n<p>Asked how to handle component unmounting during data fetches.<\/p>\n<\/li>\n<li>\n<p>Asked to explain error handling strategies.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-role-of-keys-in-react-lists-and-why-are-they-important--rendering--lists--beginner\">41. <strong>What is the role of keys in React lists and why are they important?<\/strong> | Rendering \/ Lists | Beginner<\/h3>\n<p>Keys help React identify which items have changed, been added, or removed when rendering lists.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>When rendering lists in React, each element needs a unique <code>key<\/code> so that React can efficiently update only the parts that have changed. Without keys, React will re-render the entire list unnecessarily, causing performance issues and potentially leading to UI bugs.<\/p>\n<p><strong>How it works:<\/strong><\/p>\n<ul>\n<li>\n<p>Keys are used by React\u2019s reconciliation algorithm to match elements between renders.<\/p>\n<\/li>\n<li>\n<p>If keys change or are missing, React may reuse incorrect elements, leading to unexpected behavior.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">const<\/span> items <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">'Apple'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'Banana'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'Cherry'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">ItemList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>ul<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token punctuation\">{<\/span>items<span class=\"token punctuation\">.<\/span><span class=\"token function\">map<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">,<\/span> index<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">(<\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>li<\/span> <span class=\"token attr-name\">key<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>item<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>item<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>ul<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>Here, <code>item<\/code> is used as the key because it\u2019s unique for each list element.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Rendering dynamic lists like menus, tables, or grids.<\/p>\n<\/li>\n<li>\n<p>Handling updates where items are added or removed.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid<\/strong><\/p>\n<ul>\n<li>\n<p>Using array index as key in dynamic lists \u2014 this can cause incorrect updates.<\/p>\n<\/li>\n<li>\n<p>Not using unique keys, leading to bugs in animations or state management.<\/p>\n<\/li>\n<li>\n<p>Changing keys unnecessarily, causing components to unmount and remount.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use stable, unique IDs as keys.<\/p>\n<\/li>\n<li>\n<p>Avoid using array indices if the list can change.<\/p>\n<\/li>\n<li>\n<p>Ensure keys remain consistent between renders.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how React optimizes list rendering.<\/p>\n<\/li>\n<li>\n<p>Asked why using index as a key can cause issues.<\/p>\n<\/li>\n<li>\n<p>Asked how to handle updates in large lists.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-fragments-in-react-and-why-are-they-useful--rendering--jsx--beginner\">42. <strong>What are fragments in React and why are they useful?<\/strong> | Rendering \/ JSX | Beginner<\/h3>\n<p>Fragments let you group multiple elements without adding extra nodes to the DOM.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>In React, a component must return a single element. Sometimes you need to group elements without introducing unnecessary markup, like extra <code>&lt;div&gt;<\/code>s that clutter the HTML structure. React fragments solve this by allowing you to wrap elements without adding new DOM nodes.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Table<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>tr<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>td<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Row <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> Cell <span class=\"token number\">1<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>td<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>td<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Row <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> Cell <span class=\"token number\">2<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>td<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>tr<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>tr<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>td<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Row <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> Cell <span class=\"token number\">1<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>td<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>td<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Row <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> Cell <span class=\"token number\">2<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>td<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>tr<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>This example groups multiple rows without adding an extra wrapper.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Returning multiple elements from a component.<\/p>\n<\/li>\n<li>\n<p>Avoiding unnecessary DOM nodes.<\/p>\n<\/li>\n<li>\n<p>Grouping elements inside lists or table rows.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Adding unnecessary wrapper elements and complicating styling.<\/p>\n<\/li>\n<li>\n<p>Forgetting that fragments don\u2019t create actual DOM elements, which might affect selectors or CSS.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use <code>&lt;&gt;...&lt;\/&gt;<\/code> syntax for simpler code.<\/p>\n<\/li>\n<li>\n<p>Use <code>&lt;React.Fragment&gt;<\/code> when keys are needed for lists.<\/p>\n<\/li>\n<li>\n<p>Avoid over-wrapping content unnecessarily.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to return multiple elements from a component.<\/p>\n<\/li>\n<li>\n<p>Asked how to avoid unnecessary markup in the DOM.<\/p>\n<\/li>\n<li>\n<p>Asked about performance implications of extra DOM nodes.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-controlled-and-uncontrolled-components-in-react--forms--state--intermediate\">43. <strong>What are controlled and uncontrolled components in React?<\/strong> | Forms \/ State | Intermediate<\/h3>\n<p>Controlled components have their state managed by React, while uncontrolled components manage their own state internally.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>Controlled components:<\/strong> The value of the input is controlled via React\u2019s state. The component\u2019s data is always in sync with the state.<\/p>\n<\/li>\n<li>\n<p><strong>Uncontrolled components:<\/strong> The input\u2019s value is handled by the DOM itself, and React accesses it using refs when needed.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example of a controlled component:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">ControlledInput<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>value<span class=\"token punctuation\">,<\/span> setValue<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">''<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>input<\/span>\n      <span class=\"token attr-name\">type<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>text<span class=\"token punctuation\">\"<\/span><\/span>\n      <span class=\"token attr-name\">value<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>value<span class=\"token punctuation\">}<\/span><\/span>\n      <span class=\"token attr-name\">onChange<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setValue<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">.<\/span>target<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span>\n    <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Example of an uncontrolled component:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">UncontrolledInput<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> inputRef <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">useRef<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">handleSubmit<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token function\">alert<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Input value: '<\/span> <span class=\"token operator\">+<\/span> inputRef<span class=\"token punctuation\">.<\/span>current<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>input<\/span> <span class=\"token attr-name\">type<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>text<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">ref<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>inputRef<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>handleSubmit<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Submit<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Controlled: When you need to validate input, manage forms, or synchronize state.<\/p>\n<\/li>\n<li>\n<p>Uncontrolled: When simple forms or quick prototypes don\u2019t need state syncing.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Mixing controlled and uncontrolled logic in the same form.<\/p>\n<\/li>\n<li>\n<p>Forgetting to update state in controlled components, causing stale inputs.<\/p>\n<\/li>\n<li>\n<p>Overusing uncontrolled components in complex forms.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use controlled components for forms with validation or interactions.<\/p>\n<\/li>\n<li>\n<p>Use uncontrolled components for simpler cases.<\/p>\n<\/li>\n<li>\n<p>Keep form logic centralized and testable.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to manage form inputs in React.<\/p>\n<\/li>\n<li>\n<p>Asked when to use refs vs state.<\/p>\n<\/li>\n<li>\n<p>Asked to explain the differences and trade-offs between the two.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-the-use-of-the-context-api-in-react--state-management--intermediate\">44. <strong>Explain the use of the Context API in React<\/strong> | State Management | Intermediate<\/h3>\n<p>The Context API provides a way to share state across the component tree without passing props through every level.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>React\u2019s Context API allows data to be passed globally through the component hierarchy, making it useful for themes, user data, or settings that multiple components need to access.<\/p>\n<p>It helps avoid \u201cprop drilling,\u201d where props are passed through many intermediate components unnecessarily.<\/p>\n<p><strong>Steps to use Context:<\/strong><\/p>\n<ol>\n<li>\n<p>Create a context.<\/p>\n<\/li>\n<li>\n<p>Wrap components with a provider.<\/p>\n<\/li>\n<li>\n<p>Use the context in child components via <code>useContext<\/code>.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> createContext<span class=\"token punctuation\">,<\/span> useContext<span class=\"token punctuation\">,<\/span> useState <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> ThemeContext <span class=\"token operator\">=<\/span> <span class=\"token function\">createContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>theme<span class=\"token punctuation\">,<\/span> setTheme<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'light'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>ThemeContext.Provider<\/span> <span class=\"token attr-name\">value<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">{<\/span> theme<span class=\"token punctuation\">,<\/span> setTheme <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Toolbar<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>ThemeContext.Provider<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Toolbar<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>ThemedButton<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">ThemedButton<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> theme <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useContext<\/span><span class=\"token punctuation\">(<\/span>ThemeContext<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span><span class=\"token template-string\"><span class=\"token string\">`Current theme: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>theme<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">`<\/span><\/span><span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Sharing data like themes, authentication, or settings.<\/p>\n<\/li>\n<li>\n<p>Avoiding excessive prop passing.<\/p>\n<\/li>\n<li>\n<p>Managing global state in smaller applications.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Using context for frequently changing data, causing unnecessary rerenders.<\/p>\n<\/li>\n<li>\n<p>Overusing context when local state would suffice.<\/p>\n<\/li>\n<li>\n<p>Not memoizing context values.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Separate concerns into multiple contexts if needed.<\/p>\n<\/li>\n<li>\n<p>Memoize context values with <code>useMemo<\/code>.<\/p>\n<\/li>\n<li>\n<p>Avoid heavy computations inside context providers.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to avoid prop drilling.<\/p>\n<\/li>\n<li>\n<p>Asked how you would share data across unrelated components.<\/p>\n<\/li>\n<li>\n<p>Asked to explain when to use context vs Redux.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-react-hooks-and-why-were-they-introduced--core-concepts--beginner\">45. <strong>What are React hooks and why were they introduced?<\/strong> | Core Concepts | Beginner<\/h3>\n<p>Hooks are functions that let you use React features like state and lifecycle methods in functional components.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Before hooks, state and lifecycle logic could only be used in class components. Hooks were introduced to enable functional components to manage state, side effects, and other behaviors without the complexity of classes.<\/p>\n<p>This simplified code, improved reuse, and aligned better with JavaScript functions.<\/p>\n<p><strong>Popular hooks:<\/strong><\/p>\n<ul>\n<li>\n<p><code>useState<\/code>: Manage state in functional components.<\/p>\n<\/li>\n<li>\n<p><code>useEffect<\/code>: Handle side effects like data fetching or subscriptions.<\/p>\n<\/li>\n<li>\n<p><code>useContext<\/code>: Access global data.<\/p>\n<\/li>\n<li>\n<p><code>useRef<\/code>: Persist mutable values or DOM references.<\/p>\n<\/li>\n<li>\n<p><code>useReducer<\/code>: Manage complex state logic.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example using <code>useState<\/code>:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useState <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Counter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span><span class=\"token template-string\"><span class=\"token string\">`Count: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>count<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">`<\/span><\/span><span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Why hooks were introduced:<\/strong><\/p>\n<ol>\n<li>\n<p>Avoid class-based complexity.<\/p>\n<\/li>\n<li>\n<p>Reuse logic across components via custom hooks.<\/p>\n<\/li>\n<li>\n<p>Simplify stateful logic in functional components.<\/p>\n<\/li>\n<li>\n<p>Improve readability and testability.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Calling hooks conditionally or inside loops.<\/p>\n<\/li>\n<li>\n<p>Forgetting to follow the rules of hooks.<\/p>\n<\/li>\n<li>\n<p>Not understanding dependency arrays in <code>useEffect<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Always call hooks at the top level of the component.<\/p>\n<\/li>\n<li>\n<p>Use custom hooks to extract shared logic.<\/p>\n<\/li>\n<li>\n<p>Use dependency arrays carefully and intentionally.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked why hooks are preferred over class components.<\/p>\n<\/li>\n<li>\n<p>Asked how you would refactor class logic into hooks.<\/p>\n<\/li>\n<li>\n<p>Asked to explain rules and restrictions when using hooks.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-does-the-virtual-dom-in-react-work-what-are-its-benefits-and-downsides--rendering--performance--intermediate\">46. <strong>How does the virtual DOM in React work? What are its benefits and downsides?<\/strong> | Rendering \/ Performance | Intermediate<\/h3>\n<p>The virtual DOM is a lightweight copy of the actual DOM that helps React efficiently update the UI by comparing changes before applying them to the real DOM.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>When the state or props of a component change, React doesn\u2019t update the actual DOM immediately. Instead, it creates a virtual representation of the DOM, compares it with the previous version, and identifies what\u2019s different. This process, known as \u201cdiffing\u201d or \u201creconciliation,\u201d allows React to update only the necessary parts, improving performance.<\/p>\n<p><strong>Steps in virtual DOM:<\/strong><\/p>\n<ol>\n<li>\n<p>A state or prop change triggers a re-render.<\/p>\n<\/li>\n<li>\n<p>A new virtual DOM tree is created based on the updated component.<\/p>\n<\/li>\n<li>\n<p>The new virtual DOM is compared with the previous version.<\/p>\n<\/li>\n<li>\n<p>Differences are calculated.<\/p>\n<\/li>\n<li>\n<p>Only the changed parts are updated in the actual DOM.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Benefits:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>Improved performance:<\/strong> Minimizes direct DOM manipulations which are expensive.<\/p>\n<\/li>\n<li>\n<p><strong>Declarative UI:<\/strong> Developers only describe how the UI should look.<\/p>\n<\/li>\n<li>\n<p><strong>Predictability:<\/strong> Updates are applied systematically, reducing bugs.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Downsides:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>Overhead:<\/strong> Creating and comparing virtual DOM trees adds computational work.<\/p>\n<\/li>\n<li>\n<p><strong>Not always faster:<\/strong> For very simple or static applications, virtual DOM may not offer significant benefits.<\/p>\n<\/li>\n<li>\n<p><strong>Requires understanding:<\/strong> Misusing state updates or improper patterns can negate performance advantages.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">Counter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span><span class=\"token template-string\"><span class=\"token string\">`Count: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>count<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">`<\/span><\/span><span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>Here, React compares the old and new virtual DOM before updating the count.<\/p>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Assuming virtual DOM optimizations always make the app faster.<\/p>\n<\/li>\n<li>\n<p>Updating state too frequently without batching.<\/p>\n<\/li>\n<li>\n<p>Not structuring components efficiently, causing unnecessary renders.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Break the UI into small, reusable components.<\/p>\n<\/li>\n<li>\n<p>Avoid unnecessary state changes.<\/p>\n<\/li>\n<li>\n<p>Use tools like React DevTools to inspect renders.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how React optimizes rendering.<\/p>\n<\/li>\n<li>\n<p>Asked why manipulating the DOM directly is discouraged.<\/p>\n<\/li>\n<li>\n<p>Asked about the difference between virtual DOM and real DOM updates.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-react-fiber-and-how-is-it-an-improvement-over-the-previous-approach--architecture--performance--advanced\">47. <strong>What is React Fiber and how is it an improvement over the previous approach?<\/strong> | Architecture \/ Performance | Advanced<\/h3>\n<p>React Fiber is a reimplementation of React\u2019s core algorithm that improves rendering performance and flexibility by allowing incremental rendering and better prioritization.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Before React 16, React used a stack-based algorithm that couldn\u2019t pause or resume rendering tasks. React Fiber introduced a new approach that breaks rendering into small units of work, enabling React to handle animations, gestures, and large trees more efficiently.<\/p>\n<p><strong>Key improvements:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>Incremental rendering:<\/strong> Large updates are split into smaller tasks that can be paused and resumed.<\/p>\n<\/li>\n<li>\n<p><strong>Prioritization:<\/strong> Updates like animations can be given higher priority, while less important tasks are deferred.<\/p>\n<\/li>\n<li>\n<p><strong>Error boundaries and suspense:<\/strong> Fiber makes it possible to handle errors and load states gracefully.<\/p>\n<\/li>\n<li>\n<p><strong>Time slicing:<\/strong> React can now schedule work during idle time, improving responsiveness.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example use cases:<\/strong><\/p>\n<ul>\n<li>\n<p>Complex animations with smooth transitions.<\/p>\n<\/li>\n<li>\n<p>Handling asynchronous operations in large applications.<\/p>\n<\/li>\n<li>\n<p>Graceful error recovery without crashing the entire app.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Assuming Fiber changes how you write React code\u2014it\u2019s under the hood.<\/p>\n<\/li>\n<li>\n<p>Ignoring performance implications when managing state updates.<\/p>\n<\/li>\n<li>\n<p>Not optimizing component structure to take advantage of Fiber\u2019s scheduling.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use <code>React.Suspense<\/code> and <code>lazy<\/code> to manage code splitting.<\/p>\n<\/li>\n<li>\n<p>Avoid blocking the main thread with heavy computations.<\/p>\n<\/li>\n<li>\n<p>Structure components to minimize unnecessary re-rendering.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked why React 16 was a major upgrade.<\/p>\n<\/li>\n<li>\n<p>Asked about performance optimizations and rendering interruptions.<\/p>\n<\/li>\n<li>\n<p>Asked to explain how React handles animations and UI responsiveness.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-reconciliation-in-react--rendering--performance--intermediate\">48. <strong>What is reconciliation in React?<\/strong> | Rendering \/ Performance | Intermediate<\/h3>\n<p>Reconciliation is the process by which React compares two versions of the virtual DOM and updates the actual DOM efficiently.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>When state or props change, React generates a new virtual DOM. It then compares the new tree with the previous one and determines the minimal set of changes required to update the actual DOM. This comparison process is called reconciliation.<\/p>\n<p><strong>How it works:<\/strong><\/p>\n<ol>\n<li>\n<p>React receives new state or props.<\/p>\n<\/li>\n<li>\n<p>A new virtual DOM tree is created.<\/p>\n<\/li>\n<li>\n<p>The new tree is compared with the old one.<\/p>\n<\/li>\n<li>\n<p>Differences are identified.<\/p>\n<\/li>\n<li>\n<p>Only the changed elements are updated in the real DOM.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example scenario:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Click me<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n<\/code><\/pre>\n<p>When <code>setCount<\/code> is triggered, React compares the previous count value and updates the text without re-rendering the entire tree.<\/p>\n<p><strong>Benefits:<\/strong><\/p>\n<ul>\n<li>\n<p>Avoids unnecessary DOM updates.<\/p>\n<\/li>\n<li>\n<p>Improves app performance.<\/p>\n<\/li>\n<li>\n<p>Makes UI updates predictable.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Assuming reconciliation always prevents performance issues.<\/p>\n<\/li>\n<li>\n<p>Using improper keys that confuse the algorithm.<\/p>\n<\/li>\n<li>\n<p>Not understanding how deep component trees affect performance.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use keys correctly to guide reconciliation.<\/p>\n<\/li>\n<li>\n<p>Structure components to localize state changes.<\/p>\n<\/li>\n<li>\n<p>Avoid complex data structures that complicate diffing.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how React decides which elements to update.<\/p>\n<\/li>\n<li>\n<p>Asked why keys are important during updates.<\/p>\n<\/li>\n<li>\n<p>Asked about performance implications in dynamic lists.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-react-suspense-and-what-does-it-enable--async-handling--performance--advanced\">49. <strong>What is React Suspense and what does it enable?<\/strong> | Async Handling \/ Performance | Advanced<\/h3>\n<p>React Suspense is a feature that allows you to handle asynchronous operations like data fetching or code splitting by showing fallback content while waiting for a resource.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>Suspense helps manage asynchronous dependencies declaratively by letting React \u201cwait\u201d until the data or code is ready before rendering the component. This makes it easier to coordinate loading states across multiple components.<\/p>\n<p><strong>Core concepts:<\/strong><\/p>\n<ul>\n<li>\n<p>Wrap components with <code>React.Suspense<\/code>.<\/p>\n<\/li>\n<li>\n<p>Provide a fallback UI while waiting.<\/p>\n<\/li>\n<li>\n<p>Combine with <code>React.lazy<\/code> or data-fetching libraries.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">const<\/span> LazyComponent <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">lazy<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token keyword\">import<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'.\/LazyComponent'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>React.Suspense<\/span> <span class=\"token attr-name\">fallback={&lt;div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Loading<span class=\"token operator\">...<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">}<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>LazyComponent<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>React.Suspense<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>Here, <code>LazyComponent<\/code> is loaded asynchronously, and \u201cLoading\u2026\u201d is displayed until it\u2019s ready.<\/p>\n<p><strong>Use cases:<\/strong><\/p>\n<ul>\n<li>\n<p>Code splitting to load components on demand.<\/p>\n<\/li>\n<li>\n<p>Handling slow data fetching in UI without showing blank states.<\/p>\n<\/li>\n<li>\n<p>Coordinating multiple async operations in a unified way.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Not wrapping lazy-loaded components inside <code>Suspense<\/code>.<\/p>\n<\/li>\n<li>\n<p>Providing overly complex fallback UIs that confuse users.<\/p>\n<\/li>\n<li>\n<p>Mixing Suspense with non-compatible libraries.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use simple and user-friendly fallback UIs.<\/p>\n<\/li>\n<li>\n<p>Combine with error boundaries to gracefully handle load failures.<\/p>\n<\/li>\n<li>\n<p>Apply Suspense only to parts of the UI that need it.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how you would improve user experience during data loading.<\/p>\n<\/li>\n<li>\n<p>Asked to explain code splitting and how Suspense helps.<\/p>\n<\/li>\n<li>\n<p>Asked how to handle fallback states without disrupting the main UI.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-what-happens-when-the-usestate-setter-function-is-called-in-react--state-management--hooks--intermediate\">50. <strong>Explain what happens when the <code>useState<\/code> setter function is called in React<\/strong> | State Management \/ Hooks | Intermediate<\/h3>\n<p>The <code>useState<\/code> setter schedules a state update, queues a re-render, and applies changes asynchronously.<\/p>\n<p><strong>Explanation:<\/strong><\/p>\n<p>When you call the setter function returned by <code>useState<\/code>, React schedules the state change and triggers a re-render of the component with the updated state. React batches multiple state updates for better performance and applies them before the next paint.<\/p>\n<p><strong>Detailed process:<\/strong><\/p>\n<ol>\n<li>\n<p>The setter is called with a new state or function.<\/p>\n<\/li>\n<li>\n<p>React queues the update.<\/p>\n<\/li>\n<li>\n<p>During the next render phase, React updates the component\u2019s state.<\/p>\n<\/li>\n<li>\n<p>React reconciles the virtual DOM and applies changes to the real DOM.<\/p>\n<\/li>\n<li>\n<p>The UI reflects the new state.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">Counter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">increment<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>prev <span class=\"token operator\">=&gt;<\/span> prev <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span><span class=\"token template-string\"><span class=\"token string\">`Count: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>count<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">`<\/span><\/span><span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>increment<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>Here, <code>setCount<\/code> schedules the state change based on the previous state.<\/p>\n<p><strong>Why the functional form is important:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>prevCount <span class=\"token operator\">=&gt;<\/span> prevCount <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p>This ensures that you always update the state based on the latest value, especially when multiple updates are batched together.<\/p>\n<p><strong>Mistakes to avoid:<\/strong><\/p>\n<ul>\n<li>\n<p>Updating state with a stale value by directly referencing it.<\/p>\n<\/li>\n<li>\n<p>Calling the setter in loops without considering batching.<\/p>\n<\/li>\n<li>\n<p>Misunderstanding that state updates are asynchronous.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use the functional update form when new state depends on the previous state.<\/p>\n<\/li>\n<li>\n<p>Avoid unnecessary state updates that cause performance bottlenecks.<\/p>\n<\/li>\n<li>\n<p>Leverage batching for efficiency.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenarios:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked what happens internally when state is updated.<\/p>\n<\/li>\n<li>\n<p>Asked why state updates may not reflect immediately.<\/p>\n<\/li>\n<li>\n<p>Asked how to manage state changes depending on previous values.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-difference-between-react.memo-and-usememo-when-would-you-use-each--performance-optimization--hooks--advanced\">51. <strong>What is the difference between <code>React.memo<\/code> and <code>useMemo<\/code>? When would you use each?<\/strong> | Performance Optimization \/ Hooks | Advanced<\/h3>\n<ul>\n<li>\n<p><code>React.memo<\/code> is a <strong>higher-order component<\/strong> that memoizes a <strong>React component<\/strong>, preventing it from re-rendering unless its props change.<\/p>\n<\/li>\n<li>\n<p><code>useMemo<\/code> is a <strong>hook<\/strong> that memoizes a <strong>computed value<\/strong> inside a component, so the value is only recalculated when its dependencies change.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useMemo <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> ExpensiveComponent <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">memo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> data <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n  console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Rendering ExpensiveComponent'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>data<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> items <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> computedValue <span class=\"token operator\">=<\/span> <span class=\"token function\">useMemo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">return<\/span> items<span class=\"token punctuation\">.<\/span><span class=\"token function\">reduce<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>acc<span class=\"token punctuation\">,<\/span> item<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> acc <span class=\"token operator\">+<\/span> item<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span>items<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>ExpensiveComponent<\/span> <span class=\"token attr-name\">data<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">{<\/span> value<span class=\"token punctuation\">:<\/span> computedValue <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Key points:<\/strong><\/p>\n<ul>\n<li>\n<p>Use <code>React.memo<\/code> to optimize <strong>component rendering<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Use <code>useMemo<\/code> to optimize <strong>expensive calculations<\/strong> inside a component.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Common pitfalls:<\/strong><\/p>\n<ul>\n<li>\n<p>Overusing memoization can <strong>increase memory usage<\/strong> without noticeable performance gain.<\/p>\n<\/li>\n<li>\n<p><code>React.memo<\/code> only does shallow comparison by default. For deep props, use a custom comparison function.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Sample interview scenario:<\/strong><\/p>\n<ul>\n<li>A candidate is asked to optimize a dashboard component that re-renders unnecessarily when unrelated state updates occur.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-does-react-handle-events-differently-from-native-dom-events--event-handling--intermediate\">52. <strong>How does React handle events differently from native DOM events?<\/strong> | Event Handling | Intermediate<\/h3>\n<ul>\n<li>\n<p>React uses a <strong>synthetic event system<\/strong> to normalize events across browsers.<\/p>\n<\/li>\n<li>\n<p>Synthetic events are <strong>pooled<\/strong>, meaning React reuses them for performance, so the event object may be nullified after the callback finishes.<\/p>\n<\/li>\n<li>\n<p>Event delegation: React attaches a single listener at the root and delegates events to components, improving performance.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">Button<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">handleClick<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">.<\/span>type<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \"click\"<\/span>\n    <span class=\"token function\">setTimeout<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">.<\/span>type<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ e may be null due to pooling<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>handleClick<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Click Me<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>If you need to use the event asynchronously, call <code>e.persist()<\/code> to retain the event object.<\/li>\n<\/ul>\n<p><strong>Interview scenario:<\/strong><\/p>\n<ul>\n<li>Explaining why React\u2019s synthetic event system prevents browser inconsistencies or how to handle async events in React.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-react-reconciliation-in-detail.-how-does-react-decide-which-components-to-update--virtual-dom--reconciliation--advanced\">53. <strong>Explain React reconciliation in detail. How does React decide which components to update?<\/strong> | Virtual DOM \/ Reconciliation | Advanced<\/h3>\n<ul>\n<li>\n<p><strong>Reconciliation<\/strong> is the process React uses to update the DOM efficiently.<\/p>\n<\/li>\n<li>\n<p>React compares the <strong>new virtual DOM<\/strong> with the <strong>previous virtual DOM<\/strong> (diffing) to determine the minimal set of changes.<\/p>\n<\/li>\n<li>\n<p>Rules:<\/p>\n<ul>\n<li>\n<p>Elements with <strong>different types<\/strong> are destroyed and recreated.<\/p>\n<\/li>\n<li>\n<p>Elements with the <strong>same type<\/strong> are updated with new props and children.<\/p>\n<\/li>\n<li>\n<p>Lists require <strong>keys<\/strong> to track items; without unique keys, React may re-render unnecessarily.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">const<\/span> items <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">'a'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'b'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'c'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">map<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>li<\/span> <span class=\"token attr-name\">key<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>item<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>item<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p><strong>Pitfalls:<\/strong><\/p>\n<ul>\n<li>Using array indices as keys can cause <strong>incorrect updates<\/strong> when the list changes.<\/li>\n<\/ul>\n<p><strong>Sample interview scenario:<\/strong><\/p>\n<ul>\n<li>Asked to explain why a component re-renders unnecessarily and how keys affect list rendering.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-\u201ctime-slicing\u201d-in-react-fiber-how-does-it-improve-performance--react-fiber--performance--advanced\">54. <strong>What is \u201ctime slicing\u201d in React Fiber? How does it improve performance?<\/strong> | React Fiber \/ Performance | Advanced<\/h3>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>\n<p>Time slicing allows React to <strong>split rendering work into small chunks<\/strong>, so the main thread isn\u2019t blocked for long periods.<\/p>\n<\/li>\n<li>\n<p>Improves <strong>UI responsiveness<\/strong>, especially for complex components or large trees.<\/p>\n<\/li>\n<li>\n<p>React can <strong>pause, yield, and resume work<\/strong>, making animations and input more fluid.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example Scenario:<\/strong><\/p>\n<ul>\n<li>A component with a heavy loop or multiple nested children may freeze the UI. With time slicing, React updates the UI in increments and keeps the app responsive.<\/li>\n<\/ul>\n<p><strong>Interview scenario:<\/strong><\/p>\n<ul>\n<li>Asked to optimize a React dashboard where large data tables cause janky scrolling.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-custom-hooks-can-you-show-an-example-of-when-to-use-one--hooks--state-management--intermediate\">55. <strong>What are custom hooks? Can you show an example of when to use one?<\/strong> | Hooks \/ State Management | Intermediate<\/h3>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>\n<p>Custom hooks are <strong>reusable functions<\/strong> that use React hooks internally.<\/p>\n<\/li>\n<li>\n<p>They encapsulate <strong>stateful logic<\/strong> and can be shared across multiple components.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> useState<span class=\"token punctuation\">,<\/span> useEffect <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">useFetch<\/span><span class=\"token punctuation\">(<\/span>url<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>data<span class=\"token punctuation\">,<\/span> setData<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>loading<span class=\"token punctuation\">,<\/span> setLoading<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">async<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">fetchData<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n      <span class=\"token keyword\">const<\/span> res <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> <span class=\"token function\">fetch<\/span><span class=\"token punctuation\">(<\/span>url<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n      <span class=\"token keyword\">const<\/span> result <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n      <span class=\"token function\">setData<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n      <span class=\"token function\">setLoading<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">false<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    <span class=\"token function\">fetchData<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span>url<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span> data<span class=\"token punctuation\">,<\/span> loading <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/\/ Usage<\/span>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> data<span class=\"token punctuation\">,<\/span> loading <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useFetch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'https:\/\/api.example.com\/data'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> loading <span class=\"token operator\">?<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Loading<span class=\"token operator\">...<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>pre<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>JSON<span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>pre<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<\/code><\/pre>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Prefix with <code>use<\/code> to follow React convention.<\/p>\n<\/li>\n<li>\n<p>Keep hooks focused; each custom hook should handle a single responsibility.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview scenario:<\/strong><\/p>\n<ul>\n<li>Asked to abstract repeated fetching logic across multiple components in an interview.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-would-you-optimize-a-large-react-application-for-performance--performance--optimization--advanced\">56. <strong>How would you optimize a large React application for performance?<\/strong> | Performance \/ Optimization | Advanced<\/h3>\n<p>Performance optimization in React focuses on <strong>minimizing unnecessary re-renders<\/strong>, <strong>efficient state management<\/strong>, and <strong>code splitting<\/strong>. Key techniques include:<\/p>\n<ol>\n<li>\n<p><strong>Memoization<\/strong><\/p>\n<ul>\n<li>Use <code>React.memo<\/code> for components and <code>useMemo<\/code> or <code>useCallback<\/code> for values\/functions.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Code splitting \/ lazy loading<\/strong><\/p>\n<ul>\n<li>Dynamically load components with <code>React.lazy<\/code> and <code>Suspense<\/code>.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Avoid anonymous functions in render<\/strong><\/p>\n<ul>\n<li>Functions inside JSX re-create on each render, causing child re-renders.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Virtualization<\/strong><\/p>\n<ul>\n<li>For large lists, use libraries like <code>react-window<\/code> to render only visible items.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Batch state updates<\/strong><\/p>\n<ul>\n<li>Use functional updates in <code>setState<\/code> to prevent multiple re-renders.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>Asked to optimize a dashboard rendering thousands of rows or charts without lag.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-react-suspense-for-data-fetching.-how-is-it-different-from-useeffect--asynchronous-handling--suspense--advanced\">57. <strong>Explain React Suspense for Data Fetching. How is it different from <code>useEffect<\/code>?<\/strong> | Asynchronous Handling \/ Suspense | Advanced<\/h3>\n<ul>\n<li>\n<p><code>useEffect<\/code> fetches data after the component mounts; Suspense allows React to <strong>wait for data before rendering<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Suspense lets you <strong>show a fallback UI<\/strong> while the data is loading.<\/p>\n<\/li>\n<li>\n<p>Works with libraries like <code>react-query<\/code>, <code>relay<\/code>, or experimental <code>React.lazy<\/code> for data.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> Suspense <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">const<\/span> Profile <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">lazy<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">fetchProfile<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Suspense<\/span> <span class=\"token attr-name\">fallback={&lt;div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Loading<span class=\"token operator\">...<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">}<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Profile<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>Suspense<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use Suspense primarily with data-fetching libraries or dynamic imports.<\/p>\n<\/li>\n<li>\n<p>Keep fallback UI simple for a smooth user experience.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Sample Interview Scenario:<\/strong><\/p>\n<ul>\n<li>Asked to implement a loading skeleton for a feed or dashboard.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-difference-between-client-side-routing-and-server-side-routing-in-react--routing--react-router--intermediate\">58. <strong>What is the difference between client-side routing and server-side routing in React?<\/strong> | Routing \/ React Router | Intermediate<\/h3>\n<ul>\n<li>\n<p><strong>Client-side routing (CSR)<\/strong><\/p>\n<ul>\n<li>\n<p>Managed in the browser using <code>react-router<\/code>.<\/p>\n<\/li>\n<li>\n<p>Fast transitions between pages; only the component updates.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Server-side routing (SSR)<\/strong><\/p>\n<ul>\n<li>\n<p>Each URL request hits the server; server returns HTML.<\/p>\n<\/li>\n<li>\n<p>Better SEO and initial load time; slower navigation without caching.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BrowserRouter <span class=\"token keyword\">as<\/span> Router<span class=\"token punctuation\">,<\/span> Routes<span class=\"token punctuation\">,<\/span> Route <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react-router-dom'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Router<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Routes<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Route<\/span> <span class=\"token attr-name\">path<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>\/<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">element={&lt;Home<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">}<\/span> <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Route<\/span> <span class=\"token attr-name\">path<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>\/about<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">element={&lt;About<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">}<\/span> <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>Routes<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>Router<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>Asked why SEO is poor for a SPA and how SSR with Next.js solves it.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-does-react.strictmode-help-detect-unsafe-lifecycles-and-side-effects--debugging--strict-mode--intermediate\">59. <strong>How does <code>React.StrictMode<\/code> help detect unsafe lifecycles and side effects?<\/strong> | Debugging \/ Strict Mode | Intermediate<\/h3>\n<ul>\n<li>\n<p><code>StrictMode<\/code> activates <strong>additional checks and warnings<\/strong> in development.<\/p>\n<\/li>\n<li>\n<p>It <strong>does not render any visible UI<\/strong> or affect production build.<\/p>\n<\/li>\n<li>\n<p>Checks include:<\/p>\n<ul>\n<li>\n<p>Detecting <strong>unsafe lifecycle methods<\/strong> (<code>componentWillMount<\/code>, etc.).<\/p>\n<\/li>\n<li>\n<p>Detecting <strong>unexpected side effects<\/strong> in <code>useEffect<\/code>.<\/p>\n<\/li>\n<li>\n<p>Warning about <strong>legacy string ref API<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Detecting <strong>deprecated findDOMNode usage<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>React.StrictMode<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>MyComponent<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>React.StrictMode<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>Asked how to identify potential bugs during development without affecting production.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-the-difference-between-reactdom.render-and-reactdom.hydrate.-when-do-you-use-each--ssr--hydration--advanced\">60. <strong>Explain the difference between <code>ReactDOM.render<\/code> and <code>ReactDOM.hydrate<\/code>. When do you use each?<\/strong> | SSR \/ Hydration | Advanced<\/h3>\n<ul>\n<li>\n<p><code>ReactDOM.render<\/code><\/p>\n<ul>\n<li>\n<p>Renders React components into a <strong>blank container<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Used for client-only applications.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><code>ReactDOM.hydrate<\/code><\/p>\n<ul>\n<li>\n<p>Used when the HTML is <strong>pre-rendered by the server (SSR)<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Attaches event listeners and makes HTML interactive without re-rendering it.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token comment\">\/\/ Client-side only<\/span>\nReactDOM<span class=\"token punctuation\">.<\/span><span class=\"token function\">render<\/span><span class=\"token punctuation\">(<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>App<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">.<\/span><span class=\"token function\">getElementById<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'root'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/ Server-side rendered<\/span>\nReactDOM<span class=\"token punctuation\">.<\/span><span class=\"token function\">hydrate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>App<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">.<\/span><span class=\"token function\">getElementById<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'root'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Use <code>hydrate<\/code> only with server-rendered HTML.<\/p>\n<\/li>\n<li>\n<p>Avoid calling <code>render<\/code> on server-rendered content, as it may replace the HTML and lose SSR benefits.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>Asked to explain how Next.js renders pages on the server and transitions to client-side interactivity.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-render-props-and-how-do-they-differ-from-higher-order-components-hocs--component-patterns--code-reuse--intermediate\">61. <strong>What are render props and how do they differ from higher-order components (HOCs)?<\/strong> | Component Patterns \/ Code Reuse | Intermediate<\/h3>\n<p>Render props and HOCs are patterns used to <strong>share logic between components<\/strong>, but they approach it differently.<\/p>\n<h4 id=\"render-props\">Render Props<\/h4>\n<p>A render prop is a function prop that a component uses to know what to render. It lets you pass data and behavior to children dynamically.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">MouseTracker<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">React<span class=\"token punctuation\">.<\/span>Component<\/span> <span class=\"token punctuation\">{<\/span>\n  state <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span> x<span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function-variable function\">handleMouseMove<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>event<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">setState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token punctuation\">:<\/span> event<span class=\"token punctuation\">.<\/span>clientX<span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">:<\/span> event<span class=\"token punctuation\">.<\/span>clientY <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">render<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">onMouseMove<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>handleMouseMove<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        <span class=\"token punctuation\">{<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>props<span class=\"token punctuation\">.<\/span><span class=\"token function\">render<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>state<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/\/ Usage<\/span>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">&lt;<\/span>MouseTracker render<span class=\"token operator\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token punctuation\">,<\/span> y <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">(<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>The mouse is <span class=\"token function\">at<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span>y<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span> <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<h4 id=\"higher-order-components-hocs\">Higher-Order Components (HOCs)<\/h4>\n<p>An HOC is a function that takes a component and returns a new enhanced component.<\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">withMouse<\/span><span class=\"token punctuation\">(<\/span>WrappedComponent<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">extends<\/span> React<span class=\"token punctuation\">.<\/span>Component <span class=\"token punctuation\">{<\/span>\n    state <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span> x<span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token function-variable function\">handleMouseMove<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>event<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n      <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">setState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token punctuation\">:<\/span> event<span class=\"token punctuation\">.<\/span>clientX<span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">:<\/span> event<span class=\"token punctuation\">.<\/span>clientY <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token function\">render<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n      <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">onMouseMove<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>handleMouseMove<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>WrappedComponent<\/span> <span class=\"token spread\"><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">...<\/span><span class=\"token attr-value\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token attr-value\">props<\/span><span class=\"token punctuation\">}<\/span><\/span> <span class=\"token attr-name\">mouse<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>state<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">DisplayMouse<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> mouse <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>The mouse is <span class=\"token function\">at<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>mouse<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span>mouse<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">const<\/span> EnhancedDisplay <span class=\"token operator\">=<\/span> <span class=\"token function\">withMouse<\/span><span class=\"token punctuation\">(<\/span>DisplayMouse<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p><strong>Differences:<\/strong><\/p>\n\n<table>\n<thead>\n<tr>\n<th>Aspect<\/th>\n<th>Render Props<\/th>\n<th>HOC<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>How it works<\/td>\n<td>Passes a function as a prop<\/td>\n<td>Wraps a component<\/td>\n<\/tr>\n<tr>\n<td>Syntax complexity<\/td>\n<td>Slightly simpler and more composable<\/td>\n<td>Requires extra layers<\/td>\n<\/tr>\n<tr>\n<td>Debugging<\/td>\n<td>Easier due to explicit structure<\/td>\n<td>Can be harder with nested components<\/td>\n<\/tr>\n<\/tbody>\n<\/table><p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked to refactor shared logic between components without repeating code.<\/p>\n<\/li>\n<li>\n<p>Asked about patterns for code reuse in React.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-the-difference-between-useeffect-cleanup-and-componentwillunmount-in-class-components.--lifecycle--hooks--intermediate\">62. <strong>Explain the difference between <code>useEffect<\/code> cleanup and <code>componentWillUnmount<\/code> in class components.<\/strong> | Lifecycle \/ Hooks | Intermediate<\/h3>\n<p>Both handle <strong>cleaning up resources<\/strong>, but they belong to different paradigms.<\/p>\n<ul>\n<li><code>componentWillUnmount<\/code> is a lifecycle method used in class components to clean up things like timers or subscriptions before the component is removed.<\/li>\n<\/ul>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Timer<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">React<span class=\"token punctuation\">.<\/span>Component<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token function\">componentDidMount<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>interval <span class=\"token operator\">=<\/span> <span class=\"token function\">setInterval<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'tick'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n\n  <span class=\"token function\">componentWillUnmount<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token function\">clearInterval<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>interval<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n\n  <span class=\"token function\">render<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Timer running<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<ul>\n<li><code>useEffect<\/code> with a return function acts similarly in functional components. The cleanup runs when the component unmounts or before the effect runs again.<\/li>\n<\/ul>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> useEffect <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Timer<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">const<\/span> interval <span class=\"token operator\">=<\/span> <span class=\"token function\">setInterval<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'tick'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">clearInterval<\/span><span class=\"token punctuation\">(<\/span>interval<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Timer running<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Key differences:<\/strong><\/p>\n<ul>\n<li>\n<p><code>componentWillUnmount<\/code> only runs when the component is about to be removed.<\/p>\n<\/li>\n<li>\n<p><code>useEffect<\/code> cleanup can run before the next effect, depending on dependencies.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to prevent memory leaks in React apps.<\/p>\n<\/li>\n<li>\n<p>Asked to refactor class-based code to hooks while preserving cleanup logic.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-would-you-implement-a-react-component-that-subscribes-to-an-external-data-source-and-cleans-up-correctly--hooks--asynchronous-updates--intermediate\u2013advanced\">63. <strong>How would you implement a React component that subscribes to an external data source and cleans up correctly?<\/strong> | Hooks \/ Asynchronous Updates | Intermediate\u2013Advanced<\/h3>\n<p>A component subscribing to an external service (e.g., WebSocket, API polling) must manage subscriptions and clean them up when the component unmounts.<\/p>\n<p><strong>Example: WebSocket Subscription<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> useState<span class=\"token punctuation\">,<\/span> useEffect <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Chat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>messages<span class=\"token punctuation\">,<\/span> setMessages<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">const<\/span> socket <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">WebSocket<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'wss:\/\/chat.example.com'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n    socket<span class=\"token punctuation\">.<\/span><span class=\"token function-variable function\">onmessage<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>event<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n      <span class=\"token function\">setMessages<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>prev<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token operator\">...<\/span>prev<span class=\"token punctuation\">,<\/span> event<span class=\"token punctuation\">.<\/span>data<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n      socket<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token punctuation\">{<\/span>messages<span class=\"token punctuation\">.<\/span><span class=\"token function\">map<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>msg<span class=\"token punctuation\">,<\/span> index<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">key<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>index<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>msg<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Best practices:<\/strong><\/p>\n<ul>\n<li>\n<p>Always close subscriptions in the cleanup function.<\/p>\n<\/li>\n<li>\n<p>Avoid stale closures by using functional updates when setting state.<\/p>\n<\/li>\n<li>\n<p>Use dependency arrays carefully to prevent unwanted resubscriptions.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>Asked to implement real-time data updates without introducing memory leaks or performance issues.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-difference-between-react-server-components-and-client-components--react-18--ssr--advanced\">64. <strong>What is the difference between React server components and client components?<\/strong> | React 18 \/ SSR | Advanced<\/h3>\n<p>React Server Components (RSC) allow parts of the UI to be rendered on the server without sending unnecessary JavaScript to the client, improving performance.<\/p>\n\n<table>\n<thead>\n<tr>\n<th>Feature<\/th>\n<th align=\"right\">Server Components<\/th>\n<th align=\"right\">Client Components<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Render location<\/td>\n<td align=\"right\">Server-side<\/td>\n<td align=\"right\">Client-side<\/td>\n<\/tr>\n<tr>\n<td>State &amp; hooks<\/td>\n<td align=\"right\">Limited (no local state\/hooks)<\/td>\n<td align=\"right\">Full support<\/td>\n<\/tr>\n<tr>\n<td>Bundle size<\/td>\n<td align=\"right\">Smaller for client<\/td>\n<td align=\"right\">Larger due to dependencies<\/td>\n<\/tr>\n<tr>\n<td>Use case<\/td>\n<td align=\"right\">Data fetching, static content<\/td>\n<td align=\"right\">Interactivity, event handlers<\/td>\n<\/tr>\n<\/tbody>\n<\/table><p><strong>Example (conceptual):<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token comment\">\/\/ Server Component (no interactivity)<\/span>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">UserList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> users <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>ul<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token punctuation\">{<\/span>users<span class=\"token punctuation\">.<\/span><span class=\"token function\">map<\/span><span class=\"token punctuation\">(<\/span>user <span class=\"token operator\">=&gt;<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>li<\/span> <span class=\"token attr-name\">key<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>user<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>user<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>ul<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/\/ Client Component (interactive)<\/span>\n<span class=\"token string\">'use client'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> useState <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">AddUser<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> onAdd <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>name<span class=\"token punctuation\">,<\/span> setName<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">''<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>input<\/span> <span class=\"token attr-name\">value<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token attr-name\">onChange<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setName<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">.<\/span>target<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">onAdd<\/span><span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Add User<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>Asked how to optimize initial page load or differentiate interactive vs static parts of the UI in Next.js or similar frameworks.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-do-you-prevent-unnecessary-re-renders-in-react-components--performance--optimization--advanced\">65. <strong>How do you prevent unnecessary re-renders in React components?<\/strong> | Performance \/ Optimization | Advanced<\/h3>\n<p>Unnecessary re-renders can slow down applications. Key strategies include:<\/p>\n<ol>\n<li>\n<p><strong>Use <code>React.memo<\/code><\/strong><\/p>\n<ul>\n<li>Wrap components to skip re-rendering if props haven\u2019t changed.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Use <code>useMemo<\/code> and <code>useCallback<\/code><\/strong><\/p>\n<ul>\n<li>Memoize values and functions passed as props.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Manage state wisely<\/strong><\/p>\n<ul>\n<li>Avoid storing unrelated data in a shared state that triggers re-renders.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Split state into smaller parts<\/strong><\/p>\n<ul>\n<li>Localize state where possible to limit updates.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Use selectors or context wisely<\/strong><\/p>\n<ul>\n<li>Avoid passing large objects unnecessarily.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">const<\/span> Child <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">memo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> value <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n  console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Child rendered'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>value<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Parent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>text<span class=\"token punctuation\">,<\/span> setText<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">''<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&gt;<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Child<\/span> <span class=\"token attr-name\">value<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>input<\/span> <span class=\"token attr-name\">value<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>text<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token attr-name\">onChange<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setText<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">.<\/span>target<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>Asked how to optimize a component that re-renders unnecessarily due to state changes elsewhere.<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-react.memo-and-when-should-you-use-it--performance--optimization--intermediate\u2013advanced\">66. <strong>What is React.memo and when should you use it?<\/strong> | Performance \/ Optimization | Intermediate\u2013Advanced<\/h3>\n<p><code>React.memo<\/code> is a higher-order component (HOC) that helps prevent unnecessary re-renders by memoizing the result. It shallowly compares the previous and next props and only re-renders the component if the props have changed.<\/p>\n<p><strong>Usage Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">const<\/span> Child <span class=\"token operator\">=<\/span> React<span class=\"token punctuation\">.<\/span><span class=\"token function\">memo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> name <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n  console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Child rendered'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Hello<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><span class=\"token operator\">!<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Parent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>name<span class=\"token punctuation\">,<\/span> setName<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Alice\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>Child<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Increment Count<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>In this example, clicking the \u201cIncrement Count\u201d button will not cause the <code>Child<\/code> component to re-render because the <code>name<\/code> prop hasn\u2019t changed.<\/p>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>When a component receives props that don\u2019t change frequently.<\/p>\n<\/li>\n<li>\n<p>For functional components that are expensive to render.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Sample Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to optimize render performance in a large component tree.<\/p>\n<\/li>\n<li>\n<p>Asked why a child component is re-rendering even though its props seem unchanged.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-difference-between-react.memo-and-usememo--performance--optimization--intermediate\u2013advanced\">67. <strong>What is the difference between <code>React.memo<\/code> and <code>useMemo<\/code>?<\/strong> | Performance \/ Optimization | Intermediate\u2013Advanced<\/h3>\n<p>Both <code>React.memo<\/code> and <code>useMemo<\/code> are used for memoization but in different contexts:<\/p>\n\n<table>\n<thead>\n<tr>\n<th>Feature<\/th>\n<th align=\"right\">React.memo<\/th>\n<th align=\"right\">useMemo<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>What it memoizes<\/td>\n<td align=\"right\">Entire component\u2019s render output<\/td>\n<td align=\"right\">The result of a calculation or function<\/td>\n<\/tr>\n<tr>\n<td>Where used<\/td>\n<td align=\"right\">Wraps functional components<\/td>\n<td align=\"right\">Inside functional components<\/td>\n<\/tr>\n<tr>\n<td>Purpose<\/td>\n<td align=\"right\">Avoid unnecessary renders<\/td>\n<td align=\"right\">Avoid recalculations<\/td>\n<\/tr>\n<\/tbody>\n<\/table><p><strong>Example using <code>useMemo<\/code>:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">Parent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> count <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> expensiveValue <span class=\"token operator\">=<\/span> <span class=\"token function\">useMemo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Calculating...'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">return<\/span> count <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Result<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span>expensiveValue<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<\/code><\/pre>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Use <code>React.memo<\/code> when you want to avoid unnecessary renders of child components.<\/p>\n<\/li>\n<li>\n<p>Use <code>useMemo<\/code> when you have expensive computations inside a component.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to prevent redundant computations or renders in a performance-sensitive React app.<\/p>\n<\/li>\n<li>\n<p>Asked to distinguish between component-level and value-level optimizations.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-react-event-system-and-how-is-it-different-from-native-dom-events--event-handling--intermediate\">68. <strong>What is the React event system and how is it different from native DOM events?<\/strong> | Event Handling | Intermediate<\/h3>\n<p>React uses a <strong>synthetic event system<\/strong> that wraps native DOM events to ensure consistent behavior across browsers.<\/p>\n<p><strong>Key differences:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>Cross-browser compatibility:<\/strong> React normalizes events to work the same in all browsers.<\/p>\n<\/li>\n<li>\n<p><strong>Event delegation:<\/strong> Events are attached at the root of the document, reducing memory usage and improving performance.<\/p>\n<\/li>\n<li>\n<p><strong>Consistent event object:<\/strong> React\u2019s <code>SyntheticEvent<\/code> abstracts away browser-specific quirks.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">Button<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">handleClick<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>event<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Button clicked!'<\/span><span class=\"token punctuation\">,<\/span> event<span class=\"token punctuation\">.<\/span>type<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>handleClick<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Click Me<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Common pitfalls:<\/strong><\/p>\n<ul>\n<li>\n<p>Assuming that React\u2019s event object persists after the handler is complete (it gets pooled).<\/p>\n<\/li>\n<li>\n<p>Using browser-specific event properties without checking compatibility.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Best practice:<\/strong><\/p>\n<ul>\n<li>If you need to use the event asynchronously, call <code>event.persist()<\/code> or copy the properties you need.<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how React handles events differently from the DOM.<\/p>\n<\/li>\n<li>\n<p>Asked how to implement event delegation or manage performance in event-heavy components.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-custom-hooks-and-why-should-you-use-them--hooks--code-reuse--intermediate\">69. <strong>What are custom hooks and why should you use them?<\/strong> | Hooks \/ Code Reuse | Intermediate<\/h3>\n<p>Custom hooks are reusable functions built on top of React\u2019s built-in hooks (<code>useState<\/code>, <code>useEffect<\/code>, etc.). They allow you to encapsulate logic that can be shared across multiple components.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> useState<span class=\"token punctuation\">,<\/span> useEffect <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">useWindowWidth<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>width<span class=\"token punctuation\">,<\/span> setWidth<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span>window<span class=\"token punctuation\">.<\/span>innerWidth<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">handleResize<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setWidth<\/span><span class=\"token punctuation\">(<\/span>window<span class=\"token punctuation\">.<\/span>innerWidth<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    window<span class=\"token punctuation\">.<\/span><span class=\"token function\">addEventListener<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'resize'<\/span><span class=\"token punctuation\">,<\/span> handleResize<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> window<span class=\"token punctuation\">.<\/span><span class=\"token function\">removeEventListener<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'resize'<\/span><span class=\"token punctuation\">,<\/span> handleResize<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> width<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Component<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> width <span class=\"token operator\">=<\/span> <span class=\"token function\">useWindowWidth<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Window width is <span class=\"token punctuation\">{<\/span>width<span class=\"token punctuation\">}<\/span>px<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Why use custom hooks:<\/strong><\/p>\n<ul>\n<li>\n<p>Avoid repeating logic across components.<\/p>\n<\/li>\n<li>\n<p>Improve maintainability and readability.<\/p>\n<\/li>\n<li>\n<p>Keep component code focused on UI rendering.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to share logic between components without duplicating code.<\/p>\n<\/li>\n<li>\n<p>Asked to refactor a class component with repeated logic into hooks.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-time-slicing-in-react-and-why-is-it-important--react-internals--performance--advanced\">70. <strong>What is time slicing in React and why is it important?<\/strong> | React Internals \/ Performance | Advanced<\/h3>\n<p>Time slicing is a feature introduced with <strong>React Fiber<\/strong> that allows rendering work to be split into small chunks and spread over multiple frames. This prevents the UI from blocking and keeps it responsive, especially for complex or long tasks.<\/p>\n<p><strong>How it works:<\/strong><\/p>\n<ul>\n<li>\n<p>React prioritizes urgent tasks (like animations or user interactions).<\/p>\n<\/li>\n<li>\n<p>Non-urgent tasks (like rendering large lists) are spread out to avoid blocking the main thread.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example use case:<\/strong><br>\nRendering thousands of items without freezing the UI by using Suspense and lazy loading.<\/p>\n<p><strong>Benefits:<\/strong><\/p>\n<ul>\n<li>\n<p>Smoother animations and interactions.<\/p>\n<\/li>\n<li>\n<p>Avoids freezing the main thread during heavy rendering.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Limitations:<\/strong><\/p>\n<ul>\n<li>Not all work is automatically time sliced; developers need to structure components and use features like <code>Suspense<\/code> to take advantage of it.<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to handle rendering large datasets without impacting UI responsiveness.<\/p>\n<\/li>\n<li>\n<p>Asked to explain improvements React Fiber brought over the previous architecture.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-would-you-implement-optimistic-ui-updates-in-react-applications--state-management--ux-patterns--advanced\">71. <strong>How would you implement optimistic UI updates in React applications?<\/strong> | State Management \/ UX Patterns | Advanced<\/h3>\n<p>Optimistic UI updates refer to updating the UI immediately, assuming that the action (like a server request) will succeed, and rolling back if it fails. This improves perceived performance and responsiveness.<\/p>\n<p><strong>Steps to implement:<\/strong><\/p>\n<ol>\n<li>\n<p>Update the UI state immediately upon user action.<\/p>\n<\/li>\n<li>\n<p>Send the request to the server.<\/p>\n<\/li>\n<li>\n<p>If the request succeeds, confirm the update or fetch fresh data.<\/p>\n<\/li>\n<li>\n<p>If the request fails, revert the state and show an error.<\/p>\n<\/li>\n<\/ol>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">TodoApp<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>todos<span class=\"token punctuation\">,<\/span> setTodos<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">{<\/span> id<span class=\"token punctuation\">:<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> text<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Learn React'<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>error<span class=\"token punctuation\">,<\/span> setError<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">const<\/span> addTodo <span class=\"token operator\">=<\/span> <span class=\"token keyword\">async<\/span> <span class=\"token punctuation\">(<\/span>newTodo<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">const<\/span> optimisticTodo <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span> id<span class=\"token punctuation\">:<\/span> Date<span class=\"token punctuation\">.<\/span><span class=\"token function\">now<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> text<span class=\"token punctuation\">:<\/span> newTodo <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token function\">setTodos<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token operator\">...<\/span>todos<span class=\"token punctuation\">,<\/span> optimisticTodo<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ Step 1: Optimistic update<\/span>\n\n    <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span>\n      <span class=\"token keyword\">await<\/span> <span class=\"token function\">fetch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'\/api\/todos'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span>\n        method<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'POST'<\/span><span class=\"token punctuation\">,<\/span>\n        body<span class=\"token punctuation\">:<\/span> JSON<span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span>optimisticTodo<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">err<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n      <span class=\"token function\">setError<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Failed to add todo'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n      <span class=\"token function\">setTodos<\/span><span class=\"token punctuation\">(<\/span>todos<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ Rollback<\/span>\n    <span class=\"token punctuation\">}<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token punctuation\">{<\/span>error <span class=\"token operator\">&amp;&amp;<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>p<\/span> <span class=\"token attr-name\">style<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">{<\/span>color<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'red'<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>error<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>p<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">}<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">addTodo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'New Task'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Add Todo<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>ul<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>todos<span class=\"token punctuation\">.<\/span><span class=\"token function\">map<\/span><span class=\"token punctuation\">(<\/span>todo <span class=\"token operator\">=&gt;<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>li<\/span> <span class=\"token attr-name\">key<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>todo<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>todo<span class=\"token punctuation\">.<\/span>text<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>li<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>ul<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>When user experience is a priority and server latency can be unpredictable.<\/p>\n<\/li>\n<li>\n<p>In scenarios like form submissions, data updates, etc.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to make the UI feel snappy even if the backend is slow.<\/p>\n<\/li>\n<li>\n<p>Asked to explain how to handle failure cases in real-time applications.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"how-do-you-handle-accessibility-a11y-in-a-react-application--ui--accessibility--intermediate\">72. <strong>How do you handle accessibility (a11y) in a React application?<\/strong> | UI \/ Accessibility | Intermediate<\/h3>\n<p>Accessibility ensures that your application can be used by people with disabilities. React encourages semantic HTML and attributes like <code>aria-*<\/code> to improve accessibility.<\/p>\n<p><strong>Key techniques:<\/strong><\/p>\n<ul>\n<li>\n<p>Use semantic elements like <code>&lt;button&gt;<\/code>, <code>&lt;nav&gt;<\/code>, <code>&lt;form&gt;<\/code>.<\/p>\n<\/li>\n<li>\n<p>Add <code>aria-label<\/code>, <code>aria-describedby<\/code>, and <code>aria-expanded<\/code> where needed.<\/p>\n<\/li>\n<li>\n<p>Ensure proper keyboard navigation (using <code>tabIndex<\/code>, etc.).<\/p>\n<\/li>\n<li>\n<p>Manage focus for modals or dialogs.<\/p>\n<\/li>\n<li>\n<p>Use libraries like <code>react-aria<\/code> or <code>react-axe<\/code> to audit accessibility.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">function<\/span> <span class=\"token function\">Modal<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> isOpen<span class=\"token punctuation\">,<\/span> onClose <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> isOpen <span class=\"token operator\">?<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">role<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>dialog<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">aria-modal<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>true<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">aria-labelledby<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>dialog-title<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h2<\/span> <span class=\"token attr-name\">id<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>dialog-title<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Subscribe<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h2<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>onClose<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Close<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to make web applications inclusive.<\/p>\n<\/li>\n<li>\n<p>Asked how to fix keyboard navigation issues.<\/p>\n<\/li>\n<li>\n<p>Asked how to use <code>aria<\/code> attributes in forms or dialogs.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-are-react-portals-and-when-would-you-use-them-can-you-give-a-complex-example--ui--dom-manipulation--intermediate\">73. <strong>What are React Portals and when would you use them? Can you give a complex example?<\/strong> | UI \/ DOM Manipulation | Intermediate<\/h3>\n<p>React Portals allow rendering components outside of the parent DOM hierarchy while keeping React\u2019s state and context intact. This is useful for modals, tooltips, dropdowns, etc., that need to break out of layout constraints.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> ReactDOM <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react-dom'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">Modal<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> children<span class=\"token punctuation\">,<\/span> isOpen<span class=\"token punctuation\">,<\/span> onClose <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token operator\">!<\/span>isOpen<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> ReactDOM<span class=\"token punctuation\">.<\/span><span class=\"token function\">createPortal<\/span><span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">className<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>modal-backdrop<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>onClose<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">className<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>modal-content<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> e<span class=\"token punctuation\">.<\/span><span class=\"token function\">stopPropagation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n        <span class=\"token punctuation\">{<\/span>children<span class=\"token punctuation\">}<\/span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">,<\/span>\n    document<span class=\"token punctuation\">.<\/span><span class=\"token function\">getElementById<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'modal-root'<\/span><span class=\"token punctuation\">)<\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<\/code><\/pre>\n<p><strong>Complex example:<\/strong><\/p>\n<ul>\n<li>\n<p>Modal with focus trap and keyboard accessibility.<\/p>\n<\/li>\n<li>\n<p>Tooltips rendered relative to a button but outside overflow boundaries.<\/p>\n<\/li>\n<\/ul>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>UI elements that need to overlay other content.<\/p>\n<\/li>\n<li>\n<p>Avoid issues with CSS stacking context, z-index, or overflow.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to implement modals or dropdowns without layout issues.<\/p>\n<\/li>\n<li>\n<p>Asked how to separate overlay elements while maintaining state and props.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"explain-the-difference-between-shallow-rendering-and-full-dom-rendering-in-react-testing.--testing--react-testing-library--intermediate\">74. <strong>Explain the difference between shallow rendering and full DOM rendering in React testing.<\/strong> | Testing \/ React Testing Library | Intermediate<\/h3>\n<p>In testing, shallow rendering and full DOM rendering are two different approaches to isolate component behavior.<\/p>\n<p><strong>Shallow rendering:<\/strong><\/p>\n<ul>\n<li>\n<p>Renders the component without rendering its child components.<\/p>\n<\/li>\n<li>\n<p>Used to test a component\u2019s output in isolation.<\/p>\n<\/li>\n<li>\n<p>Provided by tools like <code>enzyme<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Full DOM rendering:<\/strong><\/p>\n<ul>\n<li>\n<p>Renders the entire component tree.<\/p>\n<\/li>\n<li>\n<p>Suitable for integration tests where you need to interact with nested components or lifecycle methods.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> shallow<span class=\"token punctuation\">,<\/span> mount <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'enzyme'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">import<\/span> MyComponent <span class=\"token keyword\">from<\/span> <span class=\"token string\">'.\/MyComponent'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token function\">test<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'shallow test'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> wrapper <span class=\"token operator\">=<\/span> <span class=\"token function\">shallow<\/span><span class=\"token punctuation\">(<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>MyComponent<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token function\">expect<\/span><span class=\"token punctuation\">(<\/span>wrapper<span class=\"token punctuation\">.<\/span><span class=\"token function\">find<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'button'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">exists<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">toBe<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token function\">test<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'full render test'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> wrapper <span class=\"token operator\">=<\/span> <span class=\"token function\">mount<\/span><span class=\"token punctuation\">(<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>MyComponent<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token function\">expect<\/span><span class=\"token punctuation\">(<\/span>wrapper<span class=\"token punctuation\">.<\/span><span class=\"token function\">find<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'ChildComponent'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">toBe<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Use shallow rendering for unit tests.<\/p>\n<\/li>\n<li>\n<p>Use full DOM rendering for complex interactions or state changes.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how to write test cases that isolate logic versus testing full UI behavior.<\/p>\n<\/li>\n<li>\n<p>Asked when to use enzyme vs React Testing Library.<\/p>\n<\/li>\n<\/ul>\n<hr>\n<h3 id=\"what-is-the-difference-between-server-components-and-client-components-in-react--react-18--architecture--advanced\">75. <strong>What is the difference between server components and client components in React?<\/strong> | React 18+ \/ Architecture | Advanced<\/h3>\n<p>React 18 introduces <strong>server components<\/strong>, which are rendered on the server and streamed to the client, unlike client components that are fully loaded and executed on the browser.<\/p>\n<p><strong>Key differences:<\/strong><\/p>\n\n<table>\n<thead>\n<tr>\n<th>Feature<\/th>\n<th align=\"right\">Server Components<\/th>\n<th align=\"right\">Client Components<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Rendering location<\/td>\n<td align=\"right\">Server<\/td>\n<td align=\"right\">Browser<\/td>\n<\/tr>\n<tr>\n<td>JavaScript payload<\/td>\n<td align=\"right\">Minimal or none<\/td>\n<td align=\"right\">Full bundle<\/td>\n<\/tr>\n<tr>\n<td>Data fetching<\/td>\n<td align=\"right\">Direct from server-side APIs<\/td>\n<td align=\"right\">Needs client-side calls<\/td>\n<\/tr>\n<tr>\n<td>Use case<\/td>\n<td align=\"right\">Static content, SEO, performance<\/td>\n<td align=\"right\">Interactivity, event handling<\/td>\n<\/tr>\n<\/tbody>\n<\/table><p><strong>Example:<\/strong><\/p>\n<pre class=\" language-jsx\"><code class=\"prism  language-jsx\"><span class=\"token comment\">\/\/ Server Component (no hooks or browser-specific code)<\/span>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">ProductList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> products <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n      <span class=\"token punctuation\">{<\/span>products<span class=\"token punctuation\">.<\/span><span class=\"token function\">map<\/span><span class=\"token punctuation\">(<\/span>product <span class=\"token operator\">=&gt;<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">key<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>product<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">{<\/span>product<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/\/ Client Component (with interactivity)<\/span>\n<span class=\"token string\">\"use client\"<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> useState <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">CartButton<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>button<\/span> <span class=\"token attr-name\">onClick<\/span><span class=\"token script language-javascript\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span>count <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Add <span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>button<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p><strong>When to use:<\/strong><\/p>\n<ul>\n<li>\n<p>Server components: for static or SEO-heavy pages.<\/p>\n<\/li>\n<li>\n<p>Client components: for interactive or state-driven UI.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Interview Scenario:<\/strong><\/p>\n<ul>\n<li>\n<p>Asked how React\u2019s architecture is evolving.<\/p>\n<\/li>\n<li>\n<p>Asked how server-side rendering impacts performance and scalability.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/body>\n\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>React Blind 75 This guide is a carefully curated collection of 75 React interview questions designed to help learners build a deep understanding of React and confidently crack technical interviews at product-based companies, startups, and top-tier organizations. The questions are structured progressively, starting from the fundamentals and moving toward advanced concepts, including state management, hooks,<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-10074","post","type-post","status-publish","format-standard","category-uncategorized"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/10074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/comments?post=10074"}],"version-history":[{"count":1,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/10074\/revisions"}],"predecessor-version":[{"id":10075,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/10074\/revisions\/10075"}],"wp:attachment":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/media?parent=10074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/categories?post=10074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/tags?post=10074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}