Питання на співбесіді з проєктування API (Senior) з відповідями

75 запитань для співбесіди з теми Проєктування API (Senior) - з правильними відповідями, поясненнями й посиланнями на документацію.

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