frontend-interview-questions

1. چگونه یک معماری فرانت‌اند طراحی می‌کنید که بتواند برای میلیون‌ها کاربر مقیاس‌پذیر باشد و در عین حال عملکرد و بهره‌وری توسعه‌دهندگان را حفظ کند؟

رویکرد:


2. پیامدهای بلندمدت انتخاب معماری مبتنی بر کامپوننت (مثل React) نسبت به پارادایم‌های دیگر مانند MVC یا طراحی‌های فرانت‌اند یکپارچه چیست؟


3. چگونه بین نیاز به توسعه سریع ویژگی‌ها و ایجاد یک سیستم فرانت‌اند قوی و آینده‌نگرانه تعادل برقرار می‌کنید؟


4. در یک معماری میکروفرانت‌اند، چگونه ثبات بین تیم‌ها را تضمین می‌کنید در حالی که استقلال در انتخاب فناوری را حفظ می‌کنید؟


5. چگونه یک برنامه React با اتصال تنگاتنگ را به یک سیستم مدولار و با اتصال آزاد بازسازی می‌کنید بدون اختلال در توسعه جاری؟


6. چالش‌برانگیزترین مشکل عملکردی که در یک برنامه فرانت‌اند با آن مواجه شدید چیست و چگونه آن را حل کردید؟

مشکل: یک گرید داده React بیش از 10,000 ردیف را در هر تعامل رندر مجدد می‌کرد.

راه‌حل:


7. چگونه تصمیم می‌گیرید که یک بهینه‌سازی عملکردی (مثل مموایزیشن، بارگذاری تنبل) زودهنگام است یا ضروری؟

زودهنگام: وقتی بهینه‌سازی پیچیدگی را بدون تأثیر قابل اندازه‌گیری بر کاربر اضافه می‌کند.

ضروری:


8. درباره تعادل بین رندر سمت کلاینت، رندر سمت سرور و تولید سایت استاتیک در برنامه‌های React چگونه فکر می‌کنید؟

استراتژی مزایا معایب
CSR تعامل سریع سئو ضعیف، نقاشی اولیه کندتر
SSR (Next.js) سئو خوب، پویا هزینه سرور بالاتر
SSG تحویل سریع‌ترین، سئو عالی برای داده‌های پویا مناسب نیست

قانون کلی:


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

مراحل: JS → استایل → طرح‌بندی → نقاشی → ترکیب

برای بهینه‌سازی:


10. چگونه یک برنامه React را برای دستگاه‌های کم‌قدرت یا شرایط شبکه ضعیف بهینه می‌کنید؟


11. تفاوت‌های فلسفی بین مدیریت وضعیت واکنشی (مثل MobX) و جریان داده یک‌طرفه (مثل Redux) چیست؟

ویژگی MobX Redux
پارادایم مشاهده‌پذیر (push) یک‌طرفه (pull)
کد نمونه کم بیشتر
اشکال‌زدایی دشوار به دلیل به‌روزرسانی‌های مخفی آسان‌تر به دلیل لاگ‌ها/سفر در زمان

Redux برای پیش‌بینی‌پذیری بهتر است، MobX برای توسعه سریع و وضعیت محلی.


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

window.addEventListener("storage", (e) => {
  if (e.key === "auth") syncAuth(e.newValue);
});

برای برنامه‌های حیاتی: استفاده از کارگران مشترک یا همگام‌سازی مبتنی بر indexedDB.


13. پیچیده‌ترین مشکل مدیریت وضعیت که حل کرده‌اید چیست و چه چیزی آن را چالش‌برانگیز کرد؟

سناریو: همکاری بلادرنگ با پشتیبانی آفلاین.

چالش‌ها:

راه‌حل: استفاده از صف مبتنی بر reducer سفارشی، تداوم indexedDB و رابط کاربری خوش‌بینانه با بازگشت.


14. درباره مرز بین وضعیت فرانت‌اند و وضعیت بک‌اند در یک سیستم توزیع‌شده چگونه فکر می‌کنید؟

فرانت‌اند:

بک‌اند:

استفاده از React Query یا Apollo برای اتصال، با جداسازی واضح کش کلاینت از اقتدار سرور.


15. پیامدهای اتکای بیش‌ازحد به وضعیت جهانی در یک برنامه React چیست و چگونه از تبدیل شدن آن به یک «شیء خدا» جلوگیری می‌کنید؟

راه‌حل:


16. چگونه ارزیابی می‌کنید که آیا یک ابزار یا کتابخانه جدید فرانت‌اند (مثل Vite، TanStack Query) ارزش پذیرش در یک پایگاه کد موجود را دارد؟

معیارها:

مثال: برای پذیرش Vite:


17. نظر شما درباره تکامل بسته‌سازهای جاوااسکریپت از Webpack به Vite و ESBuild چیست؟

نتیجه‌گیری: Vite برای توسعه مدرن با بازخورد سریع ایده‌آل است. Webpack همچنان در برنامه‌های قدیمی و پیچیده غالب است.


18. چگونه تنش بین پذیرش فناوری‌های پیشرفته فرانت‌اند و تضمین پایداری در تولید را مدیریت می‌کنید؟

رویکرد:


19. مهم‌ترین محدودیت TypeScript در پروژه‌های فرانت‌اند بزرگ‌مقیاس چیست و چگونه آن را دور می‌زنید؟

مشکل: پیچیدگی در جنریک‌های پیشرفته و استنباط در ماژول‌ها.

راه‌حل‌ها:


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

هوش مصنوعی برای موارد زیر عالی است:

اما هنوز در موارد زیر ضعیف است:

هوش مصنوعی نقش‌های ارشد فرانت‌اند را تقویت می‌کند، نه جایگزین. طراحی استراتژیک، ارتباطات و تفکر سیستمی همچنان انسانی باقی می‌مانند.


21. چگونه اطمینان می‌دهید که دسترسی‌پذیری در یک چرخه توسعه سریع به‌عنوان یک فکر بعدی در نظر گرفته نشود؟

رویکرد:

<button aria-label="Close modal">×</button>


22. سخت‌ترین چالش دسترسی‌پذیری که در یک برنامه React با آن مواجه شدید چیست و چگونه آن را برطرف کردید؟

چالش: ایجاد یک منوی کشویی سفارشی قابل دسترسی با کیبورد و دوستدار صفحه‌خوان.

راه‌حل:


23. چگونه یک سیستم فرانت‌اند طراحی می‌کنید که در مرورگرهای با سطوح مختلف پشتیبانی از ویژگی‌ها به‌زیبایی تنزل کند؟

رویکرد:

if ("IntersectionObserver" in window) {
  // Use modern lazy-loading
} else {
  // Fallback: eager load or scroll events
}


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

معیارهای کلیدی:

استفاده از ابزارهایی مثل Amplitude، PostHog، Sentry و Google Lighthouse.


25. رویکرد شما برای ساخت یک فرانت‌اند که در وب «بومی» به نظر برسد چیست و با چه تعارض‌هایی مواجه می‌شوید؟

رویکرد:

تعارض‌ها:


26. چگونه یک سیستم احراز هویت فرانت‌اند طراحی می‌کنید که هم ایمن باشد و هم کاربرپسند؟

ایمن:

کاربرپسند:


27. ظریف‌ترین آسیب‌پذیری امنیتی که در یک برنامه فرانت‌اند با آن مواجه شدید چیست و چگونه آن را کشف و برطرف کردید؟

مشکل: یک بردار XSS ذخیره‌شده در فیلد بیوگرافی پروفایل کاربر که از طریق dangerouslySetInnerHTML نمایش داده می‌شد.

رفع:


28. چگونه اطمینان می‌دهید که یک برنامه React در صورت خرابی یا تغییر غیرمنتظره وابستگی‌های شخص ثالث قابل اعتماد باقی می‌ماند؟

استراتژی‌های مقاوم‌سازی:

<ErrorBoundary fallback={<FallbackUI />}>
  <ThirdPartyComponent />
</ErrorBoundary>


29. استراتژی شما برای مدیریت خطاهای فرانت‌اند در تولید در مقیاس چیست؟


30. درباره تعامل بین امنیت فرانت‌اند و بک‌اند در یک برنامه فول‌استک چگونه فکر می‌کنید؟


31. مهم‌ترین درسی که درباره رهبری تیم‌های فرانت‌اند آموخته‌اید و کاش زودتر در حرفه‌تان می‌دانستید چیست؟

درس: شفافیت بر هوشمندی برتری دارد.


32. چگونه فرهنگ آزمایش را در یک تیم فرانت‌اند پرورش می‌دهید در حالی که استانداردهای بالای کیفیت را حفظ می‌کنید؟


33. فلسفه شما درباره بدهی فنی در توسعه فرانت‌اند چیست؟

فلسفه:


34. چگونه تنش بین ارائه ارزش تجاری سریع و ساخت یک سیستم فرانت‌اند با کیفیت فنی را مدیریت می‌کنید؟


35. بزرگ‌ترین مشکل حل‌نشده در توسعه فرانت‌اند امروز چیست و چگونه به حل آن رویکرد می‌کنید؟

مشکل: مدیریت وضعیت پایدار در مقیاس—تعادل بین وضعیت محلی، جهانی و سرور.

چرا دشوار است: نیازهای رابط کاربری پیچیده اغلب با عملکرد و سادگی در تضاد هستند.

رویکرد: