Младший разработчик системного ПО (Linux kernel/ C)

Работодатель:
Опыт работы:
От 1 года до 3 лет
Место работы:
Москва, Ленинградский проспект, 36с41

Мы разрабатываем системное ПО, работающее с блочной подсистемой Linux: семейство модулей ядра и системные утилиты вокруг них. Один из ключевых модулей отслеживает изменённые блоки и делает copy-on-write снапшоты дисков - это фундамент для быстрых инкрементальных бэкапов. Всё это работает в проде на широком диапазоне версий ядра.
Ищем специалиста с реальным низкоуровневым бэкграундом. Мы не ждём готового kernel-разработчика - kernel-специфику даём внутри, но системный, POSIX-уровневый фундамент нужен на входе.

Чем предстоит заниматься:
- Разработкой и сопровождением модулей ядра Linux, работающих с блочной подсистемой - от перехвата блочного ввода-вывода до отслеживания изменённых блоков и copy-on-write снапшотов дисков;
- Поддержкой широкого диапазона версий ядра - от старых до самых свежих: разбором изменений во внутренних API и адаптацией кода под них;
- Поиском и устранением багов в низкоуровневом C-коде, включая работу с состояниями снапшотов, механикой COW-файлов и групповыми (атомарными) операциями над несколькими устройствами;
- Написанием и расширением тестов - интеграционных и юнит-тестов на Python; - Разработкой и сопровождением системных утилит и userspace-обвязки: разделяемых/статических библиотек, CLI-инструментов и IOCTL-интерфейсов между ядром и пользовательским пространством;
- Чтением и рефакторингом чужого объёмного C-кода - и уверенной работой в нём без страха.

Что ждём от тебя:
- Знание C на уровне «могу написать и отладить нетривиальную программу»;
- Опыт системного программирования - писал не только прикладной код, но и работал с системными вызовами: файлы и дескрипторы, процессы, сигналы, потоки, IPC, память;
- Знание POSIX API и модели ОС: чем read/write/ioctl/mmap отличаются по семантике, как устроены блокирующий/неблокирующий ввод-вывод, как ведут себя дескрипторы и права;
- Понимание внутреннего устройства Linux: файловые системы, блочные устройства, страничный кэш;
- Комфортная работа в Linux CLI: make, git, loop-девайсы, mount, LVM;
- Готовность лезть в исходники ядра и документацию, а не ждать готовых ответов.

Будет плюсом:
- Опыт с модулями ядра или драйверами (хотя бы учебными);
- Понимание устройства блочного уровня Linux;
- Пет-проекты на C/C++/Rust, участие в опенсорсе, CTF/low-level.

Что даём:
- Реальные продукты в проде и наставника с ревью кода, а не задачи «в стол»;
- Редкую и дорогую на рынке экспертизу в kernel/storage, таких инженеров единицы;
- Понятную траекторию роста: junior → разработчик, отвечающий за свой участок;
- Возможность удаленной работы (преимущественно гибридный формат работы);
- ДМС (после испытательного срока);
- Работа в БЦ класса «А» в шаговой доступности от м. Петровский парк и м. Динамо.

Похожие вакансии

Senior SDET/Software Development Engineer in Test (НСПК)
ИЦ АЙ-ТЕКО

Опыт работы от 5 лет (Обязательно). Разделяешь ценности и принципы гибкой разработки. Хочешь и умеешь работать в команде.

Специалист по внешним коммуникациям
Деснол

Опыт от 3 лет в PR, журналистике, копирайтинге (в B2B или IT — огромный плюс). Портфолио: не менее 3...

165 000 руб.
Специалист по развитию направления мастер-классов (художественная студия)
Студия Живописи Анастасии Куликовой

С творческим мышлением и любовью к искусству. С опытом проведения мастер-классов и художественным любым образованием. Самостоятельного и инициативного,с...

15 000 руб.
Менеджер по работе с ключевыми клиентами (КАМ) HoReCa
Unifrost

Навыки: умение выстраивать долгосрочные отношения с клиентами, знание специфики работы отелей, ресторанов, кейтеринговых компаний, навыки ведения переговоров и заключения договоров.

Playable Ads Developer (Games)
Crazy Panda

От 2 лет опыта работы с созданием playable ads. Отличное знание Cocos 3, TypeScript. Навыки работы с 3D- и...