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

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

Пройти цей тест
  1. 1.Що таке REST API на практиці?
  2. 2.Який дизайн URL відповідає поширеним домовленостям REST?
  3. 3.Що означає «без стану» (stateless) для REST API?
  4. 4.Який HTTP-метод має створювати новий ресурс у колекції, наприклад нове замовлення?
  5. 5.Чим PUT відрізняється від PATCH?
  6. 6.Які HTTP-методи є «безпечними» (safe)?
  7. 7.Які методи ідемпотентні за семантикою HTTP?
  8. 8.Що має повернути DELETE /orders/42, якщо замовлення видалено й повертати нічого?
  9. 9.Що містить заголовок Location у відповіді 201 Created?
  10. 10.Чому назви ресурсів в URL зазвичай іменники в множині, як-от /users?
  11. 11.Що означає 400 Bad Request?
  12. 12.Чим відрізняються 401 Unauthorized і 403 Forbidden?
  13. 13.Який код статусу пасує до «email уже зареєстрований» при створенні користувача?
  14. 14.Що каже клієнту 429 Too Many Requests?
  15. 15.Коли API має повертати коди 5xx?
  16. 16.Що зазвичай означає 503 Service Unavailable?
  17. 17.Чому повертати 200 OK з { "error": "not found" } - погана практика?
  18. 18.Що означає 404 Not Found для GET /orders/999?
  19. 19.Що повідомляє серверу заголовок запиту Content-Type: application/json?
  20. 20.Для чого заголовок Accept?
  21. 21.Як представляти дату й час у JSON API?
  22. 22.Чому API може повертати великі числові ID як рядки в JSON?
  23. 23.Який стиль назв полів має використовувати JSON API?
  24. 24.Куди в REST-запиті мають іти параметри фільтрації й сортування?
  25. 25.Що містить добре тіло відповіді з помилкою?
  26. 26.Що таке RFC 9457 (Problem Details)?
  27. 27.Чому ендпоінти списків мають бути з пагінацією?
  28. 28.Чим відрізняються пагінація зі зміщенням і курсорна?
  29. 29.Чому курсор пагінації має бути непрозорим для клієнтів?
  30. 30.Як API може повідомити клієнтам, що є ще сторінки?
  31. 31.Як зазвичай надсилають bearer-токен до API?
  32. 32.Чому API треба обслуговувати лише через HTTPS?
  33. 33.Для чого зазвичай використовують API-ключ?
  34. 34.Про що головно OAuth 2.0?
  35. 35.Що контролює CORS?
  36. 36.Чому API має перевіряти всі вхідні дані, навіть якщо офіційний клієнт уже це робить?
  37. 37.Що таке OpenAPI?
  38. 38.Яка перевага підходу «спершу дизайн» (design-first) для API?
  39. 39.Навіщо API стайлгайд?
  40. 40.Для чого JSON Schema в API?
  41. 41.Яка зміна наявної відповіді API зазвичай зворотно сумісна?
  42. 42.Який поширений спосіб версіонувати REST API?
  43. 43.Чому клієнти мають ігнорувати невідомі поля у відповідях?
  44. 44.Як API має оголосити, що ендпоінт буде видалено?
  45. 45.Які відповіді HTTP-кеші можуть зберігати найбезпечніше?
  46. 46.Що таке ETag?
  47. 47.Навіщо API може стискати відповіді?
  48. 48.Що таке GraphQL?
  49. 49.Що таке вебхук?
  50. 50.Для чого зазвичай використовують gRPC?
  51. 51.Чим відрізняються API у стилі REST і RPC?
  52. 52.Коли Server-Sent Events кращі за опитування?
  53. 53.Що повертає HEAD /files/report.pdf?
  54. 54.Навіщо надсилаються preflight-запити CORS OPTIONS?
  55. 55.Як використовувати вкладені ресурси в URL?
  56. 56.Який розумний максимум для параметра limit ендпоінта списку?
  57. 57.Навіщо API заголовок з ID запиту, як-от X-Request-Id?
  58. 58.Яким інструментом часто вручну пробують API-запити?
  59. 59.Що означає «надлишкове отримання» (over-fetching)?
  60. 60.Що означає «недостатнє отримання» (under-fetching, «балакучий» API)?
  61. 61.Чи має API напряму відкривати внутрішні ID бази та структуру таблиць?
  62. 62.Як називати булеві прапорці в даних API?
  63. 63.Чому enum у відповідях API складно розширювати?
  64. 64.Чого ніколи не має робити запит GET?
  65. 65.Що означає Retry-After: 120 у відповіді?
  66. 66.Що таке модель зрілості Річардсона?
  67. 67.Що таке HATEOAS?
  68. 68.Користувач двічі клацає «Оплатити», і клієнт надсилає POST /payments двічі. Який ризик і поширене рішення?
  69. 69.Що означає 202 Accepted?
  70. 70.Як клієнт може стежити за довгою операцією, запущеною з 202 Accepted?
  71. 71.Коли нормально створювати ресурс через PUT?
  72. 72.Чому багато API повертають { "data": [...] }, а не голий JSON-масив для списків?
  73. 73.Що дають клієнтам заголовки на кшталт RateLimit-Remaining (чи X-RateLimit-Remaining)?
  74. 74.Як клієнт може отримати кількох користувачів за ID одним запитом у REST API?
  75. 75.Яка поширена назва параметра запиту для повнотекстового пошуку в колекції?