Platform C/C++ Sync Engineer
Чем Вам предстоит заниматься:
- Развивать системы синхронизации Базовой Станции по времени и распространения сигналов синхронизации с различных источников между компонентами БС;
- Работать напрямую с тестовым стендом в лаборатории, внесение изменений, работа с измерительным оборудованием промышленного операторского класса (частотомеры, генераторы, осциллографы, эмуляторы сети, и.т.д.);
- Участвовать в проектировании и развитии архитектуры телеком решений;
- Разрабатывать компоненты телеком платформы в технологическом стеке С++/Linux;
- Разрабатывать API по взаимодействию с аппаратным обеспечением и операционной системой для конфигурации и управлению инфраструктурой;
- Собирать метрики для оценки производительности продукта;
- Участвовать в диагностике возможных проблем работы системы в тестовых и полевых сценариях;
- Исправлять дефекты;
- Создавать инструментарий для поддержки разработчиков;
- Создавать техническую документацию.
Что мы ожидаем от будущего члена команды:
- Наличие опыта в C++ (Знания стандарта 17 и выше будет плюсом);
- Знание и опыт С (опыт разработки модулей ядра Linux будет плюсом);
- Опыт работы с измерительным оборудованием (генераторы, осциллографы, частотомеры, анализаторы спектра), базовые представления о метрологии;
- Умение автоматизировать сбор данных с измерительного оборудования;
- Уверенные знания сетей, базирующихся на TCP/IP;
- Знание ОС Linux на продвинутом уровне и опыт разработки для Linux (Знание низкоуровнего Linux API (syscalls) будет плюсом);
- Хорошее представление о современном аппаратном обеспечении (устройство памяти, шин данных, систем ввода-вывода);
- Опыт работы с системами автоматизации сборки ПО(cmake, autoconf, bazel или любая иная);
- Опыт работы с механизмами межпроцессного взаимодействия (IPC);
- Знание примитивов синхронизации потоков в многопроцессорных системах;
- Знание и понимание различных уровней тестирования, умение тестировать собственный код;
- Опыт работы с системами версионного контроля (BitBucket, Gitlab) и баг-трекинга (JIRA);
- Важно знать английский на уровне чтения и написания технической документации;
- Умение работать с документацией (в первую очередь читать и понимать);
- Способность разработать требования к измерительному стенду.
Дополнительно приветствуем:
- Знания или опыт работы с существующими протоколами синхронизации времени
- Понимание функционирования Event-driven приложений, построение DataPlane (DPDK, ODP, EventMachine);
- Опыт конфигурирования и использования SRIOV, SoftSwitches;
- Опыт использования I2C, SPI, PCIe и подобных протоколов и интерфейсов для взаимодействия с оборудованием;
- Опыт работы со встраиваемым программным обеспечением и системами реального времени;
- Опыт работы с gRPC и REST протоколами;
- Знания об устройстве ядра Linux и опыт написания драйверов;
- Умение писать системные приложения и демоны под GNU/Linux;
- Общие знания мобильных телекоммуникационных систем LTE;
- Oпыт в разработке высоконагруженных систем;
- Oпыт в профилировании кода и в применении различных методов/инструментов отладки/диагностирования ошибок;
- Опыт «железной» (с помощью измерительных приборов) отладки;
- Знание и опыт работы с системами виртуализации.