Какой был API сервиса черных списков?
Что проверяют
Действительно ли вы участвовали в проектировании или знаете сервис только понаслышке. Интервьюер ждёт не учебник про REST, а конкретику вашего проекта: что блокировалось, какие были эндпоинты, какая нагрузка. Следом обычно спрашивают, как проверка укладывалась во время ответа и что делали с ложными блокировками.
Как отвечать
Опишите сервис по слоям, подставляя свои детали:
- что лежит в списке: телефоны, email, IP и подсети, идентификаторы устройств. Для каждого типа своя нормализация: телефон в формат E.164, email в нижний регистр, подсети через модуль
ipaddress; - эндпоинты: проверка вида
GET /v1/blacklist/check?type=phone&value=...с ответом{"blocked": true, "reason": "fraud"}, пакетная проверка, добавление и снятие с причиной и автором. Если записи нет, проверка отдаёт 200 сblocked: false, а не 404; - стек: FastAPI или Django REST Framework, схемы на Pydantic, PostgreSQL с уникальным индексом по нормализованному значению. Для подсетей подходят типы
inetиcidrс оператором>>=; - производительность: проверка стоит на горячем пути, поэтому её часто обслуживает Redis или кеш в памяти процесса с инвалидацией по событию. Назовите свои RPS и задержку;
- жизненный цикл записи: срок действия, мягкое удаление, журнал аудита, кто и почему снял блокировку;
- доступ: сервисы ходят с API-ключом, JWT или по mTLS, запись в список доступна только отдельной роли.
Если вы были потребителем, а не автором сервиса, так и скажите и расскажите со стороны клиента: таймауты, что делали при недоступности (блокировать или пропускать), как кешировали ответ.
Где спотыкаются
Рассказывают абстрактный CRUD без единой цифры и детали. На поведенческом вопросе это звучит как выдуманный опыт.
Не продумывают ложные срабатывания. Без процедуры снятия и журнала причин поддержка неделями разбирает жалобы заблокированных по ошибке.
Хранят персональные данные открытым текстом без нужды. Для точного совпадения хватает HMAC от нормализованного значения; простой хеш телефона не спасает, вариантов мало и они перебираются.