frontend-interview-questions

1. DOM مجازی چیست و React چگونه از آن برای بهبود عملکرد استفاده می‌کند؟

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

وقتی state یا props تغییر می‌کند:

این کار دستکاری مستقیم DOM که پرهزینه است را کاهش می‌دهد و عملکرد را بهبود می‌بخشد.


2. تفاوت بین کامپوننت‌های تابعی و کامپوننت‌های کلاسی در React را توضیح دهید.

جنبه کامپوننت کلاسی کامپوننت تابعی
سینتکس کلاس‌های ES6 توابع ساده JS
وضعیت (State) this.state هوک useState
چرخه حیات componentDidMount و غیره useEffect
زمینه this ضروری استفاده نمی‌شود


3. هوک‌های React چیست؟ useState، useEffect و useContext را با مثال توضیح دهید.

هوک‌ها به کامپوننت‌های تابعی اجازه می‌دهند وضعیت، اثرات جانبی و زمینه را مدیریت کنند — ویژگی‌هایی که قبلاً فقط در کامپوننت‌های کلاسی در دسترس بودند.


4. React چگونه روش‌های چرخه حیات کامپوننت را در کامپوننت‌های تابعی مدیریت می‌کند؟

کامپوننت‌های تابعی از هوک‌ها برای شبیه‌سازی رفتار چرخه حیات استفاده می‌کنند:

چرخه حیات کلاسی معادل هوک
componentDidMount useEffect(..., [])
componentDidUpdate useEffect(..., [deps])
componentWillUnmount return () => {} داخل useEffect


5. اهمیت کلیدها (keys) در لیست‌های React چیست و اگر به‌درستی استفاده نشوند چه اتفاقی می‌افتد؟

کلیدها به React کمک می‌کنند تا تشخیص دهد کدام آیتم‌ها در یک لیست تغییر کرده، اضافه یا حذف شده‌اند. کلیدها باید یکتا و پایدار باشند.

اگر از اندیس‌ها به‌عنوان کلید استفاده کنید یا آن‌ها را حذف کنید:


6. تفاوت‌های کلیدی بین React.js و Vue.js از نظر معماری کامپوننت و واکنش‌پذیری چیست؟

ویژگی React Vue
زبان JSX + JS قالب‌های HTML + JS
واکنش‌پذیری وضعیت غیرقابل تغییر، به‌روزرسانی دستی رفرنس‌ها و پروکسی‌های واکنشی
مدل کامپوننت اولویت با توابع با هوک‌ها API گزینه‌ها / API ترکیب
اتصال داده یک‌طرفه دوطرفه با v-model
مدیریت وضعیت Context، Redux، Zustand Vuex، Pinia

React بدون پیش‌فرض است (آزادی و انعطاف‌پذیری)، در حالی که Vue تجربه توسعه‌دهنده‌ای کامل‌تر ارائه می‌دهد.


7. چگونه تصمیم می‌گیرید که برای یک پروژه جدید از React.js یا Vue.js استفاده کنید؟ چه عواملی در انتخاب شما تأثیر می‌گذارند؟

عوامل:

قانون کلی:


8. چگونه یک برنامه قدیمی React را از کامپوننت‌های کلاسی به کامپوننت‌های تابعی با هوک‌ها مهاجرت می‌کنید؟

رویکرد گام‌به‌گام:

  1. با کامپوننت‌های ایزوله و کم‌ریسک شروع کنید.
  2. state را با useState جایگزین کنید.
  3. روش‌های چرخه حیات را با useEffect جایگزین کنید.
  4. اتصالات را با حذف this مدیریت کنید.
  5. مصرف‌کنندگان زمینه را با useContext مهاجرت کنید.


9. کامپوننت‌های سطح بالاتر (HOCs) چیست؟ مثالی از زمانی که از یکی استفاده کرده‌اید ارائه دهید.

HOC یک تابع است که یک کامپوننت را می‌گیرد و کامپوننت جدیدی با رفتار بهبودیافته بازمی‌گرداند. این یک الگو برای استفاده مجدد از کد است.

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


10. چگونه ترکیب پیچیده کامپوننت‌ها را در React.js یا Vue.js مدیریت می‌کنید تا از کد تنگاتنگ جلوگیری کنید؟

استراتژی‌ها:


11. تطبیق‌پذیری (Reconciliation) در React چیست و چگونه در پشت صحنه کار می‌کند؟

تطبیق‌پذیری فرآیندی است که React برای به‌روزرسانی DOM هنگام تغییر وضعیت یا پراپ‌های یک کامپوننت استفاده می‌کند.

مراحل:

  1. تغییر وضعیت یک درخت VDOM جدید را ایجاد می‌کند.
  2. React آن را با درخت قبلی با استفاده از الگوریتم هیوریستیک (O(n)) مقایسه می‌کند.
  3. تغییرات حداقل را شناسایی کرده و DOM واقعی را به‌روزرسانی می‌کند.

بهینه‌سازی‌های کلیدی:

این باعث می‌شود به‌روزرسانی‌ها قابل پیش‌بینی و با عملکرد بالا باشند، به‌ویژه در رابط‌های کاربری بزرگ.