frontend-interview-questions

1. چگونه مدل شیء سند HTML (DOM) و رابطه آن با DOM مجازی React را مفهوم‌سازی می‌کنید؟

DOM نمای درختی زنده مرورگر از سند HTML است. دستکاری مستقیم آن به دلیل reflowها/repaintها پرهزینه است.

React DOM مجازی (VDOM) را به‌عنوان یک نمایش سبک در حافظه از DOM معرفی می‌کند. در زمان تغییر وضعیت:

useState باعث رندر مجدد میشود  تفاوت VDOM  بهروزرسانیهای حداقل DOM

این مدل عملکرد را بهبود می‌بخشد و رابط‌های کاربری اعلانی را ممکن می‌سازد.


2. مدل ذهنی شما برای ساختاردهی HTML معنایی در یک چارچوب مبتنی بر کامپوننت مثل React چیست؟

معناشناسی باید ساختار را هدایت کند، حتی در داخل کامپوننت‌ها. من نقش‌ها و نیت‌ها را به تگ‌های مناسب (<nav>، <main>، <section>، <article>) نگاشت می‌کنم.

مثال:

function BlogPost({ title, content }) {
  return (
    <article>
      <h2>{title}</h2>
      <section>{content}</section>
    </article>
  );
}

از سوپ div اجتناب می‌کنم و کامپوننت‌ها را به‌عنوان بسته‌بندی‌های معنایی در نظر می‌گیرم و تا حد ممکن از تگ‌های HTML5 استفاده می‌کنم. این کار دسترسی‌پذیری و سئو را بهبود می‌بخشد.


3. درباره تعامل بین ویژگی‌های HTML (مثل data-*، aria-*) و پراپ‌های React چگونه فکر می‌کنید؟

React ویژگی‌های استاندارد HTML و ویژگی‌های خاص (aria-*، data-*) را به‌عنوان پراپ‌هایی که به گره DOM منتقل می‌شوند در نظر می‌گیرد.

<button aria-label="Close" data-testid="close-btn">
  X
</button>


4. چگونه یک ساختار HTML را برای پشتیبانی از یک رابط کاربری پیچیده و تودرتو (مثل منوی ناوبری چندسطحی) طراحی می‌کنید در حالی که قابل نگهداری باشد؟

رویکرد:

function NavItem({ label, children }) {
  return (
    <li>
      {label}
      {children && <ul>{children.map(...)}</ul>}
    </li>
  );
}

نگرانی‌ها (مثل ارائه در مقابل منطق) را جدا می‌کنم و ناوبری کیبورد و دسترسی‌پذیری را تضمین می‌کنم.


5. رویکرد شما برای مدل‌سازی فرم‌های HTML در یک برنامه React، به‌ویژه برای اعتبارسنجی و ارسال چیست؟

من از کامپوننت‌های کنترل‌شده برای وضعیت قابل پیش‌بینی استفاده می‌کنم:

const [email, setEmail] = useState("");
<input value={email} onChange={(e) => setEmail(e.target.value)} />;

برای اعتبارسنجی:

<form onSubmit={handleSubmit(onSubmit)} />


6. درباره تأثیر تجزیه و رندر HTML بر عملکرد بارگذاری صفحه چگونه استدلال می‌کنید؟

مسیر رندر بحرانی تحت تأثیر قرار می‌گیرد:

من با موارد زیر بهینه‌سازی می‌کنم:


7. مدل ذهنی شما برای مدیریت رویدادهای HTML در یک برنامه React در مقایسه با جاوااسکریپت خام چیست؟

در React:

<button onClick={handleClick}>Click me</button>

مزایا:

در جاوااسکریپت خام:

React چرخه عمر و عملکرد را ساده می‌کند.


8. چگونه ساختارهای HTML را برای پشتیبانی از بهبود پیش‌رونده در یک برنامه مبتنی بر React طراحی می‌کنید؟

من HTML را برای کار بدون جاوااسکریپت ابتدا می‌سازم، سپس با React بهبود می‌دهم.

مثال:

استفاده از:

<button type="submit">Search</button>

بهبود شامل افزودن فیلترها، انیمیشن‌ها و غیره پس از هیدراتاسیون است.


9. درباره نقش HTML در یک برنامه React رندرشده سمت سرور (SSR) چگونه فکر می‌کنید؟

HTML در SSR رندر اولیه است که به مرورگر تحویل داده می‌شود:

مدلم:


من متادیتا را به‌عنوان بخشی از زمینه مسیر پویا در نظر می‌گیرم. برای SPAها:

<Helmet>
  <title>Product Page</title>
  <meta name="description" content="Details about product" />
</Helmet>

برای PWAها، همچنین <link rel="manifest">، آیکون‌ها و نکات پیش‌بارگذاری را مدیریت می‌کنم.