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.
Odpowiedzi:
Z mojego osobistego doświadczenia programista pracujący na systemie * nix musi wiedzieć:
... i jako bonus:
Taki zestaw umiejętności pozwala z łatwością wykonywać większość zadań związanych z programistami.
źródło
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
,more
lubless
,vi
lubemacs
,grep
,awk
,sed
. Słuchaj uważnie, czy on wspominaman
.Jeśli jest za rozwój, powinien znać
make
i Makefile, a niektóre interfejs wiersza poleceń kontroli źródła (svn
,git
,cleartool
,hg
,cvs
...)źródło
man
i używam go, gdy Google nie pomaga, ale ja nigdy nie wprowadzą go na mojej liście rozkazów ...man
to 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
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”.
źródło
Z czubka mojej głowy prawdopodobnie zapytałbym ich o dwie rzeczy:
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.
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”)
źródło
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.
źródło
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.
źródło
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ę.
źródło
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
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 ”.
źródło
„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/passwd
i”/etc/shadow
oraz 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.
źródło
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.
źródło
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.
źródło