Определите queued → running → done/failed, уникальность ID, владение request и политику переполнения очереди. Status должен возвращать согласованный снимок и отличать неизвестный ID.
Контракт Scheduler с методами Queue и Status
Определите queued → running → done/failed, уникальность ID, владение request и политику переполнения очереди. Status должен возвращать согласованный снимок и отличать неизвестный ID.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Нужен планировщик: Queue(request []byte) ID принимает задачу, Status(id) возвращает статус, результат и ошибку. Какие состояния и гарантии определить до реализации?
Ответ
Определите queued → running → done/failed, уникальность ID, владение request и политику переполнения очереди. Status должен возвращать согласованный снимок и отличать неизвестный ID.
Скопируйте входной []byte, если вызывающий код может его менять. Состояния защищайте синхронизацией, а долгую работу выполняйте вне locks. Сигнатура Queue без error требует явного выбора: блокировать до приёма либо изменить контракт, чтобы сообщать отказ. Для production нужны ограничение ресурсов, завершение workers и правила восстановления после рестарта.