Основные профессиональные навыки
1. Язык программирования C++:
- Свободное владение современными стандартами (C++11/14/17/20).
- Понимание семантики перемещения, лямбда-выражений, шаблонов, RAII, умных указателей.
- Опыт работы с STL, Qt (желательно).
2. Многопоточное программирование:
- Глубокие знания многопоточности: std::thread, mutex, atomic, condition variables.
- Опыт реализации lock-free алгоритмов и структур данных.
- Понимание проблем race conditions, deadlocks и способов их предотвращения.
3. Работа в Linux:
- Опыт разработки под Linux (системные вызовы, POSIX API).
- Навыки сборки проектов с использованием Make/CMake, отладки через gdb, Valgrind, strace.
- Знание bash-скриптов, настройки системных сервисов (systemd).
4. RabbitMQ:
- Опыт интеграции RabbitMQ в C++-приложения.
- Понимание моделей обмена сообщениями: публикация/подписка, очереди, routing keys.
- Настройка кластеров, управление durable-очередями, обработка ошибок.
5. PostgreSQL:
- Уверенное владение SQL: сложные запросы, транзакции, индексы, оптимизация производительности.
- Работа с драйверами (libpqxx, pq).
- Понимание репликации, бэкапов, работы с большими объемами данных.
6. Сетевое программирование (сокеты):
- Реализация TCP/UDP-клиентов и серверов на сокетах.
- Работа с неблокирующими сокетами, мультиплексированием (select/poll/epoll).
- Знание протоколов HTTP/WebSocket, SSL/TLS для защищенных соединений.
Дополнительные навыки
- Системы контроля версий: Git, GitFlow.
- Контейнеризация: Docker, Docker Compose.
- Тестирование: Google Test, Catch2, нагрузочное тестирование.
- Английский язык: чтение технической документации (Intermediate+).
Опыт работы
- От 3 лет коммерческой разработки на C++ в среде Linux.
- Участие в проектах, связанных с распределенными системами, высоконагруженными сервисами или сетевыми приложениями.
Обязанности
- Разработка и оптимизация серверной части приложений.
- Реализация многопоточных компонентов и сетевых взаимодействий.
- Интеграция с RabbitMQ и PostgreSQL, обеспечение надежности и отказоустойчивости.
- Написание unit- и интеграционных тестов.
- Участие в код-ревью, рефакторинге, документировании.
Личные качества
- Аналитический склад ума, умение решать нестандартные задачи.
- Ответственность, самостоятельность, внимание к деталям.
- Готовность к работе в legacy-коде и с высокими нагрузками.
Будет преимуществом
- Опыт работы с другими брокерами сообщений (Kafka, ZeroMQ).
- Знание NoSQL-СУБД (Redis, MongoDB).
- Участие в opensource-проектах или наличие портфолио на GitHub.
- Базовые знания сетевой безопасности (шифрование, аутентификация).
Условия:
- Официальное оформление по ТК РФ
- Возможность удаленной работы или офис.
- По итогам года выплачивается премия.
- Компенсация питания
- Медицинская страховка