frontend-interview-questions

1. چگونه یک فروشگاه Redux را برای یک برنامه React بزرگ‌مقیاس با چندین دامنه (مثل کاربر، محصول، سبد خرید) ساختاردهی می‌کنید؟

من از مدولاریزاسیون مبتنی بر ویژگی پیروی می‌کنم و از Redux Toolkit (RTK) برای نگه داشتن اسلایس‌ها به‌صورت ایزوله و مقیاس‌پذیر استفاده می‌کنم.

/src
  /store
    store.ts
  /features
    /user
      userSlice.ts
      userSelectors.ts
    /product
      productSlice.ts
    /cart
      cartSlice.ts

هر اسلایس اقدامات، ردیوسر و سلکتورهای خود را مدیریت می‌کند. من آن‌ها را با استفاده از combineReducers ترکیب می‌کنم. این امکان موازی‌سازی تیم، کاهش جفت‌سازی و ترویج مرزهای دامنه واضح را فراهم می‌کند.


2. رویکرد شما برای مدیریت اقدامات غیرهمزمان در Redux (مثل Redux Thunk در مقابل Redux Saga) چیست؟

مورد استفاده Saga: تلاش مجدد با بازگشت نمایی یا هماهنگی فراخوانی‌های زنجیره‌ای.


3. چگونه عملکرد Redux را برای جلوگیری از رندرهای غیرضروری در یک برنامه React بهینه می‌کنید؟


4. پیچیده‌ترین ردیوسر Redux که نوشته‌اید چیست و چگونه اطمینان حاصل کردید که قابل پیش‌بینی و قابل تست باقی بماند؟

من یک ردیوسر برای مدیریت یک ویزارد فرم چندمرحله‌ای با منطق انشعاب و اعتبارسنجی غیرهمزمان نوشتم.

برای حفظ پیش‌بینی‌پذیری:


5. چگونه یک برنامه Redux را زمانی که تغییرات وضعیت غیرمنتظره رخ می‌دهد اشکال‌زدایی می‌کنید؟


6. چگونه Redux را با TypeScript ادغام می‌کنید تا ایمنی نوع در اقدامات، ردیوسرها و سلکتورها تضمین شود؟


7. رویکرد شما برای نرمال‌سازی وضعیت در Redux برای یک برنامه سنگین از نظر داده (مثل فید رسانه اجتماعی) چیست؟


8. چگونه میان‌افزار Redux را برای نگرانی‌های متقاطع مثل لاگ‌گیری، تحلیل یا احراز هویت مدیریت می‌کنید؟


9. چگونه تداوم وضعیت Redux را در refresh صفحات یا راه‌اندازی مجدد اپلیکیشن مدیریت می‌کنید؟


10. استراتژی شما برای مهاجرت یک برنامه Redux قدیمی به یک راه‌حل مدیریت وضعیت مدرن چیست؟


11. چگونه یک فروشگاه Zustand را برای یک برنامه React با چندین ویژگی ساختاردهی می‌کنید؟

برای وضعیت جهانی، چندین فروشگاه را صادر می‌کنم و به‌صورت اختیاری آن‌ها را با میان‌افزارهای Zustand ترکیب می‌کنم.


12. رویکرد شما برای مدیریت به‌روزرسانی‌های وضعیت غیرهمزمان در Zustand چیست؟

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

من از افکت‌های جانبی در کامپوننت‌ها اجتناب می‌کنم و اجازه می‌دهم فروشگاه منطق غیرهمزمان را مالک شود.


13. چگونه از سادگی Zustand برای بهبود بهره‌وری توسعه‌دهندگان در یک محیط تیمی استفاده می‌کنید؟

نتیجه: بار شناختی کمتر، تحویل سریع‌تر ویژگی.


14. چگونه Zustand را با TypeScript ادغام می‌کنید تا وضعیت و اقدامات تایپ‌شده ایمن داشته باشید؟


15. استراتژی شما برای تداوم وضعیت Zustand در جلسات یا تب‌ها چیست؟


16. چگونه بین Redux و Zustand برای یک پروژه جدید React تصمیم می‌گیرید؟

معیار استفاده از Redux استفاده از Zustand
تیم بزرگ / الگوهای سخت‌گیرانه
ابزارهای توسعه جهانی، میان‌افزار ✅ (با تنظیم)
تنظیم حداقل / تکرار سریع
جریان‌های کاری پیچیده (مثل ساگا)
وضعیت کامپوننت محلی یا وضعیت رابط کاربری گذرا

من Redux را زمانی انتخاب می‌کنم که نیاز به ساختار دارم یا تیم با آن آشناست. Zustand برای اپلیکیشن‌های کوچک‌تر، نمونه‌سازی یا زمانی که Redux بیش از حد به نظر می‌رسد.


17. تفاوت‌های فلسفی بین وضعیت متمرکز و تغییرناپذیر Redux و وضعیت منعطف و تغییرپذیر Zustand چیست؟

Redux به رسمی‌سازی و ابزارسازی تمایل دارد؛ Zustand به سرعت و آزادی.


18. چگونه یک سیستم مدیریت وضعیت را طراحی می‌کنید که از یک نمونه اولیه کوچک به یک اپلیکیشن تولیدی با Redux یا Zustand مقیاس‌پذیر باشد؟


19. رویکرد شما برای تست منطق مدیریت وضعیت در Redux در مقابل Zustand چیست؟

Redux:

Zustand:

هر دو به‌راحتی قابل تست هستند، اما سادگی Zustand امکان تکرار سریع بدون سربار تست را فراهم می‌کند.


20. چگونه یک تیم را در انتخاب و پیاده‌سازی کتابخانه‌های مدیریت وضعیت مثل Redux یا Zustand آموزش می‌دهید؟

تیم را توانمند کنید تا انتخاب‌های آگاهانه داشته باشند، نه اینکه صرفاً از روندها پیروی کنند.