А
Программист C++ Вакансия партнера
от 150 000 — до 200 000 ₽
Москва
Опыт 3-6 лет
В офисе
Постоянная работа
Специалист (Middle)
Производство
Обязанности
Проектирование архитектуры программного обеспечения в соответствии с выбранным стилем (слоистая, MVC/MVVM, клиент-сервер, модульная), определение ключевых компонентов и их взаимодействия. Определение внутренних и внешних интерфейсов (API, протоколы обмена, форматы данных) с учётом ограничений Astra Linux SE. Разработка технической документации на архитектуру: UML-диаграммы (классов, компонентов, последовательности, развёртывания), описание архитектурных решений (ADR), схемы развёртывания. Выбор технологий, библиотек и инструментов в рамках утверждённого стека (C++17, Qt5, CMake, Git). Проведение ревью кода и архитектурных решений, контроль соблюдения принятой архитектуры и стандартов кодирования. Оптимизация производительности и потребления ресурсов приложения (профилирование, многопоточность, работа с памятью).
Требования
Опыт работы от 6 лет обязателен;
Высшее образование (Программная инженерия, математика, системный анализ) Умение проектировать многопоточные приложения на C++17 с использованием Qt5 (QThread, сигналы/слоты, QMutex). Умение применять архитектурные и проектные паттерны (MVC, MVVM, Observer, Factory, Singleton, Dependency Injection и др.). Умение читать и анализировать чужой код на C++/Qt, выявлять архитектурные проблемы и предлагать решения. Умение настраивать и использовать системы контроля версий (Git), включая ветвление, ревью, разрешение конфликтов. Умение проводить профилирование и оптимизацию кода (valgrind, gprof, встроенные средства Qt). Умение разрабатывать и оформлять архитектурную документацию (UML, ADR, схемы). Умение обеспечивать безопасность приложения: защита от утечек памяти, переполнений буфера, гонок данных, корректная обработка исключений. Умение работать с сетевыми протоколами (TCP/IP, локальные сокеты, RS-232, RS-422, RS-485) для организации взаимодействия компонентов. Знание Astra Linux SE 1.7.3: архитектура ОС, мандатное управление доступом, дискреционный и мандатный доступ. Знание C++17: стандартная библиотека (STL), умные указатели, лямбда-выражения, move-семантика, шаблоны, многопоточность, исключения. Знание Qt5: QWidgets, QML (желательно), сигналы и слоты, модель/представление, QThread, QMutex, QReadWriteLock, QSettings, работа с ресурсами (.qrc), CMake. Знание архитектурных паттернов и стилей: слоистая архитектура, MVC, MVVM, клиент-сервер, событийно-ориентированная, микросервисы (для распределённых систем). Знание UML: диаграммы классов, компонентов, последовательности, состояний, развёртывания. Знание сетевых технологий: стек TCP/IP, сокеты, форматы обмена (JSON, XML, Protobuf).
Проектирование архитектуры программного обеспечения в соответствии с выбранным стилем (слоистая, MVC/MVVM, клиент-сервер, модульная), определение ключевых компонентов и их взаимодействия. Определение внутренних и внешних интерфейсов (API, протоколы обмена, форматы данных) с учётом ограничений Astra Linux SE. Разработка технической документации на архитектуру: UML-диаграммы (классов, компонентов, последовательности, развёртывания), описание архитектурных решений (ADR), схемы развёртывания. Выбор технологий, библиотек и инструментов в рамках утверждённого стека (C++17, Qt5, CMake, Git). Проведение ревью кода и архитектурных решений, контроль соблюдения принятой архитектуры и стандартов кодирования. Оптимизация производительности и потребления ресурсов приложения (профилирование, многопоточность, работа с памятью).
Требования
Опыт работы от 6 лет обязателен;
Высшее образование (Программная инженерия, математика, системный анализ) Умение проектировать многопоточные приложения на C++17 с использованием Qt5 (QThread, сигналы/слоты, QMutex). Умение применять архитектурные и проектные паттерны (MVC, MVVM, Observer, Factory, Singleton, Dependency Injection и др.). Умение читать и анализировать чужой код на C++/Qt, выявлять архитектурные проблемы и предлагать решения. Умение настраивать и использовать системы контроля версий (Git), включая ветвление, ревью, разрешение конфликтов. Умение проводить профилирование и оптимизацию кода (valgrind, gprof, встроенные средства Qt). Умение разрабатывать и оформлять архитектурную документацию (UML, ADR, схемы). Умение обеспечивать безопасность приложения: защита от утечек памяти, переполнений буфера, гонок данных, корректная обработка исключений. Умение работать с сетевыми протоколами (TCP/IP, локальные сокеты, RS-232, RS-422, RS-485) для организации взаимодействия компонентов. Знание Astra Linux SE 1.7.3: архитектура ОС, мандатное управление доступом, дискреционный и мандатный доступ. Знание C++17: стандартная библиотека (STL), умные указатели, лямбда-выражения, move-семантика, шаблоны, многопоточность, исключения. Знание Qt5: QWidgets, QML (желательно), сигналы и слоты, модель/представление, QThread, QMutex, QReadWriteLock, QSettings, работа с ресурсами (.qrc), CMake. Знание архитектурных паттернов и стилей: слоистая архитектура, MVC, MVVM, клиент-сервер, событийно-ориентированная, микросервисы (для распределённых систем). Знание UML: диаграммы классов, компонентов, последовательности, состояний, развёртывания. Знание сетевых технологий: стек TCP/IP, сокеты, форматы обмена (JSON, XML, Protobuf).
Адрес работы
Город Москва, Красноказарменная улица, дом: 14;
Требуемые навыки и допуски
- Навык работы с Linux
- Проектирование архитектуры
- Умение разбираться и работать с чужим кодом
- Навык работы с Объектно-ориентированным программированием (ООП) / Object-oriented programming (OOP)
- Исправление, устранение ошибок
- Проведение code review (ревью кода)
- Разработка программного обеспечения
- Навыки программирования
- Навык работы с STL
- Рефакторинг/оптимизация программного кода
- XML
- STL
- Docker
- C++
- Qt
- Английский (B2 — средне-продвинутый)