Питання на співбесіді з System Design (Middle) з відповідями
75 запитань для співбесіди з теми System Design (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.З чого правильно починати відповідь на задачу з frontend system design?
- 2.Чим курсорна пагінація краща за пагінацію за зсувом (
offset) для стрічки? - 3.Як спроєктувати нескінченну стрічку з тисячами постів?
- 4.Що важливо врахувати під час проєктування автодоповнення (autocomplete)?
- 5.Який головний компроміс GraphQL порівняно з REST?
- 6.Що таке проблема N+1 у GraphQL і як її розв'язують?
- 7.Коли доречний tRPC?
- 8.Які рівні кешування є між користувачем і базою даних?
- 9.Як правильно кешувати JS і CSS бандли?
- 10.Що дає
Cache-Control: max-age=60, stale-while-revalidate=600? - 11.Чому інвалідацію кешу називають однією з найскладніших задач?
- 12.Який головний недолік stateless JWT порівняно із серверними сесіями?
- 13.Де безпечніше зберігати токен сесії в браузері?
- 14.Навіщо потрібна пара access- і refresh-токенів?
- 15.Який OAuth-потік рекомендують для SPA й мобільних застосунків?
- 16.Чим OpenID Connect відрізняється від OAuth 2.0?
- 17.Як захиститися від CSRF за автентифікації через cookie?
- 18.Що обрати для сповіщень у реальному часі, які йдуть лише від сервера?
- 19.Що треба передбачити під час перепідключення WebSocket?
- 20.Як безпечно повторювати запит оплати в разі мережевої помилки?
- 21.Навіщо до експоненційної затримки повторів додають випадковий розкид (jitter)?
- 22.Як правильно організувати завантаження користувацьких файлів у хмарне сховище?
- 23.Як надійно завантажувати файли розміром у гігабайти?
- 24.Як боротися з конфліктами, коли двоє користувачів редагують один запис?
- 25.Як влаштувати офлайн-режим для застосунку нотаток?
- 26.Що робить застосунок PWA?
- 27.Яку стратегію рендерингу логічно обрати для лендингу, каталогу й особистого кабінету?
- 28.Чим погана повна гідратація великої контентної сторінки?
- 29.Як відстежувати продуктивність у реальних користувачів?
- 30.Як пришвидшити перехід на наступну сторінку, яку користувач, імовірно, відкриє?
- 31.Чим небезпечні сторонні скрипти (аналітика, чати, реклама) для продуктивності?
- 32.Чим canary-реліз відрізняється від blue-green?
- 33.Як поступово ввімкнути нову функцію для 10% користувачів?
- 34.Які плюси й мінуси монорепозиторію для кількох фронтенд-застосунків?
- 35.Що лежить в основі масштабованої дизайн-системи?
- 36.Як має поводитися інтерфейс у разі падіння одного з віджетів дашборда?
- 37.Навіщо передавати ідентифікатор запиту (request id / trace id) від фронтенду до бекенду?
- 38.Як працює алгоритм rate limiting «token bucket»?
- 39.Як показувати курсори інших учасників у спільному редакторі, не перевантажуючи мережу?
- 40.Лічильник непрочитаних повідомлень розходиться в різних вкладках. Як виправити?
- 41.Як завантажувати переклади в багатомовному SPA, не роздуваючи бандл?
- 42.Які HTTP-заголовки безпеки варто налаштувати для вебзастосунку?
- 43.Як ефективно надсилати події аналітики?
- 44.Чому повертати
totalCountу кожній відповіді списку може бути дорого? - 45.Чим API Gateway відрізняється від BFF?
- 46.Як оновлювати клієнтський кеш після мутації, щоб користувач побачив зміни?
- 47.Що таке back/forward cache і як його не зламати?
- 48.Як обробити спливання access-токена посеред роботи користувача?
- 49.Чому для великих каталогів пошук роблять на сервері, а не фільтрацією на клієнті?
- 50.Як керувати фокусом під час відкриття модального вікна в SPA?
- 51.Чим відрізняються
Cache-Control: no-cacheіno-store? - 52.Що
Cache-Control: privateозначає для CDN? - 53.Коли браузер надсилає preflight-запит CORS і як його уникнути?
- 54.Що змінюють cookie з
SameSite=LaxіSameSite=Strict? - 55.Що таке IDOR і як йому запобігти?
- 56.Чим
PATCHвідрізняється відPUT? - 57.Навіщо використовувати стандартний формат помилок на кшталт RFC 9457 Problem Details?
- 58.Як клієнту реагувати на
429 Too Many Requestsіз заголовкомRetry-After? - 59.Що дає
<link rel="preconnect">? - 60.Що дозволяє
103 Early Hints? - 61.Яка стратегія кешування в service worker пасує для якого ресурсу?
- 62.З чим допомагає Background Sync у застосунку з офлайн-режимом?
- 63.Коли важкі обчислення варто виносити у Web Worker?
- 64.Як глобальному застосунку працювати з датами й часом?
- 65.Чим синтетичний моніторинг відрізняється від моніторингу реальних користувачів (RUM)?
- 66.Чим відрізняються SLI, SLO і SLA?
- 67.Сторінці потрібні дані з 6 мікросервісів. Що зменшить кількість запитів клієнта?
- 68.Чому ендпоінт вебхука має відповідати швидко, а подію обробляти асинхронно?
- 69.Чим відрізняються liveness- і readiness-проби?
- 70.Що дають persisted queries у GraphQL?
- 71.Як повідомити користувачів скрінрідерів про асинхронні оновлення (наприклад, «3 нові повідомлення»)?
- 72.Чому sticky sessions на балансувальнику можуть спричиняти проблеми?
- 73.Як керувати секретами (API-ключі, паролі БД) під час деплою?
- 74.Чому необмежений
GET /api/items(без ліміту) може стати інцидентом? - 75.Що важливо на фронтенді під час проєктування великої багатокрокової форми (майстра)?