Ключевые обязанности:
- Разработка и оптимизация бэкенда
• Проектирование и реализация высокопроизводительных серверных компонентов, сервисов и библиотек на C/C++/Python.
• Разработка модульных и повторно используемых программных библиотек с четкими API и документацией.
• Оптимизация использования памяти, циклов ЦП и производительности приложений с помощью продвинутых методов отладки и профилирования.
• Разработка многопоточных и асинхронных приложений с использованием POSIX threads, Boost или аналогичных библиотек.
- Проектирование систем и архитектура
• Проектирование и создание масштабируемых, распределенных серверных систем для удовлетворения сложных бизнес-требований.
• Работа с низколатентными системами, реализация эффективных сетевых протоколов, таких как TCP, UDP и пользовательских протоколов.
• Участие в проектировании RESTful или бинарных API, обеспечение безопасной и бесшовной связи между компонентами.
- Встраиваемое и системное программирование
• Написание и оптимизация системного кода для сред Linux с упором на производительность и надежность.
• Разработка приложений, взаимодействующих с аппаратным обеспечением, включая загрузчик, драйверы и ядро.
• Управление памятью, межпроцессное взаимодействие (IPC) и общие ресурсы в ограниченных средах.
- Тюнинг производительности и отладка
• Проведение низкоуровневого профилирования и тюнинга приложений с использованием таких инструментов, как perf, VTune, gprof или Cachegrind.
• Оптимизация управления памятью с использованием пользовательских аллокаторов, пулов объектов и использования стековой памяти.
• Использование продвинутых методов отладки, таких как дампы памяти (core dumps), трассировки стека (stack traces) и аппаратные точки останова (hardware breakpoints).
• Выявление и устранение узких мест в процессах, ограниченных ЦП, памятью или вводом-выводом.
• Настройка параметров компилятора и написание эффективных алгоритмов для достижения оптимальной производительности.
• Отладка сложных проблем в производственных системах с использованием gdb, strace.
- Сетевое взаимодействие и разработка протоколов
• Разработка эффективных сетевых протоколов и управление сокетным программированием для серверных приложений.
• Реализация и устранение неполадок в сетевых уровнях, включая SSL/TLS, WebSocket и HTTP/2.
• Разработка пользовательских протоколов связи для специализированных случаев использования, таких как потоковая передача в реальном времени или IoT.
• Оптимизация сетевых стеков с использованием сокетного программирования, механизмов zero-copy и разгрузки протоколов.
• Сотрудничество в проектировании пользовательских протоколов связи для систем реального времени или распределенных систем.
• Знание протоколов Layer2 802.1Q, VLAN, bridging, spanning tree, LLDP, LACP.
• Знание протоколов Layer3 Router, Firewall, ACL.
• Знание беспроводных протоколов 802.11.
- Тестирование и обеспечение качества
• Написание надежных модульных тестов с использованием таких фреймворков, как Google Test (gtest) или Catch2.
• Проведение системного тестирования для обеспечения надежности в производственных средах.
• Настройка конвейеров непрерывной интеграции для автоматизированного тестирования и развертывания кодовых баз на C/C++/Python.
- Безопасность и соответствие требованиям
• Реализация практик безопасного кодирования для предотвращения уязвимостей, таких как переполнение буфера, состояния гонки и утечки памяти.
• Реализация безопасных протоколов передачи (SSL/TLS) и шифрование конфиденциальных данных в состоянии покоя и при передаче.
• Проектирование отказоустойчивых систем с резервированием, контрольными точками и механизмами автоматического отката.
• Проведение моделирования угроз и интеграция мер безопасности в жизненный цикл разработки.
• Обеспечение безопасности серверных систем от распространенных уязвимостей (например, OWASP Top 10).
- Интеграция с аппаратным обеспечением и внешними системами
• Разработка серверных сервисов, которые взаимодействуют с аппаратным обеспечением или устройствами IoT, обрабатывая потоки данных в реальном времени.
• Управление связью с аппаратными периферийными устройствами через такие протоколы, как SPI, I2C или CAN.
- Постоянное совершенствование и инновации
• Изучение достижений в стандартах C/C++/Python и новых технологий.
• Вклад в проекты с открытым исходным кодом или внутренние фреймворки.
• Предложение инновационных решений для улучшения рабочих процессов разработки, производительности системы или пользовательского опыта.
Требуемые квалификации:
• Образование: Степень бакалавра или магистра в области компьютерных наук, программной инженерии или смежной области.
• Опыт: Более 10 лет профессионального опыта в разработке встраиваемых систем на Linux.
Языки и фреймворки:
• Языки: Эксперт в C/C++/Python
• Инструменты сборки: Знание OpenWrt, Yocto, Makefile, CMake, Autotools.
Системное программирование:
• Глубокие знания концепций операционных систем, включая многопоточность, управление памятью и ввод-вывод файлов.
• Экспертиза в системном программировании Linux (например, epoll, inotify).
• Продвинутые знания файловых систем, планирования процессов и управления памятью.
• Понимание ограничений реального времени и системных прерываний.
Сеть и протоколы:
• Опыт сокетного программирования и протоколов, таких как TCP/IP, UDP, HTTP/2, gRPC, MQTT или WebSocket.
• Знание DNS, балансировщиков нагрузки и протоколов сетевой безопасности (SSL/TLS).
• Знакомство с инструментами мониторинга сети, такими как Wireshark и Tcpdump.
Управление базами данных:
• Владение реляционными базами данных (например, MySQL, PostgreSQL) и опыт работы с базами данных NoSQL, такими как MongoDB или Cassandra.
• Отличные навыки проектирования эффективных схем баз данных и написания оптимизированных запросов.
Оптимизация производительности:
• Опыт работы с инструментами отладки, такими как gdb, Valgrind и Perf.
• Способность оптимизировать структуры данных и алгоритмы для высокопроизводительных приложений.
Системы сборки и контроль версий:
• Владение системами сборки, такими как CMake, Makefile, Autotools, OpenWrt или Yocto.
• Опыт работы с Git, включая продвинутые рабочие процессы, такие как rebase и submodules.
DevOps и CI/CD:
• Реализация конвейеров CI/CD с использованием Jenkins, GitHub Actions или GitLab CI.
• Опыт работы с контейнеризацией (Docker) и платформами оркестрации, такими как Kubernetes.
Soft Skills и образ мышления:
• Отличные коммуникативные навыки для четкого изложения технических концепций.
• Превосходные навыки решения проблем и отладки.
• Способность работать самостоятельно и в распределенной команде.
• Проактивность в выявлении проблем и предложении решений.
Заявление компании
В NETGEAR мы стремимся раскрыть весь потенциал связи с помощью интеллектуальных решений, которые радуют и защищают. Мы превращаем идеи в инновационные сетевые продукты, которые объединяют людей, поддерживают бизнес и продвигают вперед наш образ жизни.
Мы — команда талантливых и целеустремленных профессионалов, стремящаяся к созданию продуктов мирового класса для наших клиентов. Как компания, мы ценим наших сотрудников как самые важные составляющие нашего успеха. И как коллеги, мы стремимся вывести нашу работу на новый уровень (Next Gear), живя в соответствии с нашими ценностями: мы Осмеливаемся трансформировать будущее, Объединяем и радуем наших клиентов, Смело общаемся друг с другом и сотрудничаем, чтобы победить вместе. Вы найдете наши ценности, пронизывающие наши процессы, присутствующие в наших решениях и отмечаемые во всей нашей культуре.
Мы стремимся привлекать лучшие таланты и создавать прекрасное рабочее место, где люди чувствуют себя вовлеченными, вдохновленными, брошенными вызов, гордыми и уважаемыми. Если вы креативны, дальновидны, увлечены технологиями и ищете достойную карьеру, чтобы оказать влияние, то у вас есть все необходимое, чтобы преуспеть в NETGEAR. Присоединяйтесь к нашей сети и помогите нам формировать будущее связи.
NETGEAR нанимает на основе заслуг. Все квалифицированные кандидаты получат равные возможности при трудоустройстве. Вся ваша информация будет храниться конфиденциально в соответствии с рекомендациями EEO.