Питання на співбесіді з проєктування API (Senior) з відповідями
75 запитань для співбесіди з теми Проєктування API (Senior) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Як обирати між REST, GraphQL і gRPC для нової системи?
- 2.Що таке мислення «API як продукт»?
- 3.Навіщо запроваджувати governance API (стайлгайд, рев'ю, лінтинг) в організації з багатьма командами?
- 4.Як закон Гайрема й «будь консервативним у тому, що надсилаєш» взаємодіють у розвитку API?
- 5.Як працює версіонування API за датою (як у Stripe)?
- 6.Яка головна ціна підтримки багатьох версій API одночасно?
- 7.Як безпечно прибрати широко використовуване поле?
- 8.Чому зміна поведінки за замовчуванням (наприклад, розміру сторінки) - несумісна зміна?
- 9.API пише в основну базу, а читання віддає з реплік. Клієнт створює елемент і одразу запитує список, не бачачи його. Як дизайн API має це врахувати?
- 10.Як відкрити в API багатокрокову операцію, що охоплює кілька сервісів?
- 11.Як мають поводитися ключі ідемпотентності, коли перший запит ще виконується, а приходить повтор?
- 12.Як довго сервер має зберігати ключі ідемпотентності?
- 13.Яку проблему розв'язує дизайн вебхуків з «тонкими» подіями?
- 14.Як система вебхуків має обробляти підписника, що падає вже кілька днів?
- 15.Чим ризиковано надсилати вебхуки на довільні URL, надані клієнтами?
- 16.Як спроєктувати ендпоінт, чий запит дорогий і популярний?
- 17.Що SLO на p99 затримки API означає для його залежностей?
- 18.Як публічний API має захищатися від зловживань і дорогих шаблонів використання?
- 19.Що таке обмеження частоти за вартістю?
- 20.Чому HTTP/2 змінює компроміси пакетування багатьох дрібних API-запитів?
- 21.Чому persisted (дозволені) запити цінні для публічних GraphQL API?
- 22.Як GraphQL-схема має моделювати мутації для зручності клієнтів?
- 23.Чим ризиковано відкривати моделі бази напряму як GraphQL-схему?
- 24.Чому для публічного GraphQL API в продакшені можуть вимикати introspection?
- 25.Які правила зворотної сумісності для повідомлень Protocol Buffers?
- 26.Які можливості gRPC виходять за межі типового REST API?
- 27.Як відкрити gRPC-сервіс браузерам і REST-клієнтам без дублювання логіки?
- 28.Чим відрізняються OWASP API1 (BOLA) і API5 (Broken Function Level Authorization)?
- 29.Про що попереджає OWASP API6:2023 (Unrestricted Access to Sensitive Business Flows)?
- 30.Про що OWASP API9:2023 (Improper Inventory Management)?
- 31.Що охоплює OWASP API10:2023 (Unsafe Consumption of APIs)?
- 32.Чому JWT-токени доступу для API треба перевіряти суворо?
- 33.Що додає взаємний TLS (mTLS) для API між сервісами?
- 34.Як API може мінімізувати шкоду від злитих облікових даних?
- 35.Які метрики найкраще описують здоров'я API з погляду споживача?
- 36.Як визначати SLO для публічного API?
- 37.Навіщо передавати W3C-заголовки
traceparentчерез API? - 38.Як безпечно випустити ризиковану зміну API?
- 39.Що таке шаблон «довгої операції» в гайдлайнах API Google?
- 40.Яку проблему розв'язують «маски полів» в операціях оновлення?
- 41.Чому API може використовувати ресурсно-орієнтовані «власні методи» на кшталт
POST /orders/42:cancel? - 42.Як спроєктувати пагінацію для стрічки, що має лишатися узгодженою, поки надходять нові елементи?
- 43.Як добре відкривати дорогі обчислювані агрегати, як-от місячний дохід на клієнта?
- 44.Як API може підтримати мобільних клієнтів з підходом offline-first?
- 45.Який компроміс відкриття загального API запитів (наприклад, фільтрів OData чи сирого GraphQL-доступу до всіх даних)?
- 46.Чому «балакучі» внутрішні API можуть стати проблемою в мікросервісах?
- 47.Який недолік того, щоб класти забагато логіки в API-шлюз?
- 48.Як API має працювати з персональними даними, щоб відповідати вимогам на кшталт GDPR?
- 49.Чому API варто уникати послідовних, вгадуваних ідентифікаторів для чутливих ресурсів навіть за наявної авторизації?
- 50.Як мультитенантні API мають запобігати витокам даних між тенантами?
- 51.Як обирати між вебхуками, SSE, WebSockets і опитуванням для доставки оновлень?
- 52.Як API реального часу має відновлюватися після розривів, не втрачаючи подій?
- 53.Навіщо документувати API реального часу й подієві API через AsyncAPI?
- 54.Що таке consumer-driven contract testing?
- 55.Як виявити, які клієнти зламаються, ще до зміни поведінки API?
- 56.Чому повтори на кількох рівнях (клієнт, шлюз, сервіс) можуть спричинити «шторм повторів»?
- 57.Що таке hedging запитів і коли він доречний?
- 58.Як API має повідомити, що запит застосовано частково й безпечно повторити його не можна?
- 59.Що означає проєктувати API «ззовні всередину» (outside-in)?
- 60.Навіщо надавати офіційні SDK на додачу до документації сирого HTTP?
- 61.Чим ризикована тісна прив'язка форми відповіді API до одного екрана UI?
- 62.Як ставитися до несумісних змін формату помилок?
- 63.Коли API потребує явної оптимістичної паралельності (ETag/
If-Match) за замовчуванням? - 64.Чому таймаути мають бути частиною задокументованого контракту API?
- 65.Як замінити застарілий API новою реалізацією без перемикання «все й одразу»?
- 66.Що таке заплановані «brownouts» при виведенні версії API?
- 67.Як не дати одному великому тенанту погіршити спільний API для всіх?
- 68.Коли API може пропонувати Protobuf чи інший двійковий формат на додачу до JSON?
- 69.Чим ризиковано кешувати автентифіковані відповіді API на CDN?
- 70.Чому подієві API зазвичай обіцяють доставку «щонайменше один раз», а не «рівно один раз»?
- 71.Для чого реєстр схем у подієвих API (наприклад, з Kafka)?
- 72.Що додає підпис запитів (наприклад, на основі HMAC, як AWS SigV4) понад bearer-токен?
- 73.Як дизайн API має враховувати вимоги до розташування даних (наприклад, дані ЄС лишаються в ЄС)?
- 74.Чому токени пагінації мають бути прив'язані до запиту, що їх створив?
- 75.Де документувати квоти й ліміти частоти для кожного тарифу?