Питання на співбесіді з проєктування API (Middle) з відповідями
75 запитань для співбесіди з теми Проєктування API (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Як змоделювати «скасувати замовлення» в REST API?
- 2.Коли зв'язок має бути окремим ресурсом, як-от
/users/42/memberships? - 3.Як JSON Merge Patch трактує
null? - 4.Як виглядає JSON Patch (RFC 6902)?
- 5.Як REST API може дати клієнтам завантажити пов'язані ресурси одним запитом?
- 6.Що дає клієнтам вибір полів (sparse fieldsets,
?fields=id,name,email)? - 7.Чому API може використовувати UUID чи непрозорі рядкові ID замість автоінкрементних чисел в URL?
- 8.Як API має представляти гроші?
- 9.Як повідомляти про помилки валідації кількох полів?
- 10.Чому коди помилок у тілі мають бути стабільними й задокументованими?
- 11.Який статус для коректно сформованого запиту, що порушує бізнес-правило, як-от «не можна відвантажити неоплачене замовлення»?
- 12.Повертати 403 чи 404, коли користувач запитує приватний ресурс іншого користувача?
- 13.Чому пагінація зі зміщенням дає дублікати чи пропуски, коли під час гортання додаються елементи?
- 14.Чому повертати загальну кількість з кожною сторінкою іноді проблемно?
- 15.Що важливо для порядку сортування в курсорній пагінації?
- 16.Як API може пропонувати гнучку фільтрацію, не стаючи мовою запитів, яку ніхто не зможе оптимізувати?
- 17.Як зазвичай виглядають параметри сортування?
- 18.Як ключ ідемпотентності працює на сервері?
- 19.Два клієнти редагують той самий документ. Як API може не дати одному тихо перезаписати іншого?
- 20.Що економить
304 Not Modified? - 21.Чому повтори небезпечні для неідемпотентних операцій без захисту?
- 22.Що означає
Cache-Control: private, max-age=60? - 23.Чим відрізняються
no-cacheіno-store? - 24.Що дозволяє
stale-while-revalidate? - 25.Чому заголовок
Varyважливий для кешування відповідей API? - 26.Що вважається несумісною зміною в REST API?
- 27.Що таке закон Гайрема (Hyrum's Law)?
- 28.Які компроміси версіонування в URL (
/v2/...) порівняно з версіонуванням у заголовку? - 29.Як змінити формат поля без нової мажорної версії?
- 30.Чим автентифікація відрізняється від авторизації в API?
- 31.Що описує OWASP API1:2023 Broken Object Level Authorization?
- 32.Що таке Broken Object Property Level Authorization (OWASP API3:2023)?
- 33.Чому токени доступу мають бути короткоживучими?
- 34.Для чого OAuth-скоупи?
- 35.Як автентифікувати виклики між сервісами всередині системи?
- 36.Чому обмеження частоти варто застосовувати на клієнта (API-ключ чи користувача), а не лише на IP?
- 37.Що охоплює OWASP API4:2023 Unrestricted Resource Consumption?
- 38.Як добре поводитися клієнту, коли він отримує 429 чи 503?
- 39.Як отримувач вебхука має перевірити, що запит справді від провайдера?
- 40.Чому обробники вебхуків мають бути ідемпотентними?
- 41.Чому ендпоінт вебхука має відповідати швидко й обробляти подію асинхронно?
- 42.Чи можна вважати, що події вебхуків приходять по порядку?
- 43.Чому HTTP-кешування з GraphQL складніше, ніж з REST?
- 44.Чим помилки GraphQL відрізняються від помилок REST?
- 45.Як GraphQL зазвичай розвиває схему?
- 46.Коли tRPC - добрий вибір?
- 47.Що описує AsyncAPI?
- 48.Як API має обробляти пакетну операцію, де деякі елементи не вдалися?
- 49.Чому великий експорт може бути кращим як асинхронна задача, а не один GET?
- 50.Як клієнти можуть завантажувати великі файли, не пропускаючи їх через API-сервер?
- 51.Що робить документацію API справді корисною?
- 52.Як автоматично ловити несумісні зміни в специфікації OpenAPI?
- 53.Що таке контрактні тести між клієнтом і API?
- 54.Навіщо генерувати SDK чи клієнти зі специфікації OpenAPI?
- 55.Як API має працювати з часовими поясами у вхідних і вихідних даних?
- 56.Яка розумна поведінка за замовчуванням для невідомих параметрів запиту?
- 57.Чому відповіді зі списками мають мати стабільний порядок за замовчуванням?
- 58.Що змінює в дизайні API підхід «Backend for Frontend»?
- 59.Що зазвичай робить API-шлюз (gateway)?
- 60.Як API має відкривати дії над багатьма елементами, як-от «заархівувати 500 повідомлень»?
- 61.Навіщо включати correlation ID у відповіді з помилками?
- 62.Чим ризиковано показувати клієнтам API внутрішні повідомлення помилок (наприклад, SQL)?
- 63.Коли
PUTз повним документом може бути кращим заPATCH? - 64.Чому без документації відповіді API не мають використовувати null для полів «не застосовується» й «невідомо»?
- 65.Що таке версіонування через media type?
- 66.Про що просить заголовок запиту
Prefer: return=minimal? - 67.Чому API не може відповідати
Access-Control-Allow-Origin: *на браузерні запити з обліковими даними? - 68.Браузерний SPA автентифікується до свого API через cookies. Який додатковий захист потрібен порівняно з bearer-токенами?
- 69.Як провайдер API має зберігати API-ключі, які видає?
- 70.Коли
POST /orders/searchз JSON-тілом прийнятний замість GET з параметрами запиту? - 71.Для чого домовленість
/users/me(чи/me)? - 72.Коли API має повертати
410 Gone, а не404? - 73.Який статус пасує до тіла запиту, більшого за дозволене API?
- 74.Чому стабільний
operationIdв OpenAPI має значення? - 75.Як версіонувати дані вебхуків?