frontend-interview-questions

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

استراتژی‌های کلیدی:

const Product = React.lazy(() => import("./Product"));


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

رویکرد:

socket.on("newMessage", (msg) => {
  dispatch(addMessage(msg));
});


3. چگونه یک سیستم فرانت‌اند طراحی می‌کنید که بتواند بین حالت‌های آنلاین و آفلاین به‌صورت یکپارچه جابه‌جا شود؟

تکنیک‌ها:

window.addEventListener("online", syncQueuedRequests);


4. چگونه یک سیستم فرانت‌اند را برای پشتیبانی از بین‌المللی‌سازی (i18n) و محلی‌سازی (L10n) برای مخاطبان جهانی طراحی می‌کنید؟

معماری:

i18n.changeLanguage("fr"); // تغییر دینامیک زبان


5. استراتژی شما برای طراحی یک سیستم فرانت‌اند که با یک بک‌اند میکروسرویس ادغام شود چیست؟

استراتژی:


6. چگونه یک برنامه React را طراحی می‌کنید تا حجم بسته را به حداقل برساند و زمان بارگذاری اولیه را برای یک اپلیکیشن بزرگ‌مقیاس بهینه کند؟

تاکتیک‌ها:


7. چگونه یک سیستم فرانت‌اند را برای مدیریت صفحه‌بندی، اسکرول بی‌نهایت و مجموعه داده‌های بزرگ (مثل بیش از 100,000 رکورد) طراحی می‌کنید؟

بهترین روش‌ها:

<FixedSizeList height={600} itemSize={35} itemCount={items.length}>
  {Row}
</FixedSizeList>


8. رویکرد شما برای طراحی یک استراتژی کش فرانت‌اند برای کاهش فراخوانی‌های API اضافی در یک برنامه React چیست؟

لایه‌های کش:


9. چگونه یک سیستم فرانت‌اند را برای مدیریت اوج ترافیک (مثل فروش‌های بلک فرایدی) بدون کاهش عملکرد طراحی می‌کنید؟


10. چگونه یک برنامه React را برای پشتیبانی از ویژگی‌های برنامه وب پیش‌رونده (PWA) مثل اعلان‌های فشاری و کش آفلاین طراحی می‌کنید؟

معماری:

self.addEventListener('push', event => {
  self.registration.showNotification('New Offer!', {...});
});


11. چگونه یک سیستم مدیریت وضعیت را برای یک برنامه React با کامپوننت‌های رابط کاربری پیچیده و وابسته به هم طراحی می‌کنید؟

رویکرد:


12. رویکرد شما برای طراحی یک سیستم فرانت‌اند که داده‌ها را به‌صورت دوطرفه و بلادرنگ با بک‌اند همگام‌سازی کند (مثل ویرایش همکاری) چیست؟

الگو:

editor.onChange = (change) => socket.emit('doc:update', change);


13. چگونه یک سیستم فرانت‌اند را برای مدیریت تداوم داده‌های سمت کلاینت در refresh صفحات و جلسات طراحی می‌کنید؟

ابزارها:

localStorage.setItem('theme', 'dark');


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

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

axiosRetry(api, { retries: 3, retryDelay: exponentialDelay });


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

جریان:

  1. فوراً وضعیت رابط کاربری را به‌روزرسانی کنید (مثل لایک کردن یک پست).
  2. درخواست غیرهمزمان را به بک‌اند ارسال کنید.
  3. در صورت خطا، به وضعیت قبلی بازگردید.
mutation.mutate(updateItem, {
  onMutate: () => updateCacheLocally(),
  onError: () => rollback(),
});

از react-query یا مدیر جهش سفارشی برای ردیابی استفاده کنید.


16. چگونه یک سیستم فرانت‌اند را برای کار با یک بک‌اند GraphQL در مقابل یک بک‌اند RESTful طراحی می‌کنید؟

تفاوت‌های کلیدی:

استراتژی GraphQL:

const { data, loading } = useQuery(GET_PRODUCT, { variables: { id } });

استراتژی REST:


17. چگونه یک سیستم فرانت‌اند را برای ادغام با یک بک‌اند قدیمی با APIهای ناسازگار و زمان پاسخ‌دهی کند طراحی می‌کنید؟

رویکرد:

async function getNormalizedUser(id) {
  const raw = await legacyAPI.get(`/user/${id}`);
  return { name: raw.username, age: raw.details?.age ?? null };
}


18. رویکرد شما برای طراحی یک سیستم فرانت‌اند که از تست A/B و سوئیچ‌های ویژگی در مقیاس پشتیبانی کند چیست؟

طراحی سیستم:

{
  featureFlags.newCheckout ? <NewCheckout /> : <LegacyCheckout />;
}


19. چگونه یک سیستم فرانت‌اند را برای همکاری با تیم بک‌اند با رویکرد قراردادمحور (مثل OpenAPI، طرح‌های GraphQL) طراحی می‌کنید؟

بهترین روش‌ها:

// تایپ‌های تولیدشده از طرح GraphQL
type GetUserQuery = {
  user: { id: string, name: string },
};


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

رویکرد:

const apiBase = process.env.REACT_APP_API_URL;


21. چگونه یک سیستم فرانت‌اند را برای مدیریت زیبا مسائل سازگاری مرورگر در طیف گسترده‌ای از دستگاه‌ها و نسخه‌ها طراحی می‌کنید؟

تکنیک‌ها:

if (!window.fetch) {
  loadPolyfill().then(initApp);
}


22. رویکرد شما برای طراحی یک سیستم فرانت‌اند با استقرارهای بدون توقف چیست؟

روش‌ها:

<script src="/static/js/main.[hash].js" defer></script>


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

ابزارها:

reportWebVitals((metric) => sendToAnalytics(metric));


24. چگونه یک سیستم فرانت‌اند را برای نگهداری بلندمدت توسط تیمی با سطوح مهارتی مختلف طراحی می‌کنید؟

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

"scripts": {
  "lint": "eslint src --ext .js,.ts,.tsx",
  "typecheck": "tsc --noEmit"
}


25. رویکرد شما برای طراحی یک سیستم فرانت‌اند که بتواند از خرابی‌های فاجعه‌بار (مثل وضعیت خراب، قطعی شبکه) بازیابی کند چیست؟

استراتژی دفاعی:

<ErrorFboundary fallback={<Fallback />}>
  <Dashboard />
</ErrorBoundary>