О нас: Мы строим распределенную систему [укажите суть: мониторинга, IoT, телеметрии, умного дома и т.д.]. У нас нет рутинного верстания кнопок. У нас есть сложная логика взаимодействия устройств/сервисов через асинхронные сообщения, где цена ошибки — потеря данных или падение системы. Нам нужен инженер, способный держать всю архитектуру в голове.
Что мы ожидаем (Наш идеал):1. Архитектурное мышление и понимание распределенных систем (Самое важное)
- Глубокое понимание MQTT: Вы знаете не только как отправить сообщение через библиотеку paho или mqtt.js. Вы понимаете, как работает протокол под капотом (соединение, пинг, QoS 0/1/2, Clean Session, Retained messages, Last Will). Вы можете нарисовать схему топиков для сложной системы и обосновать, почему сделано именно так.
- Идемпотентность и состояний: Вы понимаете, что такое дублирование сообщений при QoS 1/2 и умеете писать код, который корректно обрабатывает повторный приход одного и того же сообщения.
- Управление(backpressure): Вы понимаете, что делать, когда продюсер генерирует сообщения быстрее, чем консьюмер может их обработать.
2. Глубокое владение стеком (Python + Node.js)
- Python (Ядро логики): Уверенное понимание GIL, асинхронности (asyncio) и многопоточности (threading). Вы знаете, когда для фоновых задач нужен Celery, а когда — asyncio.create_task.
- Понимание управления памятью в Python.
- Node.js (Шлюз / Реал-тайм слой): Глубокое понимание Event Loop. Вы знаете разницу между setImmediate, setTimeout и process.nextTick, и понимаете, как это влияет на обработку MQTT-сообщений.
- Умение писать устойчивый к утечкам памяти код (знание слабых ссылок, правильная очистка listeners/подписок при отключении клиентов).
- Взаимодействие стеков: Понимание того, как безопасно передавать типизированные данные (например, через Protocol Buffers или строго валидированный JSON) между Python-бэкендом и Node.js-брокером/клиентом без потери типов и искажения чисел с плавающей точкой.
3. Инженерная смекалка (Умение работать без подсказок)
- Системная отладка: Если MQTT-брокер (например, Mosquitto/EMQX) начинает жрать память или терять сообщения, вы не идете гуглить «как починить mqtt». Вы идете в логи системы, смотрите TCP-соединения, анализируете метрики брокера и профилируете свой код подписок.
- Умение читать чужой код: Большую часть времени вы будете разбираться, как данные текут от источника до базы данных через 5 микросервисов.
- Интеллектуальная честность: Если вы не знаете, как работает определенный механизм сетевого стека, вы честно говорите «я пойду и изучу это», а не выдумываете ответ или копируете непонятный код из ИИ.
❌ Красные флаги (Кого мы НЕ хотим видеть):
- Кандидатов, которые на техническом интервью говорят: "Я бы попросил ChatGPT написать архитектуру".
- Тех, кто не может объяснить, как работает свой собственный код на уровне цикла событий или системных вызовов.
- Специалистов, знающих только синтаксис фреймворков (FastAPI/Express), но не понимающих, как язык работает с памятью и сетью.
Условия:
- пятидневка с 8:00 до 17:00
Адрес вакансии:
Г. Красноярск, ул. Тамбовская 5