logo Online Learner
  • Home
  • Learning Paths
  • Notes
  • Free Resume Builder
  • Portfolio
  • About Us
  • Contact Us
  • Login
  • Sign Up
  1. Learning Paths
  2. React Tutorial
  3. React Performance Optimization with useMemo

Understanding useMemo for Performance Optimization

In React applications, performance can suffer when components perform expensive calculations on every render. This is especially problematic when these calculations aren't necessary because their dependencies haven't changed. React's useMemo hook provides an elegant solution to this problem.

What is useMemo?

useMemo is a React hook that memoizes expensive calculations. It remembers the result of a computation and only recalculates it when specific dependencies change. This prevents unnecessary recalculations on every render, leading to better performance.

How useMemo Works

The useMemo hook takes two arguments:

  1. A function that performs the calculation
  2. A dependency array that specifies when to recalculate

When the component renders, React checks the dependencies. If they haven't changed since the last render, useMemo returns the cached result. If dependencies have changed, it executes the function again and caches the new result.

Basic Syntax

const memoizedValue = useMemo(() => {
  // Expensive calculation
  return computedValue;
}, [dependency1, dependency2]);

Simple Example Without useMemo

Let's first see a problem case:

function ExpensiveCalculationComponent({ numbers }) {
  // This expensive calculation runs on every render
  const calculateSum = () => {
    console.log('Calculating sum...');
    return numbers.reduce((sum, num) => sum + num, 0);
  };
  
  const sum = calculateSum();
  
  return (
    <div>
      <h2>Sum: {sum}</h2>
      <p>Numbers: {numbers.join(', ')}</p>
    </div>
  );
}

In this component, calculateSum runs on every render, even when the numbers prop hasn't changed.

Same Example With useMemo

Now, let's optimize with useMemo:

function ExpensiveCalculationComponent({ numbers }) {
  const sum = useMemo(() => {
    console.log('Calculating sum with useMemo...');
    return numbers.reduce((sum, num) => sum + num, 0);
  }, [numbers]); // Only recalculate when 'numbers' changes
  
  return (
    <div>
      <h2>Sum: {sum}</h2>
      <p>Numbers: {numbers.join(', ')}</p>
    </div>
  );
}

Now the sum calculation only runs when the numbers array changes, not on every render.

When to Use useMemo

Use useMemo when:

  1. Performing expensive calculations: Complex computations, data transformations, or filtering large arrays
  2. Creating derived data: When you need to compute values based on props or state
  3. Preventing unnecessary re-renders: When passing computed values as props to memoized child components
  4. Referential equality matters: When you need to maintain the same object reference across renders

Practical Example: Filtering and Sorting Data

Here's a real-world example of filtering and sorting a user list:

function UserList({ users, searchQuery, sortBy }) {
  // Memoize the filtered and sorted users
  const filteredAndSortedUsers = useMemo(() => {
    console.log('Filtering and sorting users...');
    
    // Filter users based on search query
    const filtered = users.filter(user =>
      user.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
      user.email.toLowerCase().includes(searchQuery.toLowerCase())
    );
    
    // Sort users based on sortBy criteria
    return filtered.sort((a, b) => {
      if (sortBy === 'name') {
        return a.name.localeCompare(b.name);
      }
      if (sortBy === 'age') {
        return a.age - b.age;
      }
      return 0;
    });
  }, [users, searchQuery, sortBy]); // Recalculate when any dependency changes
  
  return (
    <div>
      <h2>Users ({filteredAndSortedUsers.length})</h2>
      <ul>
        {filteredAndSortedUsers.map(user => (
          <li key={user.id}>
            {user.name} - {user.email} (Age: {user.age})
          </li>
        ))}
      </ul>
    </div>
  );
}

Example: Expensive Mathematical Calculation

function FibonacciCalculator({ n }) {
  // Memoize expensive Fibonacci calculation
  const fibonacciNumber = useMemo(() => {
    console.log(`Calculating Fibonacci(${n})...`);
    
    // Recursive Fibonacci (expensive for large n)
    function fib(num) {
      if (num <= 1) return num;
      return fib(num - 1) + fib(num - 2);
    }
    
    return fib(n);
  }, [n]); // Only recalculate when n changes
  
  return (
    <div>
      <h3>Fibonacci({n}) = {fibonacciNumber}</h3>
      <p>This expensive calculation is memoized with useMemo</p>
    </div>
  );
}

Example: Formatting Dates or Numbers

function ProductDisplay({ product, locale, currency }) {
  // Memoize formatted price to avoid formatting on every render
  const formattedPrice = useMemo(() => {
    console.log('Formatting price...');
    return new Intl.NumberFormat(locale, {
      style: 'currency',
      currency: currency
    }).format(product.price);
  }, [product.price, locale, currency]);
  
  // Memoize formatted date
  const formattedDate = useMemo(() => {
    console.log('Formatting date...');
    return new Date(product.createdAt).toLocaleDateString(locale, {
      year: 'numeric',
      month: 'long',
      day: 'numeric'
    });
  }, [product.createdAt, locale]);
  
  return (
    <div className="product-card">
      <h2>{product.name}</h2>
      <p>Price: {formattedPrice}</p>
      <p>Added: {formattedDate}</p>
      <p>Category: {product.category}</p>
    </div>
  );
}

Common Pitfalls and Best Practices

  1. Don't overuse useMemo: For simple calculations, the overhead might outweigh benefits
  2. Include all dependencies: Missing dependencies can lead to stale values
  3. Not a guarantee of single execution: React may still recalculate in development or for other reasons
  4. Combine with React.memo: Use useMemo for values passed to memoized components

useMemo vs React.memo

  • useMemo: Memoizes values within a component
  • React.memo: Memoizes entire components based on props
  • Use together: useMemo for expensive calculations, React.memo for component re-renders

Complete Example: Dashboard with Multiple Calculations

function Dashboard({ salesData, startDate, endDate }) {
  // Memoize filtered sales data
  const filteredSales = useMemo(() => {
    console.log('Filtering sales data...');
    return salesData.filter(sale => 
      sale.date >= startDate && sale.date <= endDate
    );
  }, [salesData, startDate, endDate]);
  
  // Memoize total revenue
  const totalRevenue = useMemo(() => {
    console.log('Calculating total revenue...');
    return filteredSales.reduce((total, sale) => total + sale.amount, 0);
  }, [filteredSales]);
  
  // Memoize average sale
  const averageSale = useMemo(() => {
    console.log('Calculating average sale...');
    return filteredSales.length > 0 
      ? totalRevenue / filteredSales.length 
      : 0;
  }, [filteredSales, totalRevenue]);
  
  // Memoize top products
  const topProducts = useMemo(() => {
    console.log('Calculating top products...');
    const productMap = {};
    
    filteredSales.forEach(sale => {
      productMap[sale.product] = (productMap[sale.product] || 0) + 1;
    });
    
    return Object.entries(productMap)
      .sort((a, b) => b[1] - a[1])
      .slice(0, 5)
      .map(([product, count]) => ({ product, count }));
  }, [filteredSales]);
  
  return (
    <div className="dashboard">
      <h1>Sales Dashboard</h1>
      <div className="metrics">
        <div className="metric-card">
          <h3>Total Sales</h3>
          <p>{filteredSales.length}</p>
        </div>
        <div className="metric-card">
          <h3>Total Revenue</h3>
          <p>${totalRevenue.toFixed(2)}</p>
        </div>
        <div className="metric-card">
          <h3>Average Sale</h3>
          <p>${averageSale.toFixed(2)}</p>
        </div>
      </div>
      <div className="top-products">
        <h3>Top Products</h3>
        <ul>
          {topProducts.map(item => (
            <li key={item.product}>
              {item.product}: {item.count} sales
            </li>
          ))}
        </ul>
      </div>
    </div>
  );
}

Interview Questions and Answers on useMemo

1. What is useMemo and what problem does it solve?

Answer: useMemo is a React hook that memoizes the result of expensive calculations. It solves the performance problem of unnecessary recalculations on every render. By caching the result and only recalculating when dependencies change, useMemo prevents wasted computation cycles and improves application performance.

2. How does useMemo differ from useEffect?

Answer: useMemo is for memoizing values and runs during rendering, while useEffect is for side effects and runs after rendering. useMemo returns a value that can be used in the render, whereas useEffect doesn't return anything and is used for operations like data fetching, subscriptions, or DOM manipulations.

3. When should you use useMemo?

Answer: You should use useMemo when:

  • Performing expensive calculations or transformations
  • Creating derived data from props or state
  • Maintaining referential equality for objects/arrays passed as props
  • The calculation has clear dependencies that don't change often
  • Optimizing performance of child components that depend on the calculated value

4. When should you avoid using useMemo?

Answer: Avoid useMemo when:

  • The calculation is simple and cheap
  • The dependencies change on every render anyway
  • You're using it for non-computational purposes
  • It makes the code less readable without significant performance benefit
  • You're prematurely optimizing without measuring performance issues

5. What happens if you forget dependencies in useMemo's dependency array?

Answer: If you forget dependencies, useMemo might return stale or incorrect values because it won't recalculate when those dependencies change. React will use the cached value even though the inputs have changed, leading to bugs. Always include all values used inside the useMemo callback in the dependency array.

6. Can useMemo guarantee that a calculation runs only once?

Answer: No, useMemo doesn't guarantee single execution. React may choose to discard cached values and recalculate for memory management or in development mode. You should treat useMemo as a performance optimization, not as a semantic guarantee.

7. How does useMemo handle referential equality?

Answer: useMemo helps maintain referential equality by returning the same object/array reference when dependencies haven't changed. This is useful when passing objects as props to memoized components (React.memo) or when objects are dependencies in other hooks.

8. What's the difference between useMemo and useCallback?

Answer: useMemo memoizes values (numbers, strings, objects, arrays), while useCallback memoizes functions. useMemo returns the result of a function, useCallback returns the function itself. They both use the same dependency array pattern.

9. Can useMemo be used for side effects?

Answer: No, useMemo should not be used for side effects. Its purpose is to compute values during rendering. For side effects, use useEffect. Using useMemo for side effects can lead to unexpected behavior and bugs, especially in concurrent features.

10. How does useMemo work with React's concurrent features?

Answer: In concurrent mode, React might interrupt and restart renders. useMemo helps by memoizing expensive calculations, preventing them from being recomputed if a render is interrupted and restarted. However, useMemo calculations should be pure and idempotent to work correctly with concurrent features.

11. What's the performance cost of using useMemo?

Answer: useMemo has two costs: memory (storing cached values) and CPU (comparing dependencies). For simple calculations, these costs might outweigh the benefits. Always profile and measure performance before and after adding useMemo to ensure it provides a net benefit.

12. How do you decide what to put in the dependency array?

Answer: Include all values that are:

  • Used inside the useMemo callback
  • Not constants or locally defined values
  • Props, state, or derived values that affect the calculation Use the ESLint plugin for React Hooks to automatically detect missing dependencies.

13. Can useMemo be used with async operations?

Answer: useMemo cannot directly return promises or be used with async/await because the callback must return a value synchronously. For async operations, use useEffect with state, or consider useMemo with a synchronous transformation of already-fetched data.

14. What happens if you pass an empty dependency array to useMemo?

Answer: An empty dependency array means the value will be calculated once on mount and never recalculated. This is useful for calculations that truly only depend on constants, but be careful as it can lead to stale values if the calculation actually depends on changing values.

15. How would you debug a useMemo that's not updating correctly?

Answer: To debug useMemo:

  1. Check console logs inside the callback to see if it's running
  2. Verify all dependencies are included in the array
  3. Check if dependencies are changing using useEffect with console.log
  4. Use React DevTools to inspect hook values
  5. Ensure the calculation is pure and deterministic

Key Takeaways

  1. Profile First: Always measure performance before optimizing with useMemo
  2. Clear Dependencies: Include all values used in the calculation
  3. Pure Calculations: useMemo callbacks should be pure functions
  4. Combined Approach: Use useMemo with React.memo for maximum optimization
  5. Readability Balance: Don't sacrifice code clarity for minor optimizations

Best Practices Summary

  • Use useMemo for expensive calculations, not all calculations
  • Keep useMemo callbacks pure and side-effect free
  • Always include complete dependency arrays
  • Combine with React.memo when passing memoized values as props
  • Test performance impact in production-like environments
  • Use the React DevTools Profiler to identify optimization opportunities

Remember: The goal is not to wrap everything in useMemo, but to strategically optimize bottlenecks that actually affect user experience. Start with clean, readable code, then optimize where measurements show it's needed.



X (Twitter)
0 likes
Your Feedback

Help us improve by sharing your thoughts

IT and Digital Marketing
keyboard_arrow_left Previous: React Performance Optimization with React.memo
Online Learner Logo

Online Learner helps developers master programming, database concepts, interview preparation, and real-world implementation through structured learning paths.

Quick Links

  • Learning Paths
  • Notes
  • Free Resume Builder
  • Portfolio

Company

  • About Us
  • Contact Us
  • Terms & Conditions
  • Disclaimer

© 2023 - 2026 OnlineLearner.in | All Rights Reserved.

logo
  • code Frontend
  • storage Backend
  • live_help Interviews
  • work_outline PHP Frameworks
  • settings Routine Use
  • book Blogs
Frontend
  • HTML Tutorial
    • HTML Introduction
    • HTML Tags
    • HTML Elements
    • HTML Attributes
    • HTML Heading
    • HTML Paragraph
    • HTML Formatting
    • HTML Quotations
    • HTML Comments
    • HTML Styles
    • HTML Color
    • HTML CSS
    • HTML Images
    • HTML Favicon
    • HTML Links
    • HTML DIV
    • HTML Tables
    • HTML Table Size
    • HTML Table Head
    • Table Padding & Spa...
    • Table colspan rowspsn
    • HTML Table Styling
    • HTML Colgroup
    • HTML List
    • HTML Block & Inline
    • HTML Classes
    • HTML Id
    • HTML Iframes
    • HTML Head
    • HTML Layout
    • HTML Semantic Elements
    • HTML Style Guide
    • HTML Forms
    • HTML Form Attribute
    • HTML Form Element
    • HTML input type
    • HTML Computer code
    • HTML Entity
    • HTML Symbol
    • HTML Emojis
    • HTML Charset
    • HTML Input Form Att...
    • HTML URL Encoding
  • CSS Tutorial
    • CSS Introduction
    • CSS Syntax
    • CSS Selector
    • How To Add CSS
    • CSS Comments
    • CSS Colors
    • CSS Background color
    • CSS background-image
    • CSS Borders
    • CSS Margins
    • CSS Height, Width a...
    • CSS Box Model
    • CSS Outline
    • CSS Text
    • CSS Fonts
    • CSS Icon
    • CSS Links
    • CSS Tables
    • CSS Display
    • CSS Maximum Width
    • CSS Position
    • z-index Property
  • JavaScript Tutorial
    • What is JavaScript
    • JS Syntax
    • JS Variables
    • JS Data Types
    • JS Operators
    • JS Control Flow - IF
    • JS Control Flow - S...
    • JS Control Flow - Loop
    • JS Function
    • JS Object Methods
    • JS Anonymous Funct...
    • JS Recursive Function
    • JS Default Parameters
    • JS this Keyword
    • What is an Array in...
    • What are JavaScript...
    • Error Handling in J...
    • DOM Selection in Ja...
    • DOM Traversal in Ja...
    • Manipulating Elemen...
    • Event Handling in J...
    • JavaScript Event Li...
    • JavaScript Event Pr...
    • Form Handling in Ja...
    • Dynamic Styling in ...
    • JavaScript DOM Elem...
    • Window Object in Ja...
    • What is Local Storage?
    • Regular Expressions...
  • Jquery Tutorial
    • What is jQuery?
    • Benefits of using j...
    • Include jQuery
    • Selectors.
    • Methods.
    • The $ symbol and sh...
    • Selecting elements
    • Getting and setting...
    • Adding and removing...
    • Modifying CSS and c...
    • Binding and Unbindi...
    • Common events: clic...
    • Event delegation
    • Using .on() for dyn...
    • Showing and hiding ...
    • Fading elements in ...
    • Sliding elements up...
    • .animate()
    • Understanding AJAX
    • .ajax()
    • .load(), .get(), .p...
    • Handling responses ...
    • Parent
    • Chlid
    • Siblings
    • Filtering Elements
    • Using find
    • Selecting form elem...
    • Getting form values
    • Setting form values
    • Form validation
    • Handling form submi...
    • jQuery plugins
    • Sliders plugins
    • $.each()
    • $.trim()
    • $.extend()
    • Data attributes
    • Debugging jQuery code
  • Bootstrap 4
    • What is Bootstrap
    • Benefits of using
    • Setting up
    • Container
    • Row and Column
    • Grid Classes
    • Breakpoints
    • Offsetting Columns
    • Column Ordering
    • Basic Typography
    • Text Alignment
    • Text colors
    • Backgrounds
    • Display
    • Font Size Utilities
    • Buttons
    • Navs and Navbar
    • Forms
    • Cards
    • Alerts
    • Badges
    • Progress Bars
    • Margin
    • Padding
    • Sizing
    • Flexbox
    • Dropdowns
    • Modals
    • Tooltips
    • Popovers
    • Collapse
    • Carousel
    • Images
    • Tables
    • Jumbotron
    • Media Object
  • Git
    • Understanding Versi...
    • Download and Instal...
    • Git Configure
    • Git Initialize
    • Add Changes to Staging
    • Commit Changes
    • Branching
    • Merging
    • Remote Repository
    • Understanding Git C...
    • Stashing Changes
    • Viewing Commit History
    • Undoing Changes
  • Ajax Tutorial
    • Ajax Fundamentals
    • Ajax Working
    • XMLHttpRequest Fetch
    • Synchronous vs Asyn...
    • Ajax Advantages
    • Ajax Disadvantages
    • $.ajax() method
    • Ajax GET request
    • Ajax POST Request
    • Json Response
    • Ajax Errors
    • Ajax Form
  • React Tutorial
    • What is React? Begi...
    • React Environment S...
    • React Fundamentals:...
    • Functional vs Class...
    • Props in React Expl...
    • State and setState ...
    • React Event Handling
    • React Conditional R...
    • React Lists and Keys
    • Styling in React In...
    • Styling in React Us...
    • Styling in React Us...
    • Tailwind CSS with R...
    • Tailwind vs CSS Mod...
    • React Hooks
    • React useState Hook
    • React useEffect Hook
    • React useRef Hook
    • React useContext Hook
    • React useReducer Hook
    • Custom Hooks in React
    • React Router – In...
    • Installing React Ro...
    • React Router – Ro...
    • React Router – Ne...
    • React Router URL Pa...
    • React Router Protec...
    • React Router Redire...
    • State Management in...
    • Redux State Managem...
    • Redux Toolkit Expla...
    • Redux Toolkit vs Re...
    • Controlled vs Uncon...
    • Handling Form Input...
    • API Integration in ...
    • Axios in React – ...
    • Handling Loading an...
    • Async Await in Java...
    • Displaying API Data...
    • CRUD Operations in ...
    • React Performance O...
    • React Performance O...
  • Tailwind
    • Introduction to Tai...
    • Utility-First CSS E...
    • Tailwind CSS vs Boo...
    • When and Why to Use...
    • Real-World Use Case...
    • Tailwind CSS Instal...
    • Installing Tailwind...
    • Tailwind CSS with V...
    • Setting Up Tailwind...
    • Install Tailwind CS...
    • Tailwind CSS Colors...
    • Tailwind CSS Backgr...
    • Tailwind CSS Paddin...
    • Tailwind CSS Margin...
    • Tailwind CSS Width ...
    • Tailwind CSS Height...
    • Tailwind CSS Border...
    • Tailwind CSS Border...
    • Tailwind CSS Text S...
    • Tailwind CSS Box Sh...
    • Tailwind CSS Opacit...
    • Tailwind CSS Cursor...
    • Tailwind CSS Overfl...
    • Tailwind CSS Font S...
    • Tailwind CSS Font W...
    • Tailwind CSS Text A...
    • Tailwind CSS Line H...
    • Tailwind CSS Letter...
    • Tailwind CSS Text T...
Backend
  • PHP Tutorial
    • PHP Introduction
    • PHP Installation
    • PHP Syntax
    • PHP Comments
    • PHP Variable
    • PHP Echo
    • PHP Data Types
    • PHP Strings
    • PHP Constant
    • PHP Maths
    • PHP Number
    • PHP Operators
    • PHP if else & if el...
    • PHP Switch
    • PHP Loops
    • PHP Functions
    • PHP Array
    • PHP OOps
    • PHP Class & Object
    • PHP Constructor
    • PHP Destructor
    • PHP Access Modfiers
    • PHP Inheritance
    • PHP Final Keyword
    • PHP Class Constant
    • PHP Abstract Class
    • PHP Superglobals
    • PHP Regular Expression
    • PHP Interfaces
    • PHP Static Method
    • PHP Static Properties
    • PHP Namespace
    • PHP Iterable
    • PHP Form Introduction
    • PHP Form Validation
    • PHP Complete Form
    • PHP Date and Time
    • PHP Include Files
    • PHP - Files & I/O
    • File Upload
    • PHP Cookies
    • PHP SESSION
    • PHP Filters
    • PHP Callback Functions
    • PHP JSON
    • PHP AND Exceptions
    • PHP Connect database
  • PHP Functions
    • strlen
    • strtoupper
    • strtolower
    • ucfirst
    • ucwords
    • substr
    • str_replace
    • strpos
    • trim in php
    • explode
    • implode
    • count in php
    • array_merge
    • array_push
    • array_pop
    • array_shift
    • array_unshift
    • in_array
    • array_keys
    • array_values
    • array_filter
    • array_map
    • sort
    • asort
    • ksort
    • abs
    • round
    • ceil
    • floor
    • rand
    • mt_rand
    • max
    • min
    • pow
    • sqrt
    • date
    • time
    • strtotime
    • mktime
    • date_diff
    • getdate
    • fopen
    • fread
    • fwrite
    • fclose
    • file_get_contents
    • file_put_contents
    • file_exists
    • unlink
    • filesize
    • is_readable
    • is_writable
    • urlencode
    • urldecode
    • parse_url
    • http_build_query
    • isset
    • empty
    • is_numeric
    • is_array
    • is_string
    • filter_var
    • htmlspecialchars
    • md5
    • sha1
    • password_hash
    • password_verify
    • die
    • exit
    • var_dump
    • print_r
    • include
    • require
    • json_encode
    • json_decode
    • sleep
  • PHP and MySQL Functions
    • mysqli_connect
    • mysqli_select_db
    • mysqli_query
    • mysqli_prepare
    • mysqli_stmt_execute
    • mysqli_multi_query
    • mysqli_fetch_assoc
    • mysqli_fetch_array
    • mysqli_fetch_row
    • mysqli_fetch_object
    • mysqli_num_rows
    • mysqli_real_escape_...
    • mysqli_insert_id
    • mysqli_affected_rows
    • mysqli_error
    • mysqli_close
    • mysqli_commit
    • mysqli_rollback
  • Python Tutorial
    • What is Python?
    • Install Python on W...
    • Install Python on L...
    • Install Python on m...
    • IDE Setup
    • Python syntax
    • Python Comments
    • Python Indentation
    • Python Variables
    • Python Data Types
    • Python Numeric
    • Python Boolean
    • Python String
    • Python List
    • Python Tuple
    • Python Range
    • Python Dictionary
    • Python Arithmetic O...
    • Python Assignment O...
    • Python Comparison O...
    • Python Logical Oper...
    • Python Bitwise Oper...
    • Python if condition
    • Python if else cond...
    • Python For Loop
    • Python While Loop
    • Python break, conti...
  • MYSQL
    • SQL Introduction
    • Syntax
    • Select statement
    • Select Distinct
    • WHERE Clause
    • Order By
    • SQL AND Operator
    • SQL OR Operator
    • SQL NOT Operator
    • SQL LIKE
    • SQL IN
    • SQL BETWEEN
    • SQL INSERT INTO
    • SQL NULL Values
    • SQL UPDATE
    • SQL DELETE
    • SQL TOP, LIMIT, FET...
    • SQL MIN() and MAX()...
    • SQL COUNT() Function
    • SQL SUM()
    • SQL AVG()
    • SQL Aliases
    • SQL JOIN
    • SQL INNER JOIN
    • SQL LEFT JOIN
    • SQL RIGHT JOIN
    • SQL FULL OUTER JOIN
    • SQL Self Join
    • SQL UNION
    • SQL GROUP BY
    • SQL HAVING
    • SQL EXISTS
    • SQL ANY and ALL
    • SQL SELECT INTO
    • SQL INSERT INTO SELECT
    • SQL CASE
    • SQL NULL Functions
    • SQL Stored Procedures
    • SQL Comments
    • SQL Operators
    • SQL CREATE DATABASE
    • SQL DROP DATABASE
    • SQL BACKUP DATABASE
    • SQL CREATE TABLE
    • SQL DROP TABLE
    • SQL ALTER TABLE
    • SQL Constraints
    • SQL NOT NULL
    • SQL UNIQUE Constraint
    • SQL PRIMARY KEY
    • SQL FOREIGN KEY
    • SQL CHECK Constraint
    • SQL CREATE INDEX
    • SQL AUTO INCREMENT
    • SQL Dates
    • SQL Views
    • SQL Injection
    • SQL Hosting
    • SQL Data Types
  • Node Js
    • What is Node.js?
    • Why use Node.js?
    • Installing Node.js
    • First Node.js progr...
    • Event Loop
    • Understanding npm
    • What are Modules?
    • fs (File System)
    • Http Module
    • Path Module
    • Creating custom mod...
    • Exporting and impor...
    • Setting up a basic ...
    • Handling requests a...
    • Serving HTML
    • Serving CSS
    • Serving JavaScript
  • Python MySQL
    • Database Connection
    • Table Creation
    • Insert Query
    • Select Query
    • Update Query
    • Delete Query
    • Where Clause Query
    • Limit Clause Query
    • Join Tables
    • Order By Query
    • Group By Query
    • Aggregate Functions
    • Parameterized Query
  • Java Tutorials
    • Java Introduction
    • Java Installation
    • Java Syntax
    • Java Comments
    • Java Variables
    • Java DataTypes
    • Java Operators
    • Java Conditionals
    • Java Looping
    • Java Arrays
    • Java Methods
    • Java Classes
    • Java Objects
    • Java Constructors
    • Java Inheritance
    • Java Polymorphism
    • Java Encapsulation
    • Java Abstraction
    • Java Exception
    • Java Interfaces
    • Java File Handling
    • Java Threads
    • Java Access Modifiers
    • Java Static Keyword
    • Java Final Keyword
    • Java Nested Class
    • Java Synchronization
Interviews
  • PHP Interviews
    • What is PHP?
    • What does PHP stand...
    • PHP Advantages
    • Difference between ...
    • Start a PHP script?
    • Commenting in PHP
    • Variable in PHP
    • Different types of ...
    • Different types of ...
    • Array in PHP
    • Difference between ...
    • Retrieve data from ...
    • PHP handle errors
    • Sessions in PHP
    • PHP Cookie
    • What are the main f...
    • What are the differ...
    • What are the differ...
  • Java Interview Questions
    • Java Basics – Wha...
    • What is the differe...
    • What are the OOP co...
    • Why is the main met...
    • What are the differ...
    • What is the differe...
  • React Interviews
    • What is React.js
    • Help In Interviews
    • Features of React
    • What is JSX
    • React's Virtual DOM
    • State and Props
    • React handle data b...
    • React Component
    • setState() method.
    • Controlled Components
    • Lifecycle Methods
    • Significance of keys
    • What are the differ...
  • Laravel Interviews
    • What is Laravel?
    • What are the key fe...
    • Explain the concept...
    • What is a controlle...
    • What is Blade templ...
    • How does Eloquent O...
    • Explain the concept...
    • What are middleware...
    • How do you create a...
    • What is CSRF protec...
    • What is the purpose...
    • What is the purpose...
    • Explain the concept...
    • How do you create a...
    • What is the purpose...
    • How do you define r...
    • What are named rout...
    • Explain the use of ...
    • What is the purpose...
    • What are service pr...
  • SQL Interviews
    • What is SQL?
    • What are the differ...
    • What is the differe...
    • What is a primary key?
    • What is a foreign key?
    • What are the differ...
    • What is the differe...
    • What is the use of ...
    • What is the differe...
    • What is an index in...
    • What types of index...
    • What is a subquery?
    • How do you use the ...
    • How can you find th...
    • Explain the use of ...
    • What is a view?
    • What are the limita...
    • Write a query to fe...
    • Write a query to fe...
    • Write a query to co...
    • Write a query to fe...
    • Write a query to fe...
    • Write a query to fi...
    • Write a query to fe...
    • Write a query to re...
    • Write a query to ge...
    • Write a query to ge...
    • Write a query to li...
    • Write a query to fi...
    • Write a query to fi...
    • Write a query to ge...
    • Write a query to fi...
    • Write a query to co...
    • Write a query to fi...
    • Write a query to li...
    • Write a query to fe...
    • Write a query to fi...
    • Write a query to fe...
    • Write a query to ge...
    • Write a query to co...
    • Write a query to fe...
  • JavaScript Interview Questions
    • What Exactly is Jav...
    • What are the data t...
    • What is the differe...
    • JavaScript double e...
    • What is a Closure i...
    • What is Hoisting in...
    • Understanding "this...
    • What Are JavaScript...
    • Null vs Undefined i...
    • How Does JavaScript...
    • What is a Promise i...
    • Async/Await in Java...
    • Event Delegation in...
    • JavaScript Modules ...
    • How to Prevent a Fu...
    • JavaScript Intervie...
    • JavaScript Intervie...
    • What is bind() in J...
    • Event Bubbling vs. ...
    • Deep Copy vs Shallo...
    • What is the new Key...
PHP Frameworks
  • Laravel
    • Laravel Topics
    • Laravel 7 Installation
    • Install laravel 8
    • Laravel 8 Routing
    • Laravel Controllers
    • Views and Blade lar...
    • Database and Eloque...
    • Authentication and ...
    • CSRF Protection
    • Laravel Model
    • Database: Query Bui...
Routine Use
  • Linux
    • How to Delete a Fil...
    • Install lemp in ubu...
    • How to check packag...
    • Navigating the File...
    • Managing Files and ...
    • Viewing and Editing...
    • Managing Processes ...
    • Scheduling Tasks wi...
    • Disk Usage Analysis...
    • File and Directory ...
Blogs
  • Blogs
    • Free Hosting on AWS...
    • What is SEO?
    • Zoho Free Mail
    • Speed Up Your Appli...
    • What is a JavaScrip...
    • Laravel vs Lumen: T...
    • MySQL vs PostgreSQL...
    • Automate Free MySQL...
    • How to Use Google A...
    • What is n8n?
    • Cloud Platform Comp...
    • Top Common Mistakes...
    • PHP 8.5: The Pipeli...
    • Google Antigravity ...
    • How to Optimize Que...
    • React vs Angular vs...
    • Base44: Features, P...
    • Difference Between ...
    • HTTP Status Codes E...
    • Build Native Mobile...
    • Top 10 JavaScript F...
    • JIRA, Waterfall, an...
    • WebSockets in Moder...
    • A Complete Real-Wor...
    • Why Developers Shou...
    • Service-Based Compa...
    • Bootstrap vs Tailwi...