Wywiad z kimś na temat ogólnych umiejętności uniksowych [zamknięte]

20

Jak przetestowałbyś programistę, który twierdzi, że ma doświadczenie z powłoką * nix (dla jasności, nie chcemy testować, czy ktoś może rozwijać się na * nix, tylko że wie, jak obchodzi się z wierszem poleceń).

Myślałem o tym, aby rozwiązali problem z uzyskiwaniem informacji z plików dziennika, co wymagałoby pewnych podstaw, takich jak cat, grep, cut, ... w połączeniu z pipowaniem.

O jaką inną podstawową wiedzę prosiłbyś? Ponownie, nie jest to przeprowadzanie wywiadów z kimś, kto opracuje oprogramowanie dla systemów * nix, a także nie dla administratorów systemu * nix, ale tylko dla zwykłych programistów, którzy czasami muszą popracować nad systemem * nix.

Christophe Vanfleteren
źródło
Ten rodzaj szkolenia powłoki jest tortem dla każdej osoby, która zna już język programowania. Od kiedy ludzie dbają o to, czy rozmówcy sprawią, że prawda stanie się bardziej przyjemna w ich życiorysie? To się zdarza cały czas. Brzmi dla mnie małostkowo.
Yam Marcovic
@YMMarcovic - Kiedy mówisz „spraw, aby etruth wydawał się nieco bardziej przyjemny”, czy mówisz „twierdząc, że nie posiada umiejętności, których nie ma”? Jeśli tak, powiedziałbym, że to bardzo istotne, aby dowiedzieć się podczas wywiadu. Jeśli kłamią, aby przedostać się przez drzwi, jak można im zaufać, kiedy znajdą się w środku?
Vatine
@Vatine Ponieważ przynajmniej z mojego doświadczenia, każdy przesadza swoje umiejętności w życiorysach. Jeśli zdyskwalifikujesz tych ludzi, ograniczysz się do zatrudniania dogmatycznie uczciwych lub naiwnych ludzi. To o wiele mniej opcji.
Yam Marcovic,

Odpowiedzi:

13

Z mojego osobistego doświadczenia programista pracujący na systemie * nix musi wiedzieć:

  • zmienne powłoki (jak ustawić / uzyskać + wiedzę o specjalnych, takich jak ŚCIEŻKA)
  • przekierowanie powłoki (przechwytywanie danych wyjściowych programu)
  • potoki (wyodrębnianie niektórych informacji z pliku dziennika jest doskonałym przykładem)
  • kontrola procesu (ps, nice / renice, kill)
  • prawa dostępu do plików (ls / chmod / chown / chattr)
  • użytkownicy (ale głównie w kontekście plików / procesów, tj .: czy ten proces ma dostęp do tego pliku? dlaczego może / nie może?)

... i jako bonus:

  • uruchamianie / zatrzymywanie usług systemowych

Taki zestaw umiejętności pozwala z łatwością wykonywać większość zadań związanych z programistami.

Jacek Prucia
źródło
Niezła odpowiedź. Jakie polecenia są używane do uruchamiania / zatrzymywania usług systemowych?
Tim
11

Z mojego doświadczenia z wieloma kolegami, odkąd zacząłem pracować, nikt nie chce fałszować wiedzy o Uniksie: albo „ znają się na linii poleceń ”, albo po prostu mówią „nie ma mowy!”.

Zapytaj, czy kandydat jest skłonny pracować na stacji roboczej z systemem Unix i pozwól mu powiedzieć, jak daleko może się posunąć. W końcu wymieni niektóre polecenia; Najbardziej oczywistym z nich są cd, cat, morelub less, vilub emacs, grep, awk, sed. Słuchaj uważnie, czy on wspomina man.

Jeśli jest za rozwój, powinien znać makei Makefile, a niektóre interfejs wiersza poleceń kontroli źródła ( svn, git, cleartool, hg, cvs...)

mouviciel
źródło
4
Znam mani używam go, gdy Google nie pomaga, ale ja nigdy nie wprowadzą go na mojej liście rozkazów ...
Mehrdad
3
manto najskuteczniejszy sposób na poznanie wiersza poleceń systemu Unix i bibliotek C w trybie offline. Nawiasem mówiąc, nauczyłem się Uniksa, gdy najbardziej zaawansowanym narzędziem do wyszukiwania w Internecie byłtelnet archie.cs.mcgill.ca
mouviciel
@mouviciel: Jest to również najbardziej skuteczny sposób na poruszanie się po linii poleceń unixa, gdy jesteś online , ponieważ większość forów „pomoże” powiedzieć rtfm, jeśli zapytasz ich o szczegóły dotyczące poleceń. Powinno to być w porządku, jeśli strony podręcznika nie były niezwykle skomplikowane i trudne w nawigacji w dokumentacji. Na szczęście istnieje przepełnienie stosu!
Joren
Nie wiem o tym Używam stron podręcznika nadmiernie i nigdy nie miałem z tym żadnych problemów, kiedy się do tego przyzwyczaiłem. To bułka z masłem, aby znaleźć to, czego szukasz. Masz sekcje, masz „Zobacz także” i możesz przeszukać całość jednym kliknięciem przycisku. Otrzymujesz stronę podręcznika dla każdego polecenia i każdego wywołania systemowego oraz sporo wywołań biblioteki. Powiedziałbym, że strony podręcznika są tym, co sprawia, że ​​kocham UNIXa tak bardzo do cholery.
Yam Marcovic,
10

Czemu to robić?

Powłoki * nix (i inne powłoki systemu operacyjnego, fwiw) są bardzo głębokimi i szerokimi środowiskami roboczymi. Ktoś może spędzić tam lata, pracując i wykorzystując tylko bardzo mały procent pojemności pocisków.

Jeśli nie oczekujesz od osoby, że a) programu powłoki lub b) administruje systemem z powłoki, to dlaczego ma to znaczenie? Wszystko, co zostanie zrobione, będzie na tak podstawowym poziomie, że przydatna * karta nix * zrekompensuje „brak umiejętności”.

Joe Internet
źródło
To sprawdzenie uczciwości. Jeśli ktoś wykorzystuje doświadczenie Unixa w swoim życiorysie (czego tak naprawdę nie wymagamy), chcę móc sprawdzić, jakie są te umiejętności. Jeśli możesz po prostu używać cd i ls, nie powinieneś twierdzić, że masz doświadczenie w Uniksie.
Christophe Vanfleteren
Cóż, zapytałbym ich, jakich systemów uniksowych używali, i wykazał różnice między systemami uniksowymi i prawdopodobnie Linux / Mac
johannes,
1
@Christophe - Cóż, oto oferta ... to nie ma znaczenia, ponieważ prawdopodobnie nie będą dla ciebie działać. Jest to poważna czerwona flaga dla rozmówcy, gdy potencjalny pracodawca zaczyna robić takie głupie akrobacje, ponieważ nie ufają temu, co jest w CV. Twój „test” i jego uzasadnienie w gruncie rzeczy mówią, że próbujesz zatrudnić kogoś do pracy w gównianej firmie. Mogę się mylić, ale zgaduję, że nie jestem. Jeśli jednak się mylę, sugeruję, abyś ponownie ocenił swoje „oczekiwania”.
Joe Internet
1
@Yam - Mówi to w ten sposób ... jeśli zatrudniasz i ktoś wysyła Ci CV, które Twoim zdaniem jest wymyślone, po prostu nie rozmawiasz z tą osobą. To, czego nie robisz, to stworzenie jakiegoś głupiego testu, który: a) przyznajesz, że nie ma wpływu na wymagania stanowiska, i b) przyznajesz, że ma on jedynie na celu sprawdzenie „uczciwości” czyichś doświadczeń. Jeśli ktoś nie może nawet uzyskać wywiadu w firmie OP bez pytania o jego „uczciwość”, ponieważ powiedział, że użył powłoki * nix, co to mówi o firmie? Dla mnie to mówi gówna praca w firmie gówna. YMMV.
Joe Internet
1
@Christophe - Jeśli zatrudniasz zdolnych programistów * nix, IMO może słusznie założyć, że „znają się na linii poleceń”. Jeśli zatrudniasz zdolnych programistów innych systemów operacyjnych, IMO może słusznie założyć, że ich umiejętności wiersza poleceń * nix są minimalne. Grupa A nie musi być testowana, grupa B ma automatyczną awarię, więc po co też męczyć się z testowaniem? Jeśli twoje kryteria zatrudniania programisty są oparte na tym, jak dobrze korzystają z wiersza poleceń, myślę, że twój proces zatrudniania jest wadliwy. Byłoby inaczej, gdyby skrypty powłoki były głównym obowiązkiem tej pozycji.
Joe Internet
3

Z czubka mojej głowy prawdopodobnie zapytałbym ich o dwie rzeczy:

  1. Czy kiedy wcześniej używałeś linii poleceń * nix, napotkałeś przypadek, w którym dobrze przemyślane polecenie pozwoliło ci zaoszczędzić dużo czasu? Jeśli tak, opracuj.

  2. Wyjaśnij główne różnice między wierszem poleceń * nix a standardowym pulpitem systemu Windows. Jakie są zalety i wady każdego z nich?

Oczywiście pierwszy z nich wskaże, jak daleko posuwa się wiedza wnioskodawcy na temat wiersza poleceń. Jeśli przez lata pracował nad * nixem, nie powie ci tylko, że był dumny z tego, że rzucił grep. Nie oczekuj oczywiście, że zapamiętają dokładne polecenia (zawsze są do tego strony), ale ogólna koncepcja tego, co zrobili.

Drugie pytanie natomiast sprawdza, czy rozumieją, w czym wiersz poleceń jest naprawdę dobry i do czego nie jest odpowiednim narzędziem. Łatwo jest nauczyć się korzystać z młotka, ale znacznie trudniej jest przełączyć się na inne narzędzie w przypadku, gdy młot jest nieodpowiedni. To pytanie daje więc dobre wyobrażenie o widoku wnioskodawcy poza polem * nix, a ponadto jest wystarczająco otwarte, aby mógł (i powinien) zdobyć punkty za swoją wiedzę. (Nic gorszego niż odpowiedź na coś w stylu „uh .. Windows ma te okna”)

Szczery
źródło
2

Zależy od tego, co chcesz zrobić.

Aby uzyskać informacje z plików dziennika, Twoja sugestia cat + grep ma sens. Dodałbym do tego ls, cd i mniej / więcej.

Jeśli spodziewasz się, że wykonają także drobne zmiany (powiedzmy w plikach konfiguracyjnych), warto dodać testowanie dla vi i / lub emacsa oraz dla rzeczy takich jak cp / mv / rm / mkdir.

komar
źródło
1
testowanie komend vi, sheesh, byłbym bardziej zmartwiony, gdyby znali je wszystkie
NimChimpsky 28.09.11
1
cóż, jeśli facet sięgnie po Google i zacznie wpisywać w polu wyszukiwania takie rzeczy, jak „ komendy edytora vi ”, to uważam, że test przeszedł 90% :)
gnat
1

Polecam, aby znali emacsa lub vi / m, tar, sed, e / f / grep, różne kompilatory, trochę skryptów powłoki. Być może uruchom test, w którym muszą użyć tych narzędzi, aby pobrać kod z jednego pliku bez otwierania go, wstawić do innego programu; a następnie skompiluj program, który zepsuje się po trywialnym błędzie. Następnie muszą użyć edytora tekstu, aby znaleźć błąd, uruchomić kod i zarchiwizować plik binarny. Następnie wyślij go gdzieś, podając odbiorcy uprawnienia do jego uruchomienia.

Inżynier świata
źródło
1

Nie wiem o tobie, ale zirytowałbym się, gdyby zapytał mnie mój ankieter i nie wiedziałem, jak pracować na Linuksie.

Tak naprawdę nie powinieneś przejmować się tym, co wiedzą teraz , ale tym, czego mogą się nauczyć, jeśli da się im szansę. Nauka * narzędzi nix nie jest zbyt trudna, ale wymaga trochę determinacji - naprawdę powinieneś przetestować umiejętności, a nie wiedzę.

Mehrdad
źródło
2
ale przeprowadzasz rozmowy z kandydatami, aby wykonywać pracę, której się nie uczysz
NoChance,
1
-1 @Emmad. Więc nigdy nie nauczyłeś się niczego w żadnej pracy, którą miałeś ...?
3
-1 @EmmadKareem cała praca uczy się w jakiś sposób.
Nicholas Smith
Tak, nauka jest do pewnego stopnia spodziewana, jednak chyba, że ​​rola jest trywialna, spodziewam się, że kandydat będzie produktywny w ciągu około 2 tygodni od zatrudnienia, średnio w Kanadzie kosztuje mnie to 3000 $! O ile umiejętność nie jest rzadka, tego się spodziewam.
NoChance
Wygląda na to, że Emmad jest osobą, dla której nie chciałbym pracować razem z OP.
kirk.burleson
1

To zależy od tego, jaki poziom doświadczenia chcesz, aby mieli. JEŚLI nie jest to dla kogoś, kto opracuje dla systemów * nix, a także nie dla administratorów systemu * nix, ale tylko dla zwykłych programistów, którzy czasami muszą popracować nad systemem * nix, ile tak naprawdę potrzebują doświadczenia?

Wszystko, czego taki programista może potrzebować w powłokach * nix (ls, chmod, cat itp.), Może być prawdopodobnie zapisane na pojedynczej stronie ściągawki. Jeśli tak, wymaganie znajomości powłoki * nix tam, gdzie nie jest wymagane, może wyeliminować niektórych dobrych kandydatów.


źródło
0

Zazwyczaj wybieram proste zadanie i proszę osobę, aby napisała skrypt powłoki na tablicy.

„Masz katalog„ foo ”i katalog kopii zapasowej„ foo_backup ”. Napisz skrypt powłoki, aby zobaczyć, co zmieniło się w„ foo ”od czasu zmiany„ foo_backup ”.

Scott C. Wilson
źródło
0

„Wyjaśnij proces logowania w systemie Linux, podając tyle szczegółów, na ile czujesz się komfortowo” - to dobre pytanie. Proces logowania obejmuje zmianę użytkowników, uprawnień i własności oraz wiele ogólnych zasad uniksowych. Jeśli potrafią jasno wyjaśnić, w jaki sposób i dlaczego istnieje znak „ /etc/passwdi” /etc/shadoworaz w jaki sposób użytkownik nieprywatny może zmienić własne hasło, ale nie inne ”, oznacza to, że„ dostaje ”Unixa.

Kolejnym dobrym jest wszystko z analizowaniem dzienników lub szybkimi audytami bezpieczeństwa. Jeśli mogą zsumować całkowitą przepustowość obsługiwaną dla konkretnego vhosta z dziennika Apache lub sprawdzić, czy w systemie są inni użytkownicy o numerze UID 0, są przydatni w wierszu poleceń.

I jedna rzecz, której NIE należy im robić: nie zmuszaj ich do robienia tego na papierze / tablicy. Daj im system na żywo (ale bez internetu, bo to prawie oszustwo) i obserwuj, jak odchodzą. Jeśli znają się na stronach podręcznika i potrafią tworzyć wyrażenia wielopunktowe w locie, to dobry znak. Jeśli potrzebują google do wszystkiego, ich umiejętności są wątpliwe.

Marcin
źródło
0

po co zmuszać ich do pisania funkcjonalnego programu? co jest złego w powiedzeniu „powiedz mi, jaka jest różnica między grep a sed, lub co robi polecenie X? itd. W ten sposób możesz trochę ich poprowadzić.

jeśli borykają się z określonym zadaniem, możesz nie myśleć, że są mądrzy. ale jeśli zadajesz ogólne pytania, dajesz im szansę pokazania tego, co wiedzą, co może być znaczące, ale w inny sposób niż to, nad czym się zastanawiasz.

Timmah
źródło
-1

Uniksowi guru mają podstawowe polecenia wiersza poleceń, takie jak sed, grep itp. W jednym palcu i mogą łatwo używać ich do osiągania tego, czego chcą, używając wszelkiego rodzaju cudzysłowów, zaawansowanych wyrażeń regularnych itp., Więc czasami widzisz skrypt i myślisz, że to będzie łatwiej zrozumieć pszczołę napisaną po chińsku;)

Można oczekiwać, że niezależnie od programowania powłoki znają przynajmniej jeden dodatkowy język skryptowy, taki jak Perl.

Znałyby wewnętrzne elementy konfiguracji systemu Unix, więc jeśli poprosisz ich o zmianę układu klawiatury (fg dodaj trochę powiązania z prawym alt +), nie pomyliłby się.

Zarządzanie zainstalowanymi pakietami również nie byłoby problemem. Instalowanie Oracle, uruchamianie 4 serwerów aplikacji, każdy z innym JVM - również nie stanowi problemu. Konfiguracja sieci wirtualnej, zaawansowane routing i filtrowanie portów, maszyny wirtualne itp., Zarządzanie bezpieczeństwem - również tam.

Żeglarz naddunajski
źródło
2
Pytanie dotyczy sprawdzenia, czy programista ma ogólne umiejętności uniksowe, a nie identyfikuje administratorów guru, którzy szczególnie koncentrują się na Oracle i Javie.
Peter Taylor
JVN? Co ma z tym wspólnego Jewish Volunteer Network?
ocodo