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

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

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

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

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

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

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

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

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

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

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

1001 и 1 книга  
19.03.2018г.
Просмотров: 9956
Комментарии: 0
Потоковая обработка данных

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

19.03.2018г.
Просмотров: 8163
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

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

19.03.2018г.
Просмотров: 8264
Комментарии: 0
Конкурентное программирование на SCALA

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

19.03.2018г.
Просмотров: 5233
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

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

12.03.2018г.
Просмотров: 5919
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

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

Друзья сайта  

 Вакансия: разработчик ядра 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