Редакция Jobs Catcher · обновлено
API, данные и разбор неопределённости
Собеседование системного аналитика: вопросы, ошибки API и учебный кейс
Готовьте не только определения, но и связный разбор: требование → контракт → данные → ошибка → проверка. На примере своего проекта покажите, где информации достаточно, а где сначала нужен вопрос.
Семь вопросов системному аналитику
Это учебные вопросы, а не требования или программа собеседования конкретного работодателя.
Что входит в контракт API?
Метод и адрес, поля и их обязательность, форматы, ограничения, успешные и ошибочные ответы. Отдельно обсудите авторизацию, повторы, совместимость и поведение при неопределённом исходе.
Чем 201 отличается от 202?
201 сообщает о создании ресурса. 202 — о принятии запроса на обработку; результат работы ещё может быть неизвестен. Для отложенной операции нужен способ проверить состояние.
Как описать ошибку?
Свяжите HTTP-статус с конкретным сценарием и стабильным машинным кодом. Клиенту должно быть понятно, что исправить; внутренние трассировки и персональные данные в ответ не нужны.
Зачем нужен ключ идемпотентности?
При явно поддерживаемом контракте он помогает связать повтор с той же операцией. Само наличие заголовка ничего не гарантирует: сервер должен проверять ключ, данные и сохранять согласованный результат.
Что показать на ER-диаграмме?
Сущности, ключи, связи и ограничения с объяснением бизнес-смысла. Укажите, какая запись может отсутствовать и какие связи обязательны.
Чем sequence diagram дополняет контракт?
Она показывает участников, порядок вызовов и ветки ошибок. Проверьте, что названия полей и состояний совпадают в диаграмме, спецификации и модели данных.
Что делать с неясным правилом?
Назовите недостающее решение и последствия разных вариантов. Например, можно ли бронировать комнату сразу после конца предыдущей брони; ответ меняет условие пересечения и проверки.
Кейс: запрос на создание брони ушёл, а ответ потерян
Вымышленный пример. Клиент отправил создание бронирования и получил тайм-аут. Неизвестно, успел ли сервер сохранить запись.
Тайм-аут не доказывает отказ до записи. Новый независимый POST может создать вторую бронь. Сначала выясните, есть ли ID операции, ключ идемпотентности и разрешённый способ чтения результата.
Возможный ответ кандидата
«Разделю состояние клиента и факт записи на сервере. При наличии ID проверю результат чтением. Если контракт поддерживает идемпотентный повтор, использую тот же ключ и тот же запрос. Без такого контракта не буду автоматически создавать новую операцию: сначала нужен способ сверить результат».
Вопросы для спецификации: как долго хранится ключ, что возвращать при том же ключе и другом теле, как отличить обработку от завершения, кто может читать состояние и что делать после истечения срока хранения.
В ручной таблице сценариев разделите: отказ до отправки; запись завершилась и ответ получен; запись завершилась, ответ потерян; операция ещё обрабатывается; повтор с изменёнными данными. Это проектирование проверок, а не заявление о работающем сервере.
Пример вопроса про данные и SQL
Есть учебные таблицы Room(id, name) и Booking(id, room_id, status). Нужно показать все комнаты и число активных бронирований, включая комнаты без броней.
SELECT r.id, r.name, COUNT(b.id) AS active_count FROM Room AS r LEFT JOIN Booking AS b ON b.room_id = r.id AND b.status = 'active' GROUP BY r.id, r.name;
Здесь считают b.id, а не все строки соединения. Условие статуса находится в ON, чтобы комнаты без активных броней остались в результате. Проверьте пустую таблицу бронирований, только отменённую бронь и несколько активных записей.
Не объявляйте этот запрос проверкой конфликтов времени: для неё нужны интервалы и отдельное правило. Полный учебный набор правил и контракта есть в примере портфолио СА.
Как оценить свой ответ
- Понятны вход, результат и ошибочные состояния.
- Вы отделили подтверждённый факт от предположения.
- Повторы и тайм-аут не превращаются автоматически в новую запись.
- Поля и статусы согласованы между артефактами.
- Предложена проверка границы или отказа, а не только успешного пути.
- Теория, учебная практика и коммерческий опыт обозначены честно.
Подготовьте рассказ об одном своём решении: какие варианты рассмотрели, почему выбрали этот и что осталось непроверенным. Не заучивайте чужой проект как собственный.
Для проверки обозначений: Семантика HTTP и SELECT в SQLite. Правила учебных кейсов выше заданы отдельно.
Продолжите в Jobs Catcher
После входа добавьте резюме, проверьте и подтвердите распознанные сведения, затем уточните критерии поиска. Сервис найдёт доступные вакансии, а ИИ оценит их по подтверждённому профилю. Вы проверяете результат и отправляете отклик сами. Jobs Catcher не отправляет отклики работодателям.
После подбора подходящей системной роли можно подготовить материалы и план интервью для выбранного кейса. Черновики Jobs Catcher сверяйте с собственным опытом и исходной вакансией.
Перейти к поиску вакансийTrial начинается при первом входе через Яндекс ID, предоставляется один раз и действует 3 дня без карты. Lite — 600 ₽ за 30 дней с автопродлением; его можно отключить в кабинете. Pro и дополнительные ИИ-инструменты — скоро.