frontend-interview-questions

1. چرا برنامه‌های تک‌صفحه‌ای (SPA) توسعه داده شدند و چه مشکلاتی را نسبت به برنامه‌های چندصفحه‌ای (MPA) حل کردند؟

SPAها با به‌روزرسانی پویا رابط کاربری از طریق جاوااسکریپت سمت کلاینت، نیاز به بارگذاری کامل صفحه را کاهش می‌دهند. این کار مشکلات تأخیر و تجربه کاربری ضعیف در MPAها را حل می‌کند، جایی که هر بار جابه‌جایی نیازمند درخواست کامل به سرور و رندر مجدد DOM بود.


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

ظهور SPAها هم‌زمان شد با:


3. چطور می‌توان مزایا و معایب SPA نسبت به MPA را برای افراد غیر فنی توضیح داد؟

SPAها سریع‌تر به‌نظر می‌رسند چون فقط بخش‌هایی از صفحه را به‌روزرسانی می‌کنند. ولی در MPAها کل صفحه دوباره بارگذاری می‌شود که می‌تواند حس کندی بدهد. SPAها بعد از بارگذاری اولیه، زمان انتظار را کاهش می‌دهند اما نیاز به تلاش بیشتر برای سئو و عملکرد دارند.


4. چه مزایای کلیدی باعث توسعه SPAها شدند و این مزایا چطور با نیازهای مدرن وب هماهنگ هستند؟


5. محدودیت‌های MPAهای سنتی (مثل رفرش صفحه و تأخیر) چطور بر طراحی SPAها تأثیر گذاشتند؟

MPAها مشکل تأخیر، رندر غیرضروری و تجربه کاربری نه‌چندان روان داشتند. SPAها وظیفه رندر را به مرورگر واگذار کردند تا انتقال بین صفحات فوری و تعاملات روان‌تر شود.


6. چرا SPAها تبدیل به انتخاب پیش‌فرض برای فریمورک‌هایی مثل React، Angular و Vue شدند؟

این فریمورک‌ها برای مدیریت پیچیدگی رابط کاربری طراحی شده‌اند و قابلیت رندر واکنشی و مبتنی بر وضعیت را فراهم می‌کنند — که برای SPAها ایده‌آل است. آن‌ها سیستم مسیریابی، گرفتن دیتا و مدل کامپوننتی دارند که با تجربه‌های تک‌صفحه‌ای سازگار است.


7. چطور می‌توان تصمیم گرفت که SPA برای پروژه‌ای مناسب‌تر از MPA است؟

از SPA استفاده کنید وقتی:


8. پیاده‌سازی‌های اولیه SPA چه چالش‌هایی داشتند و ابزارهای مدرن چطور آن‌ها را حل کرده‌اند؟


9. چطور تیمی را که با MPA کار کرده با مزایا و هدف SPA آشنا کنیم؟


10. نظرتان درباره مسیر تحول SPAها از گذشته تا امروز چیست و آینده این رویکرد را چطور می‌بینید؟

SPAها در حال تبدیل به اپ‌های ترکیبی هستند با:


11. مسیریابی در SPA چطور کار می‌کند و چه تفاوتی با مسیریابی سنتی سمت سرور دارد؟


12. چطور در یک SPA با React و React Router مسیریابی سمت کلاینت پیاده‌سازی می‌کنید؟

import { BrowserRouter, Routes, Route } from "react-router-dom";

<BrowserRouter>
  <Routes>
    <Route path="/" element={<Home />} />
    <Route path="/dashboard" element={<Dashboard />} />
  </Routes>
</BrowserRouter>;


13. در یک SPA با React، چطور وضعیت را بین صفحات مختلف مدیریت می‌کنید؟

استفاده از:


14. چالش‌های مدیریت تاریخچه مرورگر و دکمه‌های back/forward در SPA چیست؟

React Router با <BrowserRouter> و useNavigate بیشتر این‌ها را مدیریت می‌کند.


15. چطور عملکرد مسیریابی SPA را بهینه می‌کنید تا تأخیر در جابه‌جایی صفحات کاهش یابد؟


16. استراتژی شما برای مدیریت مسیرهای اشتباه یا 404 در SPA چیست؟

<Route path="*" element={<NotFound />} />

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


17. چطور SSR را با مسیریابی SPA در React برای بهبود سئو ترکیب می‌کنید؟

از فریمورک‌هایی مثل Next.js استفاده کنید:


18. چطور مسیرهای محافظت‌شده در یک SPA با React پیاده‌سازی می‌کنید؟

از الگوی مسیر خصوصی استفاده کنید:

const PrivateRoute = ({ children }) =>
  isAuthenticated ? children : <Navigate to="/login" />;

بررسی توکن، مدیریت سطح دسترسی و هدایت کاربران غیرمجاز را پیاده‌سازی کنید.


19. چطور منطق مسیریابی در یک SPA با React را تست می‌کنید تا از عملکرد درست آن در سناریوهای مختلف اطمینان حاصل کنید؟

استفاده از:

مثال:

render(
  <MemoryRouter initialEntries={["/dashboard"]}>
    <App />
  </MemoryRouter>
);


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