← Усі теми

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

REST-ресурси та семантика HTTP, коди статусу, помилки, пагінація й фільтрація, версіонування, ідемпотентність, кешування, автентифікація, OpenAPI, GraphQL, gRPC, вебхуки та real-time API.

225 запитань для співбесіди з теми Проєктування API з відповідями й поясненнями - рівні Junior, Middle і Senior. Приклади запитань, онлайн-тести й задачі на код.

Запитання за рівнями

Приклади запитань

Кілька запитань із кожного рівня з правильною відповіддю й поясненням.

Проєктування API · Junior

  1. Що таке REST API на практиці?

    Правильна відповідь: HTTP API, організований навколо ресурсів з URL-адресами, з якими працюють стандартними методами GET, POST, PUT, PATCH і DELETE

    REST - архітектурний стиль, описаний Роєм Філдінгом. Більшість «REST API» дотримуються його головних ідей: ресурси, уніфікований інтерфейс, відсутність стану й кешованість.

  2. Який дизайн URL відповідає поширеним домовленостям REST?

    Правильна відповідь: GET /users/42/orders

    URL називають ресурси (іменники, зазвичай у множині); HTTP-метод каже, що робити. Дієслова в шляхах - це RPC-стиль.

  3. Що означає «без стану» (stateless) для REST API?

    Правильна відповідь: Кожен запит несе все, що потрібно серверу (наприклад, токен автентифікації); сервер не покладається на стан сесії з попередніх запитів

    Відсутність стану спрощує горизонтальне масштабування: будь-який інстанс може обробити будь-який запит.

  4. Який HTTP-метод має створювати новий ресурс у колекції, наприклад нове замовлення?

    Правильна відповідь: POST /orders

    ID призначає сервер і зазвичай відповідає 201 Created із заголовком Location, що вказує на новий ресурс.

Усі 75 запитань з відповідями →

Проєктування API · Middle

  1. Як змоделювати «скасувати замовлення» в REST API?

    Правильна відповідь: Як зміну стану (PATCH /orders/42 з {status: "cancelled"}) або власну дію (POST /orders/42:cancel чи /orders/42/cancellation), задокументовану послідовно

    Скасоване замовлення зазвичай лишається для історії й може мати бізнес-правила. Окрема дія робить ці правила явними; GET ніколи не повинен змінювати стан.

  2. Коли зв'язок має бути окремим ресурсом, як-от /users/42/memberships?

    Правильна відповідь: Коли він має власні дані чи життєвий цикл (роль, дата вступу, схвалення), а не лише посилання між двома елементами

    Членство як ресурс дає природні операції створення, оновлення й видалення над ним.

  3. Як виглядає JSON Patch (RFC 6902)?

    Правильна відповідь: Список операцій на кшталт { "op": "replace", "path": "/email", "value": "a@b.c" }

    Операції: add, remove, replace, move, copy і test. Він точний для масивів, але складніший для клієнтів.

  4. Як REST API може дати клієнтам завантажити пов'язані ресурси одним запитом?

    Правильна відповідь: Параметром розгортання на кшталт ?include=author,comments (JSON:API) чи ?expand=customer

    Розгортання позбавляє «балакучих» клієнтів і тримає відповіді за замовчуванням малими. Обмежте глибину й кількість зв'язків.

Усі 75 запитань з відповідями →

Проєктування API · Senior

  1. Як обирати між REST, GraphQL і gRPC для нової системи?

    Правильна відповідь: За споживачами й обмеженнями: REST для публічних кешованих API ресурсів; GraphQL для різноманітних потреб UI в даних; gRPC для внутрішніх швидких викликів між сервісами з типізованими контрактами

    Багато систем поєднують їх: gRPC між сервісами, GraphQL чи REST BFF для клієнтів і REST для публічних партнерів.

  2. Що таке мислення «API як продукт»?

    Правильна відповідь: Ставитися до споживачів API як до клієнтів: стабільні контракти, добра документація, онбординг, політика версіонування, підтримка й метрики використання

    Внутрішнім API це теж корисно: інші команди - клієнти, чия продуктивність залежить від вашого дизайну.

  3. Навіщо запроваджувати governance API (стайлгайд, рев'ю, лінтинг) в організації з багатьма командами?

    Правильна відповідь: Щоб API відчувалися як одна платформа: послідовні назви, помилки, пагінація й автентифікація, що знижує вартість інтеграції для кожного споживача

    Автоматизуйте, що можна (правила Spectral, перевірки несумісних змін), а людське рев'ю лишайте для рішень щодо моделювання.

  4. Як закон Гайрема й «будь консервативним у тому, що надсилаєш» взаємодіють у розвитку API?

    Правильна відповідь: Від кожної помітної поведінки хтось залежатиме, тож відкривайте якнайменше, явно документуйте гарантії й уникайте випадкових контрактів на кшталт порядку полів

    Навіть текст повідомлення помилки, порядок сортування за замовчуванням чи час відповіді можуть стати тим, на що покладаються клієнти.

Усі 75 запитань з відповідями →

Збірні тести з цією темою

Запитання з кількох тем одразу - як на співбесіді на конкретну вакансію.

Задачі на код

Напишіть рішення просто в браузері - тести перевірять його одразу. Класика співбесід на JavaScript (debounce, deepClone, Promise.all, LRU-кеш) і на React: компоненти й хуки на кшталт списку справ, вкладок, useDebounce та useInterval.

Відкрити задачі →