Вакансия: Разработчик С (Component Development Group, Network Team)
Описание вакансии
О проекте KasperskyOS защищенная микроядерная операционная система. Это не очередной дистрибутив Linux, а собственная разработка, способная успешно конкурировать на международных рынках. Заложенный в KasperskyOS принцип кибериммунности позволяет разрабатывать безопасные решения из потенциально небезопасных компонентов.
О команде В команде разработки системных компонентов группа Networking отвечает за поддержку сетевого стека, всех компонентов для работы с сетью (DHCP, DNS, TLS и др.), а также других connectivity-стеков (Bluetooth, GPS, GSM). Также, поскольку мы находимся в рамках общей команды Components, бывают и задачи, связанные со смежными группами.
Задачи группы Группа разработки компонентов отвечает за:
- Инструменты разработки (GCC/Clang, Binutils, Qemu и т.д.);
- Базовые компоненты KasperskyOS (libc, поддержка POSIX);
- Поддержку файловых систем и систем хранения данных;
- Поддержку сетевых стеков и средств коммуникации между устройствами;
- Средства управления приложениями;
- Графическую и аудио подсистемы;
- Поддержку различных фреймворков и системных служб.
Ваши задачи - Поддержка и развитие сетевого стека KasperskyOS;
- Проектирование и разработка компонентов и системных сервисов для работы с сетью;
- Разработка и портирование других connectivity-стеков (Bluetooth, GPS, GSM и др.);
- Портирование open source программного обеспечения на KasperskyOS.
Что ожидаем от кандидата - Отличное знание языка программирования С;
- Знание базовых принципов построения современных операционных систем;
- Опыт многопоточного программирования;
- Опыт разработки ядра Linux/Windows;
- Опыт разработки драйверов для Linux/Windows;
- Знание классических алгоритмов и структур данных;
- Знание инструментов разработки в Unix системах (Linux, BSD и пр.);
- Опыт работы в команде, знакомство с процессами Code Review, CI/CD.
Желательно - Хорошее знание принципов работы компьютерных сетей и основных сетевых протоколов;
- Понимание организации и работы сетевого стека ОС;
- Опыт работы над сетевым стеком и компонентами для работы с сетью, в Linux или других ОС;
- Знание стандарта протокола TLS и опыт разработки приложений с поддержкой TLS;
- Знание стандартов connectivity-протоколов (Bluetooth, GPS, GSM и др.) и опыт работы с ними;
- Опыт кросплатформенной разработки;
- Хорошее знание POSIX;
- Знакомство с архитектурой операционных систем, внутренним устройством ядра ОС (управление памятью, межпроцессное взаимодействие, планирование задач, VFS);
- Знание внутреннего устройства libc;
- Знание языка assembler по крайней мере для одной из архитектур (x86, ARM) на уровне, достаточном, для исследования объектного файла.