Назад | Перейти на главную страницу

Упражнение по программированию для системного администратора Linux?

Я готовлюсь к роли системного администратора (linux) в большой компании (топ-10 компаний), и одним из необходимых условий является знание таких языков, как perl, python или Ruby. У меня телефонное собеседование, которое предполагает совместное использование редактора с интервьюером. Какие упражнения по кодированию я могу ожидать от телефонного интервью или обычного собеседования?

Я использовал оболочку для большинства своих повседневных задач и иногда Perl и python для более крупных задач. Теперь я не жду, что они спросят

Напишите сценарий, который синхронизирует пользователей AD с LDAP.

Я не думаю, что структуры данных, алгоритмы или вопросы сортировки относятся ко мне? Можете ли вы привести примеры вопросов, связанных с кодированием системного администратора?

Я не думаю, что структуры данных, алгоритмы или вопросы сортировки относятся ко мне?

Почему ты так не думаешь? Мэйб, не зная различий между O (n) и O (1) и O (log n), но для написания хорошего кода - а скрипты - это код - определенно необходимо базовое понимание этих трех вещей.

Когда я вмешался моя текущая работа Мне задали хотя бы следующие вопросы (возможно, я забыл некоторые). Мне разрешили использовать язык по своему выбору.

  • FizzBuzz
  • Четыре точки и координата определяют, находится ли координата внутри или вне квадрата / прямоугольника.
  • Дайте список имен и результатов тестов, как бы вы узнали, кто получил высокий балл и средний балл. Тест можно сдать повторно, поэтому на одно имя может быть больше одной записи, учитывайте только их высокий балл. Как бы вы оценили высокий балл для конкретного ученика.

Некоторые особенности системного администратора:

  • Как вы будете искать в файле журнала объемом 100 ГБ записи, соответствующие $ Pattern?
  • Если у вас есть список из 1000 человек, содержащий: имя, фамилию, отдел и номер телефона, как бы вы добавили этих людей на серверы $ Dirctory или $ 10 * nix без центральной системы аутентификации?
  • Как бы вы соотносили событие ошибки с соответствующими журналами в 3 разных файлах журналов?
  • Как бы вы преобразовали файл журнала в базу данных MySQL с помощью Структура, данная вам? Как бы вы изменили структуру базы данных?

Я не люблю, когда собеседование кажется экзаменом. Это должно быть больше связано с тем, чтобы выяснить, подходит ли человек в целом для должности и для организации, а не столько о том, чтобы поставить собеседника на место. Конечно, хороший системный администратор должен быть в состоянии создать полезный сценарий под давлением, но это не то же самое давление.

Поэтому, вместо того, чтобы задавать серию вопросов, я был бы более склонен немного поболтать о предпочтениях языка сценариев, культуре и так далее. (Это должно быть особенно эффективно для Python, Perl или Ruby!) Как правило, этого должно быть достаточно, чтобы почувствовать, что интервьюируемый помолвка с выбранным языком или языками, что более важно, чем способность ответить на тщательно подобранный умный вопрос прямо на бумаге.

Вы всегда можете попросить прислать образцы сценариев по электронной почте после собеседования. (А затем вы можете погуглить кусочки кода, чтобы узнать, не является ли он плагиатом ....)

По моему опыту, вопросы системного администратора на собеседовании часто основываются на обработке файлов. Например, «возьмите этот файл журнала и извлеките уникальные IP-адреса вместе со счетчиком каждого из них» - вот что меня не так давно спросили в интервью.

В FizzBuzz Тест тоже остается одним из любимых вопросов программирования.

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

Разборчивые имена переменных в соответствии с последовательной схемой именования; достаточное комментирование; отделение конфигурации от кода (многие мои коллеги, занимающиеся программированием на Perl, имеют очень плохую привычку хранить конфигурацию своих сценариев в больших строковых скалярах с разделителями-запятыми, опечатка в которой превращает то, что должно было быть предупреждением, в полноценный беспорядочный кубик ); и т. д. очень рекомендую Дамиан Конвей "Лучшие практики Perl" в качестве ссылки в этой области. Надеюсь, поможет; удачи с интервью!