🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

প্রতিক্রিয়া সাক্ষাৎকার প্রশ্ন 2026: হুক, সার্ভার উপাদান এবং কর্মক্ষমতা

⏱️3 min read  ·  585 words

2026 কভার হুক, স্টেট ম্যানেজমেন্ট, পারফরম্যান্স অপ্টিমাইজেশান, রিঅ্যাক্ট 19 এর নতুন বৈশিষ্ট্য এবং টাইপস্ক্রিপ্ট প্যাটার্নগুলিতে সাক্ষাত্কারের প্রশ্নগুলির প্রতিক্রিয়া জানান৷ এই নির্দেশিকাটি জুনিয়র এবং সিনিয়র উভয় স্তরেই সবচেয়ে বেশি জিজ্ঞাসিত প্রতিক্রিয়া প্রশ্নগুলিকে কভার করে।

মূল প্রতিক্রিয়া প্রশ্ন

1. ভার্চুয়াল DOM কি এবং কিভাবে পুনর্মিলন কাজ করে?

ভার্চুয়াল DOM হল আসল DOM-এর একটি হালকা জাভাস্ক্রিপ্ট উপস্থাপনা। যখন রাষ্ট্র পরিবর্তন হয়:

  1. প্রতিক্রিয়া একটি নতুন ভার্চুয়াল DOM ট্রি তৈরি করে
  2. ভিন্ন ভিন্ন অ্যালগরিদম নতুন বনাম পূর্ববর্তী ভার্চুয়াল DOM এর তুলনা করে
  3. প্রকৃত DOM-এ শুধুমাত্র পরিবর্তিত নোড আপডেট করা হয়
  4. আপডেটের এই ব্যাচিং প্রতিক্রিয়াকে কার্যকরী করে তোলে

প্রতিক্রিয়া 18+ সমসাময়িক রেন্ডারিং ব্যবহার করে — জরুরী আপডেটগুলিকে অগ্রাধিকার দিয়ে রেন্ডারিংকে বিরতি দিতে, বাধা দিতে এবং পুনরায় শুরু করতে পারে।

2. ইউজ ইফেক্ট এবং এর সাধারণ অসুবিধাগুলি ব্যাখ্যা কর

import { useEffect, useState } from 'react';

function UserProfile({ userId }: { userId: number }) {
  const [user, setUser] = useState<User | null>(null);

  // Correct: cleanup function + proper dependencies
  useEffect(() => {
    let cancelled = false;  // prevent stale closure

    async function fetchUser() {
      const data = await api.getUser(userId);
      if (!cancelled) setUser(data);  // only update if still mounted
    }

    fetchUser();

    return () => { cancelled = true; };  // cleanup
  }, [userId]);  // dependency array

  // PITFALL 1: missing dependency
  // useEffect(() => { fetchUser(userId); }, []);
  // This won't re-run when userId changes!

  // PITFALL 2: object/array in deps (new reference every render)
  // useEffect(() => { ... }, [options]);  // infinite loop if options = {}
  // Fix: useMemo(() => options, [dep1, dep2])

  // PITFALL 3: no cleanup for subscriptions
  useEffect(() => {
    const sub = websocket.subscribe(userId, setUser);
    return () => sub.unsubscribe();  // ALWAYS cleanup subscriptions!
  }, [userId]);

  return user ? <Profile user={user} /> : <Loading />;
}

3. কখন আপনি useMemo এবং useCallback ব্যবহার করবেন?

// useMemo — memoize expensive computed value
const filteredUsers = useMemo(
  () => users.filter(u => u.active && u.role === selectedRole),
  [users, selectedRole]  // recompute only when these change
);

// useCallback — memoize function reference
const handleDelete = useCallback(
  (userId: number) => {
    setUsers(prev => prev.filter(u => u.id !== userId));
  },
  []  // no deps — stable reference
);

// Use useMemo when:
// - Expensive computation (sorting, filtering large arrays)
// - Object/array passed to children with React.memo
// - Dependency for other hooks

// Use useCallback when:
// - Passing to child component wrapped in React.memo
// - As dependency in useEffect to prevent re-runs

// DON'T overuse — memoization has overhead!
// Bad: const value = useMemo(() => a + b, [a, b]);  // trivial, skip it

4. React.memo কি এবং কখন এটি ব্যবহার করবেন?

// React.memo — prevent re-render if props haven't changed
const ExpensiveList = React.memo(function ExpensiveList({ items, onItemClick }: Props) {
  console.log('ExpensiveList rendered');
  return (
    <ul>
      {items.map(item => (
        <li key={item.id} onClick={() => onItemClick(item.id)}>
          {item.name}
        </li>
      ))}
    </ul>
  );
});

// Parent using it correctly
function Parent() {
  const [count, setCount] = useState(0);
  const [items] = useState(bigItemList);

  // useCallback ensures stable reference (required for memo to work)
  const handleClick = useCallback((id: number) => {
    console.log('clicked', id);
  }, []);

  return (
    <div>
      <button onClick={() => setCount(c => c + 1)}>Count: {count}</button>
      {/* ExpensiveList won't re-render when count changes */}
      <ExpensiveList items={items} onItemClick={handleClick} />
    </div>
  );
}

রাজ্য ব্যবস্থাপনা

5. কখন আপনি Redux বনাম Zustand বনাম প্রসঙ্গ API ব্যবহার করবেন?

টুল কখন ব্যবহার করুন কখন এড়িয়ে চলুন
প্রসঙ্গ API থিম, লোকেল, অথ স্টেট (কদাচিৎ আপডেট) ঘন ঘন আপডেট (পুনরায় রেন্ডার হওয়ার কারণ)
জুস্ট্যান্ড বেশিরভাগ অ্যাপের গ্লোবাল স্টেট প্রয়োজন খুব জটিল ইভেন্ট সোর্সিং প্রয়োজন
রেডাক্স টুলকিট বড় দল, জটিল অবস্থা, টাইম-ট্রাভেল ডিবাগিং সহজ অ্যাপস (অতিরিক্ত)
TanStack ক্যোয়ারী সার্ভারের অবস্থা (সর্বদা) UI রাজ্যের জন্য নয়

19টি প্রশ্নের উত্তর দিন

6. সার্ভার উপাদান কি এবং কিভাবে তারা ক্লায়েন্ট উপাদান থেকে আলাদা?

// Server Component (default in Next.js App Router)
// - Runs only on server, never on client
// - Can access databases, file system directly
// - Zero JS sent to client (except HTML)
// - Cannot use state, effects, event handlers

async function ProductList() {  // no 'use client'
  const products = await db.products.findMany();  // direct DB access!
  return (
    <ul>
      {products.map(p => <ProductCard key={p.id} product={p} />)}
    </ul>
  );
}

// Client Component (must add 'use client')
// - Runs on both server (initial HTML) and client (hydration)
// - Can use useState, useEffect, event handlers
// - Receives props from Server Components

'use client';
function AddToCart({ productId }: { productId: number }) {
  const [added, setAdded] = useState(false);

  return (
    <button onClick={() => {
      addToCart(productId);
      setAdded(true);
    }}>
      {added ? 'Added!' : 'Add to Cart'}
    </button>
  );
}

7. প্রতিক্রিয়া 19 এর নতুন বৈশিষ্ট্যগুলি কী কী?

  • সার্ভার অ্যাকশন— অ্যাসিঙ্ক ফাংশন যা সার্ভারে চলে, ক্লায়েন্ট থেকে কল করা যায়
  • use() হুক– রেন্ডারে প্রতিশ্রুতি এবং প্রসঙ্গ পড়ুন (কিছু ইউজ ইফেক্ট প্যাটার্ন প্রতিস্থাপন করে)
  • ফর্ম কর্ম— সার্ভার ফাংশন সহ নেটিভ ফর্ম হ্যান্ডলিং
  • আশাবাদী আপডেট– অবিলম্বে UI প্রতিক্রিয়ার জন্য Optimistic() ব্যবহার করুন
  • নথি মেটাডেটা— শিরোনাম, উপাদান সরাসরি মেটা ট্যাগ
  • সম্পদ লোড হচ্ছে— ছবি এবং CSS এর জন্য সাসপেন্স ইন্টিগ্রেশন

8. আপনি কীভাবে প্রতিক্রিয়াতে ত্রুটিগুলি পরিচালনা করবেন?

// Error Boundary (class component, required for now)
class ErrorBoundary extends React.Component<
  { fallback: React.ReactNode; children: React.ReactNode },
  { hasError: boolean }
> {
  state = { hasError: false };

  static getDerivedStateFromError() {
    return { hasError: true };
  }

  componentDidCatch(error: Error, info: React.ErrorInfo) {
    logErrorToService(error, info);
  }

  render() {
    if (this.state.hasError) return this.props.fallback;
    return this.props.children;
  }
}

// Usage
<ErrorBoundary fallback={<ErrorPage />}>
  <UserProfile />
</ErrorBoundary>

// React 19: useErrorBoundary hook coming (use 'react-error-boundary' lib now)

সাক্ষাত্কারের প্রস্তুতি গ্রহণ করুন: হুকগুলি গভীরভাবে বুঝুন (বিশেষ করে ইফেক্ট নির্ভরতা ব্যবহার করুন), কখন অপ্টিমাইজ করতে হবে তা জানুন (React.memo + useCallback/useMemo), সার্ভার/ক্লায়েন্ট উপাদান বিভক্ত ব্যাখ্যা করুন এবং বর্তমান অবস্থা ব্যবস্থাপনা বিকল্পগুলি জানুন। এই ধারণাগুলিকে শুধুমাত্র তাত্ত্বিকভাবে নয়, অভিজ্ঞতার সাথে বোঝার জন্য কয়েকটি প্রোডাকশন অ্যাপ তৈরি করুন।

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা