Вакансия: разработчик ядра Linux. Что нужно знать, чтобы успешно пройти собеседование::Журнал СА 1-2.2014
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Контакты
   

  Опросы
1001 и 1 книга  
12.02.2021г.
Просмотров: 9655
Комментарии: 8
Коротко о корпусе. Как выбрать системный блок под конкретные задачи

 Читать далее...

11.02.2021г.
Просмотров: 10023
Комментарии: 12
Василий Севостьянов: «Как безболезненно перейти с одного продукта на другой»

 Читать далее...

20.12.2019г.
Просмотров: 17150
Комментарии: 1
Dr.Web: всё под контролем

 Читать далее...

04.12.2019г.
Просмотров: 15997
Комментарии: 13
Особенности сертификаций по этичному хакингу

 Читать далее...

28.05.2019г.
Просмотров: 16904
Комментарии: 6
Анализ вредоносных программ

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Вакансия: разработчик ядра Linux. Что нужно знать, чтобы успешно пройти собеседование

Архив номеров / 2014 / Выпуск №1-2 (134-135) / Вакансия: разработчик ядра Linux. Что нужно знать, чтобы успешно пройти собеседование

Рубрика: Карьера/Образование /  Рынок труда

Вакансия: разработчик ядра Linux
Что нужно знать, чтобы успешно пройти собеседование

В помощь нашим читателям, которые только начинают штурмовать карьерную лестницу ИТ-профессии, мы предлагаем цикл статей, в которых представители компаний-работодателей подробно рассказывают, какие именно требования они предъявляют к кандидатам на трудоустройство. Итак, читайте первый материал цикла

  1. Какими знаниями и навыками должен обладать разработчик ядра Linux?
  2. Каков инструментарий разработчика?
  3. Каковы требования компании к уровню образования потенциальных сотрудников?
  4. Какие требования предъявляются к опыту работы?
  5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?

На вопросы «Системного администратора» отвечают специалисты ведущих компаний.


ДЕНИС ЯКУБОВИЧ, руководитель отдела персонала компании Promwad

1. Необходимые знания и навыки для данной позиции в нашей компании:

  • Твердые знания языка С.
  • Понимание архитектуры ядра, его подсистем, способов взаимодействия (Linux kernel 2.6.*, 3.*.*).
  • Понимание принципов работы с системой контроля версий GIT.
  • Опыт работы с компилятором gcc (+Linux LD, Linker scripts). Владение make/automake/autotools.
  • Базовые знания схемотехники (умение пользоваться осциллографом).
  • Знания аппаратных архитектур (x86, ARM).
  • Владение средствами отладки (jtag, gdb, objdump).
  • Большой плюс – наличие коммитов в mainline (умение формировать, описывать патчи).

2. Основной инструментарий разработчика, необходимый для выполнения работ:

  • Рабочая ОС – Ubuntu (по умолчанию, но возможен и другой дистрибутив).
  • IDE – eclipse, emacs, vim.
  • Сборка – toolchain целевых архитектур, различные билд-системы.
  • Отладка – jtag, gdb, objdump.
  • Документирование – wiki, OpenOffice.
HR-взгляд
Открытые вакансии для разработчиков ядра Linux предусматривают следующий типовой набор требований к профессиональным навыкам и опыту:
  • отличное знание языка С;
  • понимание принципов работы операционных систем, опыт системного программирования;
  • знание TCP/IP и архитектуры Linux, умение ориентироваться в исходных текстах ядра;
  • знание скриптовых языков (perl, bash, python);
  • знание файловых систем и моделей разграничения прав в Linux;
  • владение английским языком на уровне чтения технической документации.
Требования к образованию практически не встречаются в описаниях вакансий, поскольку основным требованием к таким работникам является наличие профильного опыта работы, а именно, опыта программирования на уровне ядра Linux.

В зависимости от компании/вакансии/проекта, требуются или приветствуются определенные навыки и знания.

Чернецова Валерия,
руководитель отдела аналитики
рекрутингового портала Superjob.ru

3. Высшее образование в области компьютерных наук, знание английского языка (intermediate).

4. В зависимости от целевого уровня (junior-expert). Минимально – опыт работы в коммерческих проектах под Linux 
от года (как плюс – наличие своего Open Source-проекта).

5. Для нашей компании нужны соискатели, имеющие опыт работы с различными процессорными архитектурами (ARM, MIPS, PowerPC, SH4, AVR32, Blackfin), платформами (TI Sitara/Davinci/OMAP, Marvell Kirkwood, Atmel, STMicroelectronics, Realtek, Freescale iMX/QorIQ), а также с широким набором интерфейсов: I2C, SPI, CAN, RS-232/UART, RS-485, NAND, USB, EMIF, etc. и типов памяти: NOR/NAND flash, CF/MMC/SD, FRAM/NVRAM, DDR/DDR2/DDR3.


ДМИТРИЙ ФИЛИППОВ, менеджер по маркетингу продуктов JetBrains

1. Разработчик ядра Linux – такой же программист, как и те, кто работает не в ядре, просто обладающий специфическими знаниями и умениями. В мире ядерных программистов, в том числе коммерческих, существуют и новички и разработчики среднего уровня, ну и, конечно, никуда без не очень большой группы разработчиков-экспертов. Минимум знаний и навыков для того, чтобы работать с ядром, – это:

  • Отличное владение языком С.
  • Понимание основ операционных систем.
  • Знание хотя бы элементарных алгоритмов, применяемых в программировании.
  • Терпение, вдумчивость, лаконичность.

2. Инструментарий разработчика ядра настолько же прост и лаконичен, как и код, который он должен писать. Перечислю базовый:

  • Удобный редактор кода. Например, vim или emacs.
  • Нужен сам код ядра и средства для синхронизации и работы с исходным кодом. Подразумевается системы контроля версий VCS. Обычно разработчики ядра Linux используют git. Но в некоторых компаниях может быть своя система контроля версий, с которой тоже нужно уметь работать. Например, subversion или mercurial.
  • Специфичный для ядра набор инструментов начинается с компилятора языка С – GCC. Это стандартный и единственный компилятор, работающий с ядром Linux.
  • Утилиты binutils тоже являются составной частью инструментария разработчика ядра. Без них компилировать ядро невозможно, так как многие утилиты из этого пакета используются в make скриптах.
  • Утилиты make, diff, patch тоже входят в набор инструментария разработчика. Их знание обязательно.
  • Для эффективной работы с кодом нам нужна навигация в нем. Для этого используются ctags и etags. Лично для меня удобными оказались проекты Linux Cross Reference (LXR), когда онлайн можно быстро и хорошо снавигироваться в нужные участки кода, а также быстро подсмотреть эти участки кода в других версиях ядра.
  • Для экспериментов с ядром потребуется sandbox. Для этих целей хорошо потходят виртуальные машины.

3. Абсолютно неважно, неполное среднее у тебя или ты кандидат наук плюс второе высшее. Критерий один – может человек выполнять возложенные на него обязанности или нет. Я встречал много программистов-самоучек очень высокого уровня, получающих очень неплохие зарплаты. Так что теоретически для того, чтобы начинать работать, не нужно никакое специальное образование.

4. От компании к компании, от проекта к проекту требования к опыту работы разные. На российском рынке труда имеется реальный дефицит квалифицированных программистов не только ядра Linux, но и программистов на С в принципе. В такой ситуации любому кандидату хотя бы с минимальным, но с хорошим и честным опытом работы с ядром с радостью предложат работу в любой адекватной компании. Далее степень опытности влияет лишь на грейд. Если у человека хороший опыт, скажем, написания драйверов, например, от четырех лет, то ему, вероятно, предложат уже senior-позицию. А если у вас хорошее владение С, базовый опыт программирования и знание основ ядра, то, вероятно, этого будет достаточно, чтобы начать работать на junior-позиции разработчика ядра Linux.

5. Когда мы говорим о разработке ядра Linux, мы имеем в виду любую работу с кодом ядра. Это может быть написание кода в какой-либо из подсистем ядра или написание или модификация драйвера, или верификация, или анализ, или тестирование кода. Ядро настолько большое и настолько разносторонне применимое, что разные компании специализируются на абсолютно разных задачах и работают с разными частями кода. Из этого вытекают специфические требования. Но есть одно важное требование, предъявляемое почти всеми компаниями ко всем кандидатам, – знание английского языка.


ПАВЕЛ ЕМЕЛЬЯНОВ, архитектор департамента серверной виртуализации в Parallels

1. Знание хотя бы одной аппаратной платформы, опыт системного программирования.

2. Не имеет значения. Главное чтобы он был, и человек им владел свободно.

3. Этот пункт в резюме не имеет особого значения, опыт работы – гораздо важнее всего остального.

4. Сначала мы пытались требовать от соискателей опыт работы именно в ядре, но потом поняли, что в Москве таких людей почти нет (а те, кто есть, ограничивались драйверами). Так что из ядерно-специфичных требований осталось только одно – знание архитектуры x86.

5. Я бы выделил три неядерных пункта, на которые мы обращаем особое внимание:

  • умение придумать и доходчиво объяснить алгоритм решения какой-либо задачи;
  • работа с основными структурами данных (списки, деревья) не должна вызывать трудностей;
  • человек должен знать, что такое «сложность алгоритма» и уметь пользоваться этим знанием.

Большой плюс кандидата – это опыт, связанный с виртуализацией железа, например, использование или патчи к Linux's KVM или хотя бы чтение мануалов. Ну и использование Linux как домашней ОС в своем десктопе.

Подготовил Игорь Штомпель


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru