Какими сетевыми протоколами кроме HTTP вы профессионально пользовались?
Что проверяют
Работали ли вы за пределами REST и понимаете ли, почему в конкретном месте выбран другой протокол. Следом идёт углубление по тому, что вы назвали: чем WebSocket лучше опроса, как в RabbitMQ устроены подтверждения, что будет с сообщением при падении консьюмера.
Как отвечать
Называйте только то, с чем работали, и к каждому пункту добавляйте задачу и библиотеку. Типичный набор Python-разработчика:
- WebSocket: чаты, уведомления, живые дашборды. Соединение начинается HTTP-запросом с
Upgradeи дальше живёт как двунаправленный канал. Этоwebsockets, эндпоинты FastAPI/Starlette,aiohttp; - gRPC: вызовы между сервисами поверх HTTP/2 со схемой в protobuf, есть потоковые вызовы. Библиотека
grpcio, кодогенерация черезgrpcio-tools; - AMQP: RabbitMQ через
aio-pikaили как брокер Celery. Скажите про ручнойack,prefetch_countи повторную доставку; - протокол Kafka:
confluent-kafkaилиaiokafka, группы консьюмеров, коммит офсетов; - SMTP и SFTP: письма через
smtplib/aiosmtplib, обмен файлами с партнёрами черезparamikoилиasyncssh; - TCP и UDP напрямую:
asynciostreams илиsocket, когда нужен свой бинарный протокол, опрос оборудования или отправка метрик в StatsD по UDP.
Удобная форма: протокол, задача, почему не HTTP, что пошло не так. Например: «уведомления сначала опрашивали раз в несколько секунд, перешли на WebSocket, нагрузка на API упала, зато пришлось решать переподключение и рассылку между воркерами через Redis pub/sub». Цифры берите из своего проекта.
Если опыта мало, не выдумывайте список. Честно скажите, что работали в основном с HTTP, и назовите, что знаете на уровне концепций и что трогали руками, пусть даже в пет-проекте.
Где спотыкаются
Называют TCP/IP «протоколом кроме HTTP». HTTP/1.1 и HTTP/2 сами работают поверх TCP, так что без рассказа про сокеты и свой протокол это ответ ни о чём.
Перечисляют десяток аббревиатур без задач. Первый же вопрос про QoS в MQTT или ack в AMQP показывает, что опыта нет.
Не могут объяснить выбор. WebSocket ставят туда, где хватило бы SSE, а gRPC предлагают для браузерного клиента, хотя браузер напрямую его не умеет и нужен gRPC-Web.