Встречается на собеседованиях • сегодня

Какая была самая сложная задача на Backend без оборудования

Разработка распределённой системы очередей с гарантированной доставкой сообщений и обработкой дублей. Основные сложности:

  1. Гарантии доставки: нужно было обеспечить at-least-once доставку, но избежать дублей при повторных отправках.
  2. Масштабируемость: система должна была обрабатывать >10k сообщений/сек с возможностью горизонтального масштабирования.
  3. Идемпотентность: обработка дубликатов без повторного выполнения бизнес-логики.

Решение на Python (упрощённый пример):

python
class MessageQueue:
    def __init__(self):
        self.processing = set()
        self.completed = set()

    async def process(self, message_id, payload):
        if message_id in self.completed:
            return  # уже обработано
        
        if message_id in self.processing:
            raise ConcurrentProcessingError()
            
        self.processing.add(message_id)
        try:
            await handle_payload(payload)
            self.completed.add(message_id)
        finally:
            self.processing.remove(message_id)

Ключевые моменты:

  • Использование Redis для хранения состояний
  • Таймауты обработки
  • Механизм подтверждения (ack/nack)
  • Шардирование очередей

Особенно сложно было добиться согласованности при обработке в конкурентной среде.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы