Питання на співбесіді з System Design (Senior) з відповідями
75 запитань для співбесіди з теми System Design (Senior) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Що стверджує теорема CAP?
- 2.Користувач оновив профіль, перезавантажив сторінку й побачив старі дані. Яку гарантію порушено?
- 3.Чим небезпечний вибір ключа шардування «за датою створення»?
- 4.Навіщо консистентне хешування під час додавання вузлів кешу?
- 5.Навіщо ставити чергу повідомлень між API та обробником важких задач?
- 6.Чому споживачі черги з доставкою «at-least-once» мають бути ідемпотентними?
- 7.Що таке backpressure?
- 8.Чим fan-out on write відрізняється від fan-out on read у стрічці соцмережі?
- 9.Як забезпечити правильний порядок повідомлень у чаті?
- 10.Які компоненти зазвичай потрібні в архітектурі месенджера?
- 11.Як масштабувати WebSocket-сервери горизонтально?
- 12.Як реалізувати статус «онлайн» для мільйонів користувачів?
- 13.Чим OT відрізняється від CRDT у спільному редагуванні?
- 14.Як працює адаптивний стримінг відео (HLS/DASH)?
- 15.Як спроєктувати роздачу користувацьких зображень різних розмірів?
- 16.Як реалізувати rate limiting, якщо API працює на 20 серверах?
- 17.Для чого зручний фільтр Блума?
- 18.Як генерувати короткі посилання в сервісі скорочення URL?
- 19.Як масштабувати підказки пошуку (typeahead) для мільйонів запитів на секунду?
- 20.Які проблеми з'являються під час роботи сервісу в кількох регіонах (active-active)?
- 21.Чим небезпечний заголовок
Vary: User-AgentабоVary: Cookieдля CDN? - 22.Що таке cache stampede і як йому запобігти?
- 23.Чим відрізняються стратегії cache-aside, write-through і write-back?
- 24.Коли варто рендерити на edge, а коли в регіоні поруч із базою даних?
- 25.Які існують способи композиції мікрофронтендів?
- 26.Як деплоїти зміну API, не зламавши клієнтів старої версії?
- 27.Чому після деплою SPA користувачі отримують
ChunkLoadError? - 28.Як метрики, логи й трейси доповнюють одне одного?
- 29.Що таке бюджет помилок (error budget)?
- 30.Що таке патерн Bulkhead (перегородки)?
- 31.Чому важливо дивитися на p99 затримки, а не лише на середнє?
- 32.Як поєднати кешування HTML на CDN і персоналізацію (ім'я користувача, кошик)?
- 33.Чому успішний редирект зі сторінки оплати не можна вважати підтвердженням оплати?
- 34.Як перевірити справжність вхідного вебхука?
- 35.Чому пошуковий індекс часто оновлюється асинхронно, а не в тій самій транзакції?
- 36.Як атомарно оновити базу даних і надіслати подію в чергу?
- 37.Сервіс має витримувати 10 млн активних користувачів на день по 20 запитів. Яке середнє навантаження?
- 38.Чим проєктування read-heavy системи відрізняється від write-heavy?
- 39.Як побудувати аналітичний дашборд за мільйонами подій, щоб він відкривався швидко?
- 40.Як спроєктувати систему сповіщень (email, push, in-app)?
- 41.Як віддавати результат важкої операції (експорт звіту на 5 хвилин)?
- 42.Як фронтенд може обчислювати feature flags без мерехтіння інтерфейсу?
- 43.Що мінімізувати в логах і аналітиці заради приватності?
- 44.Чому підписані посилання на приватні файли роблять короткоживучими?
- 45.Чим проєктування системи із суворою узгодженістю відрізняється для банківського балансу та лічильника лайків?
- 46.Що таке hedged requests і коли вони корисні?
- 47.Як забезпечити роботу сайту, якщо впав сервіс рекомендацій?
- 48.Як визначити вимоги до зберігання повідомлень чату на 5 років для 1 млн користувачів?
- 49.Чим відмовостійкість active-passive відрізняється від active-active?
- 50.Чому відповідь API для мобільних клієнтів варто проєктувати з урахуванням довгого життя старих версій?
- 51.Чи досяжна доставка повідомлень «рівно один раз» (exactly-once) у розподіленій системі?
- 52.Один акаунт знаменитості отримує мільйони записів і перевантажує свою партицію. Що допоможе?
- 53.Які є типові варіанти ізоляції орендарів у мультитенантному SaaS?
- 54.Яка структура даних робить повнотекстовий пошук швидким?
- 55.Як дешево зберігати метрики з мільярдами точок?
- 56.Як реалізувати таблицю лідерів гри в реальному часі?
- 57.Що дає ID у стилі Snowflake порівняно з випадковим UUIDv4?
- 58.Чому в реплікованому сховищі з N=3 обирають R=2 і W=2?
- 59.Чому двофазний коміт рідко використовують між мікросервісами?
- 60.Що таке load shedding (скидання навантаження)?
- 61.Чому в serverless-функцій бувають сплески затримки після простою?
- 62.Після падіння WebSocket-сервера всі клієнти перепідключаються одночасно й знову його валять. Як цьому запобігти?
- 63.Чому платіжні системи використовують незмінний журнал подвійного запису замість змінюваної колонки
balance? - 64.Як виконати запит на «право бути забутим», якщо персональні дані лежать у незмінних логах подій і бекапах?
- 65.Як перейменувати колонку в базі без простою?
- 66.Що означають RPO і RTO в аварійному відновленні?
- 67.Що таке chaos engineering?
- 68.Як вимоги до локалізації даних (наприклад, дані ЄС лишаються в ЄС) впливають на архітектуру?
- 69.1 млн переглядів відео на день по 50 МБ - яка приблизно потрібна середня вихідна пропускна здатність?
- 70.Сервіс обробляє 1000 запитів/с із середньою затримкою 200 мс. Скільки запитів у середньому перебуває в обробці одночасно?
- 71.Навіщо розподіленому блокуванню fencing-токени?
- 72.Для чого використовується Change Data Capture (CDC)?
- 73.Дашборд виконує важку агрегацію під час кожного завантаження сторінки. Яке типове рішення?
- 74.Як розвивати схеми подій чи повідомлень, не ламаючи споживачів?
- 75.Чому прив'язка WebSocket-користувачів до сервера ускладнює деплой?