Wie würden Sie einen Entwickler testen, der behauptet, über * nix-Shell-Erfahrung zu verfügen? (Um ganz klar zu sein, wir möchten nicht testen, ob sich jemand auf * nix entwickeln kann, nur, dass er sich mit der Befehlszeile auskennt.)
Ich habe darüber nachgedacht, sie dazu zu bringen, das Problem zu lösen, Informationen aus Protokolldateien zu erhalten, die einige grundlegende Dinge wie cat, grep, cut, ... in Kombination mit Piping beinhalten.
Welche weiteren Grundkenntnisse würden Sie verlangen? Dies ist wiederum nicht für Interviews mit Personen gedacht, die für * nix-Systeme entwickelt werden, und auch nicht für * nix-Systemadministratoren, sondern nur für normale Entwickler, die manchmal etwas an einem * nix-System arbeiten müssen.
Antworten:
Aus meiner persönlichen Erfahrung muss der Entwickler, der an einem * nix-System arbeitet, wissen:
... und als Bonus:
Mit solchen Fähigkeiten können die meisten Aufgaben im Zusammenhang mit Entwicklern problemlos ausgeführt werden.
quelle
Aus meiner Erfahrung mit meinen zahlreichen Kollegen seit ich anfing zu arbeiten, möchte niemand Unix-Kenntnisse vortäuschen: Entweder sie " kennen sich in der Kommandozeile aus " oder sie sagen einfach "no way!".
Fragen Sie einfach, ob der Kandidat bereit ist, an einer Unix-Workstation zu arbeiten, und lassen Sie sich sagen, wie weit er durch Bash gehen kann. Er wird irgendwann einige Befehle benennen; die offensichtlichsten diejenigen sind
cd
,cat
,more
oderless
,vi
oderemacs
,grep
,awk
,sed
. Hören Sie genau zu, ob er erwähntman
.Wenn es für die Entwicklung ist, sollte er vertraut sein mit
make
und Makefiles, und einige Quellensteuerbefehlszeilenschnittstelle (svn
,git
,cleartool
,hg
,cvs
...)quelle
man
und benutze es, wenn Google nicht hilft, aber ich würde es nie auf meinerman
ist die effizienteste Methode, um sich mit Unix-Befehlszeilen- und C-Bibliotheken vertraut zu machen, wenn Sie offline sind. Übrigens habe ich Unix gelernt, als das fortschrittlichste Tool zum Durchsuchen des Internetstelnet archie.cs.mcgill.ca
Warum das machen?
Die * nix-Shells (und andere OS-Shells, fwiw) sind sehr tiefe und breite Arbeitsumgebungen. Es ist möglich, dass jemand jahrelang dort arbeitet und nur einen sehr geringen Prozentsatz der Kapazität der Muscheln nutzt.
Wenn Sie nicht erwarten, dass die Person a) ein Shell-Programm ausführt oder b) das System über die Shell verwaltet, warum ist das dann wichtig? Alles, was getan wird, ist so grundlegend, dass ein handliches * nix-Spickzettel den "Mangel an Fähigkeiten" mehr als ausgleicht.
quelle
Aus meinem Kopf heraus würde ich sie wahrscheinlich um zwei Dinge bitten:
Als Sie zuvor die * nix-Befehlszeile verwendet haben, sind Sie auf einen Fall gestoßen, in dem Sie durch einen durchdachten Befehl viel Zeit gespart haben? Wenn ja, bitte erläutern.
Bitte erläutern Sie die Hauptunterschiede zwischen der * nix-Befehlszeile und einem Standard-Windows-Desktop. Was sind die Vor- und Nachteile eines jeden?
Das erste Beispiel gibt Ihnen einen Hinweis darauf, wie tief das Wissen des Bewerbers über die Befehlszeile reicht. Wenn er jahrelang an einem * nix gearbeitet hat, wird er Ihnen nicht nur sagen, dass er stolz darauf war, ein Grep zu haben. Erwarten Sie nicht, dass sie sich die genauen Befehle merken (dafür gibt es immer Manpages), sondern die allgemeine Vorstellung davon, was sie getan haben.
Die zweite Frage prüft stattdessen, ob sie verstehen, wozu die Kommandozeile wirklich gut ist und wofür sie nicht geeignet ist. Es ist leicht zu lernen, einen Hammer zu benutzen, aber viel schwieriger, auf ein anderes Werkzeug zu wechseln, falls der Hammer ungeeignet ist. Diese Frage gibt Ihnen einen guten Hinweis auf die Sichtweise des Bewerbers außerhalb der * nix-Box und ist offen genug, damit er mit seinem Wissen punkten kann (und sollte). (Nichts Schlimmeres, als etwas wie "ähm ... Fenster haben diese Fenster" zu beantworten.)
quelle
Kommt darauf an, was sie tun sollen.
Zum Abrufen von Informationen aus Protokolldateien Ihr Vorschlag für cat + grep absolut sinnvoll. Ich würde dazu ls, cd und less / more hinzufügen.
Wenn Sie erwarten, dass sie auch kleinere Änderungen vornehmen (z. B. in Konfigurationsdateien), ist es sinnvoll, Tests für vi und / oder emacs und für Dinge wie cp / mv / rm / mkdir hinzuzufügen.
quelle
Ich würde empfehlen, dass sie Emacs oder vi / m, tar, sed, e / f / grep, die verschiedenen Compiler und einige Shell-Skripte kennen. Führen Sie möglicherweise einen Test durch, bei dem diese Tools verwendet werden müssen, um Code aus einer Datei abzurufen, ohne ihn zu öffnen, und fügen Sie ihn in ein anderes Programm ein. Kompilieren Sie dann das Programm, das bei einem geringfügigen Fehler abbricht. Sie müssen dann einen Texteditor verwenden, um den Fehler zu finden, den Code zum Laufen zu bringen und die Binärdatei zu archivieren. Verschicken Sie es dann an einen beliebigen Ort, und geben Sie dem Empfänger die Berechtigung, es auszuführen.
quelle
Ich weiß nicht, wie es Ihnen geht, aber ich würde mich darüber ärgern, wenn mein Interviewer mich fragt und ich nicht weiß, wie ich unter Linux arbeiten soll.
Sie sollen nicht wirklich zu wissen , was sie richtig weiß jetzt , aber was sie können lernen , die Chance , wenn gegeben. Das Erlernen von * nix-Tools ist nicht allzu schwierig, erfordert jedoch ein wenig Entschlossenheit - Sie sollten wirklich eher die Fähigkeit als das Wissen testen.
quelle
Es hängt davon ab, welche Erfahrung Sie haben möchten. WENN dies nicht für jemanden ist, der für * nix-Systeme und auch nicht für * nix-Systemadministratoren entwickelt, sondern nur für normale Entwickler, die manchmal etwas an einem * nix-System arbeiten müssen, wie viel Erfahrung benötigen sie dann tatsächlich?
Alles, was ein solcher Entwickler in * nix-Shells (ls, chmod, cat usw.) benötigt, könnte wahrscheinlich auf einem einzigen Seiten-Spickzettel geschrieben werden. Wenn dies der Fall ist, können einige gute Kandidaten eliminiert werden, wenn Sie * nix-Shell-Kenntnisse benötigen, für die dies nicht erforderlich ist.
quelle
Normalerweise wähle ich eine einfache Aufgabe und fordere die Person auf, ein Shell-Skript auf einem Whiteboard zu schreiben.
"Sie haben ein Verzeichnis" foo "und ein Sicherungsverzeichnis" foo_backup ". Schreiben Sie ein Shell-Skript, um zu sehen, was sich in" foo "geändert hat, seit sich" foo_backup "geändert hat.
quelle
"Erklären Sie den Anmeldevorgang unter Linux mit so vielen Details, wie Sie möchten", ist eine gute Frage. Der Anmeldevorgang beinhaltet zufällig das Wechseln von Benutzern, Berechtigungen und Eigentümern sowie viele allgemeine Unix-Philosophien. Wenn sie klar erklären können, wie und warum es ein
/etc/passwd
und gibt/etc/shadow
gibt und wie ein nicht-privater Benutzer sein eigenes Passwort ändern kann, aber nicht andere ", bedeutet dies, dass sie Unix" bekommen ".Ein weiterer Vorteil ist alles mit Protokollanalyse oder schnellen Sicherheitsüberprüfungen. Wenn sie die Gesamtbandbreite, die für einen bestimmten vhost bereitgestellt wird, aus einem Apache-Protokoll addieren können oder wenn sie herausfinden, ob sich andere Benutzer mit einer UID von 0 im System befinden, sind sie in der Befehlszeile praktisch.
Und eine Sache, die Sie NICHT mit ihnen machen sollten: Lassen Sie sie das nicht auf Papier / Whiteboard machen. Gib ihnen ein Live-System (aber kein Internet, weil das fast schummelt) und sieh ihnen beim Gehen zu. Wenn sie sich in Manpages auskennen und spontan Multi-Pipe-Ausdrücke erstellen können, ist das ein gutes Zeichen. Wenn sie für alles Google benötigen, ist ihre Fähigkeiten fraglich.
quelle
Warum sollen sie ein funktionales Programm schreiben? was ist falsch daran zu sagen "sag mir den Unterschied zwischen grep und sed, oder was macht X command? etc. auf diese Weise kannst du sie ein wenig herumführen.
Wenn sie an der spezifischen Aufgabe herumfummeln, die Sie ihnen geben, denken Sie vielleicht nicht, dass sie schlau sind. Aber wenn Sie allgemeine Fragen stellen, geben Sie ihnen die Möglichkeit, Ihnen zu zeigen, was sie wissen. Dies kann wesentlich sein, aber auf andere Weise als das, was Sie sich gefragt haben.
quelle
Unix-Gurus haben grundlegende Kommandozeilenbefehle wie sed, grep usw. in einem Finger und können sie leicht verwenden, um das zu erreichen, was sie wollen, indem sie alle Arten von Anführungszeichen, erweiterte reguläre Ausdrücke usw. verwenden einfacher zu verstehen, wie man auf Chinesisch geschrieben ist;)
Sie können davon ausgehen, dass sie unabhängig von der Shell-Programmierung mindestens eine zusätzliche Skriptsprache wie Perl kennen.
Sie kennen die Konfigurations-Interna des Unix-Systems. Wenn Sie sie also bitten, das Tastaturlayout zu ändern (indem Sie rechts alt + eine Bindung hinzufügen), sind sie nicht verwirrt.
Auch die Verwaltung installierter Pakete wäre kein Problem. Oracle installieren, 4 Anwendungsserver mit jeweils einer anderen JVM ausführen - ebenfalls kein Problem. Virtuelle Netzwerkkonfiguration, erweitertes Routing und Port-Filtering, virtuelle Maschinen usw., Verwaltung der Sicherheit - sind ebenfalls vorhanden.
quelle