Опитування когось для загальних навичок Unix [закрито]


20

Як би ви протестували розробника, який стверджує, що має досвід * nix shell (просто для того, щоб бути зрозумілим, ми не хочемо перевіряти, чи може хтось розвиватися на * nix, тільки щоб він знав їх шлях у командному рядку).

Я думав над тим, щоб змусити їх вирішити проблему виведення інформації з журнальних файлів, яка передбачає деякі основи, такі як кішка, греп, вирізання, ... в поєднанні з трубопроводом.

Які ще базові знання ви б попросили? Знову ж таки, це не для опитування тих, хто розроблятиме для * nix систем, а також не для адміністраторів * nix, а просто для звичайних розробників, яким іноді потрібно виконати певну роботу в системі * nix.


Цей вид підготовки до снарядів - це торт для будь-якої людини, яка вже знає мову програмування. З тих пір, коли людям байдуже, чи опитувані роблять істину здається трохи приємнішою у своїх резюме? Це відбувається постійно. Звучить мені дрібно.
Ям Маркович

@YamMarcovic - Коли ви говорите "зробіть етюд здається трохи приємнішим", ви говорите "заявляючи, що рівня кваліфікації у них немає"? Якщо ви є, я б сказав, що це досить актуально, щоб дізнатися під час співбесіди. Якщо вони брешуть, щоб проникнути через двері, як можна довіряти їм один раз всередині?
Ватін

@Vatine Тому що, принаймні, з мого досвіду, кожен перебільшує свої вміння в резюме. Якщо ви дискваліфікували цих людей, ви звужуєтесь до наймання догматично чесних чи наївних людей. Це набагато менше варіантів.
Ям Маркович

Відповіді:


13

З мого особистого досвіду розробник, який працює над системою * nix, повинен знати:

  • змінні оболонки (як встановити / отримати + знання про спеціальні, такі як PATH)
  • перенаправлення оболонки (захоплення результатів програми)
  • Труби (витяг деякої інформації з файлу журналу - чудовий приклад)
  • управління процесом (ps, приємно / відновлювати, вбивати)
  • права доступу до файлів (ls / chmod / chown / chattr)
  • користувачів (але в основному в контексті файлів / процесів, тобто: чи може цей процес отримати доступ до цього файлу? чому він може / не може?)

... і як бонус:

  • запуск / зупинка системних послуг

Такий набір навичок дозволяє виконувати більшість завдань, пов'язаних з розробниками, з легкістю.


Гарна відповідь. Які команди використовуються для запуску / зупинки системних служб?
Тім

11

З мого досвіду моїх численних колег, оскільки я почав працювати, ніхто не хоче підробляти знання Unix: або вони « знають свій шлях навколо командного рядка », або просто кажуть «ніяк!».

Просто запитайте, чи бажає кандидат працювати на робочій станції Unix, і дозвольте йому сказати, як далеко він може пройти баш. Врешті-решт він назве деякі команди; найбільш очевидні з них cd, cat, moreабо less, viабо emacs, grep, awk, sed. Слухай уважно, чи згадує він man.

Якщо для розвитку, він повинен бути знайомий з makeі Makefiles, а деякі з командного рядка управління версіями інтерфейсу ( svn, git, cleartool, hg, cvs...)


4
Я знаю про це, manі я використовую його, коли Google не допомагає, але я ніколи не заношу його у свій список команд ...
Mehrdad

3
manце найефективніший спосіб дізнатися про командний рядок Unix та бібліотеки С у режимі офлайн. До речі, я дізнався Unix, коли найдосконалішим інструментом пошуку в Інтернеті бувtelnet archie.cs.mcgill.ca
mouviciel


@mouviciel: Це також найефективніше навчитися командному рядку unix, коли ви знаходитесь в Інтернеті , оскільки більшість форумів «корисно» скажуть вам rtfm, якщо ви запитаєте їх про деталі команд. Це повинно бути гаразд, якщо сторінки сторінок не були надзвичайно перекрученими та важко орієнтуватися в документації. На щастя, є stackoverflow!
Джорен

Я не знаю про це. Я надмірно використовую чоловічі сторінки, і я ніколи не мав жодних проблем із цим, коли я звик до нього. Це шматок пирога, щоб знайти те, що ви шукаєте. У вас є розділи, у вас є "Див. Також", і ви можете шукати всю справу одним натисканням кнопки. Ви отримуєте довідкову сторінку для кожної команди та кожного системного виклику та досить багато дзвінків у бібліотеку. Я б сказав, що чоловічі сторінки - це те, що мене дуже люблять UNIX, настільки химерно.
Ям Маркович

10

Навіщо це робити?

Оболонки * nix (та інші оболонки ОС, fwiw) - дуже глибокі та широкі робочі середовища. Можливо, хтось витратить роки, працюючи там, і використовує лише дуже невеликий% від місткості снарядів.

Якщо ви не очікуєте, що особа буде: a) програмою оболонки або b) адмініструвати систему з оболонки, то чому це важливо? Все, що буде зроблено, буде на такому базовому рівні, що зручний * nix чіт-лист більше ніж компенсує «відсутність навичок».


Це перевірка на чесність. Якщо хтось додає досвід Unix до свого резюме (якого ми насправді не вимагаємо), я хочу мати змогу перевірити, що таке заявлені навички. Якщо ви просто можете використовувати CD і ls, ви не повинні претендувати на досвід Unix imo.
Крістоф Ванфлетерен

Ну, я б тоді запитав їх, якими системами Unix вони користувалися, і щоб вони перерахували відмінності між системами Unix та, ймовірно, Linux / Mac
johannes

1
@Christophe - Ну, ось угода ... це не має значення, тому що вони, ймовірно, не працюватимуть для вас. Це головний червоний прапор для опитуваного, коли потенційний роботодавець починає робити такі нерозумні трюки, оскільки вони не довіряють тому, що є в резюме. Ваш "тест" та ваше виправдання для нього, в основному, говорять про те, що ви намагаєтеся найняти когось, щоб він працював у лайна в компанії, що займається лайнами. Можливо, я помиляюся, але здогадуюсь, що це не так. Однак, якщо я помиляюся, пропоную вам переоцінити свої «очікування».
Joe Internet

1
@Yam - Це говорить про це так ... якщо ти наймаєш, а хтось надсилає тобі резюме, на яке ти вважаєш надуманим, просто не інтерв'юєш цю людину. Що ви не робите, це створити якийсь дурний тест, який: а) ви визнаєте, не має жодного стосунку до вимог позиції; і б) визнаєте, що призначений лише для перевірки "чесності" чийогось заявленого досвіду. Якщо хтось навіть не може отримати співбесіду в компанії ОП, не запитуючи їх "чесність", бо вони сказали, що вони використовували оболонку * nix, що це говорить про компанію? Мені це говорить про роботу з лайна в компанії з лайна. YMMV.
Joe Internet

1
@Christophe - Якщо ви наймаєте здібних програмістів * nix, IMO, справедливо вважати, що вони «знають, що вони обійшли командний рядок». Якщо ви наймаєте здібних розробників ОС, IMO, справедливо вважати, що їхні навички командних рядків * nix мінімальні. Група A не потребує тестування, група B отримує автоматичний збій, тож навіщо також турбуватись з їх тестуванням? Якщо ваші критерії найму розробника програмного забезпечення базуються на тому, наскільки добре вони використовують командний рядок, я думаю, що ваш процес найму є недоліком. Було б інакше, якби сценарій оболонки був основним обов'язком посади.
Joe Internet

3

Зверху в голові я б, певно, запитав у них дві речі:

  1. Коли ви раніше використовували командний рядок * nix, чи стикалися ви з випадком, коли продумана команда економила вам багато часу? Якщо так, то докладно.

  2. Поясніть, будь ласка, основні відмінності між командним рядком * nix та звичайним робочим столом Windows. Які переваги та недоліки кожного?

Зрозуміло, що перший дасть вам вказівку на те, наскільки глибокими є знання заявника про командний рядок. Якщо він працював роками на * nix, він не просто скаже тобі, що пишався тим, що запустив греп. Не сподівайтесь, що вони запам’ятають точні команди звичайно (для цього завжди є керівництво), але загальне уявлення про те, що вони зробили.

Друге питання натомість перевіряє, чи розуміють вони, в чому дійсно хороший командний рядок і для чого це не підходящий інструмент. Навчитися використовувати молоток, але набагато важче перейти на інший інструмент у випадку, якщо молоток непридатний. Таким чином, це питання дає вам хорошу вказівку на думку заявника поза полем * nix, плюс він є досить відкритим, щоб він міг (і повинен) забивати свої знання. (Нічого гіршого, ніж відповісти на щось на кшталт "ух, вікна мають ці вікна")


2

Залежить від того, що ви хочете, щоб вони робили.

Для отримання інформації з файлів журналів ваша пропозиція щодо cat + grep має ідеальний сенс. Додаю до цього ls, cd і менше / більше.

Якщо ви очікуєте, що вони також виконають деякі незначні зміни (скажімо, у конфігураційних файлах), тоді було б доцільно додати тестування на vi та / або emacs та на такі речі, як cp / mv / rm / mkdir.


1
тестуючи команди vi, шеше, я б більше хвилювався, якби вони все їх знали
NimChimpsky,

1
добре, якщо хлопець потягнеться за Google і почне вводити в полі пошуку такі речі, як " команди редактора vi ", то я б розглядав тестування, що пройшло 90% :)
gnat

1

Я рекомендую, щоб вони знали emacs або vi / m, tar, sed, e / f / grep, різні компілятори, деякі сценарії оболонок. Можливо, проведіть тест, коли їм доведеться використовувати ці інструменти, щоб схопити якийсь код з одного файлу, не відкриваючи його, вставити його в іншу програму; потім складіть програму, яка зламає якусь дрібничну помилку. Потім їм потрібно скористатися текстовим редактором, щоб увійти та знайти помилку, отримати код роботи та архівувати двійковий файл. Потім надішліть його кудись, одночасно надаючи дозволу одержувачу для його запуску.


1

Я не знаю про вас, але я був би роздратований, якби мій інтерв'ю запитав мене, і я не знав, як працювати в Linux.

Вам не варто дбати про те, що вони зараз знають , але що вони можуть навчитися, якщо дадуть можливість. Навчитися інструментам * nix не надто складно, але потрібно трохи визначитися - вам слід справді перевірити вміння, а не знання.


2
але ви опитуєте кандидатів, щоб виконувати роботу, а не вчитися.
NoChance

1
-1 @Emmad. Отже, ви ніколи нічого не вчили на жодній роботі, яку ви мали ...?

3
-1 @EmmadKareem вся робота в чомусь навчається.
Ніколас Сміт

Так, навчання очікується в тій чи іншій мірі, якщо тільки роль не є тривіальною, я очікую, що кандидат буде продуктивним приблизно через 2 тижні найму, в середньому в Канаді це коштуватиме мені $ 3000! Якщо майстерність не рідкість, я цього очікую.
NoChance

Здається, що Еммад - це людина, над якою я не хотів би працювати, разом з ОП.
kirk.burleson

1

Це залежить від того, який рівень досвіду ви бажаєте мати. ЯКЩО це не для когось, хто розроблятиме для * nix систем, а також не для адміністраторів * nix, а просто для звичайних розробників, яким іноді потрібно виконати деяку роботу над * nix системою, скільки досвіду їм насправді потрібно?

Все, що може знадобитися такому розробнику в оболонках * nix (ls, chmod, cat тощо), можливо, може бути записане на одній сторінці шпаргалки. Якщо це так, вимагати знань * nix shell, коли це не потрібно, може усунути хороших кандидатів.


0

Зазвичай я вибираю просте завдання і прошу людину написати сценарій оболонки на дошці.

"У вас є каталог" foo "та резервна книга" foo_backup ". Напишіть скрипт оболонки, щоб побачити, що змінилося у" foo "з моменту" foo_backup ".


0

"Поясніть процес входу в Linux з якомога більше деталей, наскільки ви відчуваєте себе комфортно", це хороше питання. Процес входу передбачає перемикання користувачів, дозволи та права власності та багато загальної філософії Unix. Якщо вони можуть чітко пояснити, як і навіщо є /etc/passwdта /etc/shadowі як непривітний користувач може змінити свій власний пароль, але не інший ", це означає, що вони" отримують "Unix.

Ще одним хорошим є все, що стосується розбору журналу або швидкого аудиту безпеки. Якщо вони можуть додати загальну пропускну здатність, що обслуговується для конкретного vhost з журналу Apache, або виявити, чи є в системі інші користувачі з uid 0, вони зручні в командному рядку.

І одне, що НЕ робити їм: не змушуйте їх робити це на папері / дошці. Дайте їм живу систему (але немає Інтернету, бо це майже обман), і спостерігайте за тим, як вони йдуть. Якщо вони знають, як вони знаходяться на сторінках довідників, і можуть створювати багатолітні вирази на льоту, це хороший знак. Якщо їм потрібен google для всього, то їх набір вмінь сумнівний.


0

чому змушують їх писати функціональну програму? що поганого в тому, щоб сказати "скажи мені різницю між grep і sed, або що робить команда X? тощо. Таким чином, ти можеш їх трохи повести.

якщо вони натрапляють на конкретне завдання, яке ви їм даєте, ви можете не вважати, що вони розумні. але якщо ви ставите загальні питання, ви даєте їм можливість показати вам те, що вони знають, що може бути суттєвим, але по-іншому, ніж те, що вам було цікаво.


-1

Гуру Unix мають в одному пальці основні команди командних рядків, такі як sed, grep і т.д. легше зрозуміти бджіл, написаний китайською мовою;)

Ви можете очікувати, що незалежно від програмування оболонок вони будуть знати принаймні одну додаткову мову сценаріїв, наприклад Perl.

Вони знають інтерфейси конфігурації системи Unix, тому, якщо ви попросите їх змінити розкладку клавіатури (fg додати деяку прив'язку до права alt +), вони не будуть плутати.

Управління встановленими пакетами також не буде проблемою. Установка Oracle, запуск 4 серверів прикладних програм, кожен з іншими JVM - теж не проблема. Конфігурація віртуальної мережі, розширена маршрутизація та фільтрація портів, віртуальні машини тощо, управління безпекою - також іде там.


2
Питання полягає в тестуванні того, чи має розробник загальні навички Unix, а не ідентифікувати гуру сисадмінів, які мають особливу увагу на Oracle та Java.
Пітер Тейлор

JVN? Що стосується Єврейської волонтерської мережі?
окудо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.