Intervista a qualcuno per le competenze generali di unix [chiuso]


20

Come testeresti uno sviluppatore che afferma di avere esperienza della shell * nix (solo per essere chiari, non vogliamo testare se qualcuno può svilupparsi su * nix, solo che conoscono la linea di comando).

Stavo pensando di far sì che risolvessero il problema di ottenere informazioni dai file di registro, il che avrebbe comportato alcune nozioni di base come cat, grep, cut, ... combinate con le tubazioni.

Quali altre conoscenze di base vorresti chiedere? Ancora una volta, questo non è per intervistare qualcuno che svilupperà per i sistemi * nix, e non anche per gli amministratori di sistema * nix, ma solo per gli sviluppatori regolari che a volte hanno bisogno di fare un po 'di lavoro su un sistema * nix.


Questo tipo di addestramento sulla shell è un gioco da ragazzi per chiunque conosca già un linguaggio di programmazione. Da quando le persone si preoccupano se gli intervistati fanno sembrare la verità un po 'più piacevole nei loro curriculum? Succede tutto il tempo. Mi sembra meschino.
Yam Marcovic,

@YamMarcovic - Quando dici "fai sembrare l'eternità un po 'più piacevole", stai dicendo "rivendicare livelli di abilità che non hanno"? Se lo sei, direi che è abbastanza rilevante scoprirlo durante l'intervista. Se mentono per entrare dalla porta, come si può fidarsi di loro una volta dentro?
Vatine,

@Vatine Perché almeno dalla mia esperienza, tutti esagerano i loro livelli di abilità nei curriculum. Se hai squalificato quelle persone, sei costretto ad assumere persone dogmaticamente oneste o ingenue. Sono molte meno opzioni.
Yam Marcovic,

Risposte:


13

Dalla mia esperienza personale, lo sviluppatore che lavora su un sistema * nix deve sapere:

  • variabili shell (come impostare / ottenere + conoscenza di quelli speciali come PATH)
  • reindirizzamento della shell (acquisizione dell'output di un programma)
  • pipe (l'estrazione di alcune informazioni dal file di registro è un esempio eccellente)
  • controllo di processo (ps, nice / renice, kill)
  • diritti di accesso ai file (ls / chmod / chown / chattr)
  • utenti (ma principalmente nel contesto di file / processi, ovvero: questo processo è in grado di accedere a questo file? perché può / non può?)

... e come bonus:

  • avvio / arresto dei servizi di sistema

Tale set di abilità consente di svolgere facilmente la maggior parte delle attività relative agli sviluppatori.


Bella risposta. Quali comandi vengono utilizzati per avviare / arrestare i servizi di sistema?
Tim

11

Dalla mia esperienza con i miei numerosi colleghi da quando ho iniziato a lavorare, nessuno vuole fingere la conoscenza di Unix: o " conoscono la loro linea di comando " o semplicemente dicono "assolutamente no!".

Chiedi semplicemente se il candidato è disposto a lavorare su una workstation Unix e lascia che ti dica fino a che punto può superare bash. Alla fine nominerà alcuni comandi; il maggior numero di quelli ovvi sono cd, cat, moreo less, vio emacs, grep, awk, sed. Ascolta attentamente se menziona man.

Se è per lo sviluppo, dovrebbe avere familiarità con makee Makefile, e un po 'l'interfaccia a riga di comando controllo del codice sorgente ( svn, git, cleartool, hg, cvs...)


4
Lo so mane lo uso ogni volta che Google non aiuta, ma non lo metterei mai nel mio elenco di comandi ...
Mehrdad,

3
manè il modo più efficiente per conoscere la riga di comando di unix e le librerie C quando sei offline. A proposito, ho imparato Unix quando lo strumento più avanzato per la ricerca in Internet eratelnet archie.cs.mcgill.ca
mouviciel,


@mouviciel: è anche l'apprendimento più efficiente sulla riga di comando di unix quando sei online , poiché la maggior parte dei forum ti dirà 'utilmente' di rtfm se chiedi loro i dettagli sui comandi. Questo dovrebbe andare bene se le pagine man non fossero incredibilmente contorte e difficili da consultare. Fortunatamente c'è stackoverflow!
Joren,

Non lo so. Uso le pagine man in modo eccessivo e non ho mai avuto problemi con esso una volta che mi sono abituato. È un gioco da ragazzi trovare quello che stai cercando. Hai sezioni, hai anche "Vedi anche" e puoi cercare tutto con il clic di un pulsante. Ottieni una pagina man per ogni comando e ogni syscall e parecchie chiamate in libreria. Direi che le pagine man sono ciò che mi fa amare UNIX in modo così strano.
Yam Marcovic,

10

Perché farlo

Le shell * nix (e altre shell del sistema operativo, prima guerra mondiale) sono ambienti di lavoro molto profondi e ampi. È possibile che qualcuno passi anni lavorando lì e utilizzi solo una percentuale molto piccola della capacità delle conchiglie.

Se non ti aspetti che la persona a) programma shell, o b) amministrare il sistema dalla shell, allora perché è importante? Tutto ciò che verrà fatto sarà ad un livello così basilare che un utile cheat sheet * nix compenserà più che altro la "mancanza di abilità".


È un controllo di onestà. Se qualcuno mette l'esperienza unix sul proprio curriculum (cosa che non è davvero necessaria), voglio essere in grado di verificare quali sono quelle abilità dichiarate. Se sei solo in grado di usare cd e ls, non dovresti rivendicare unix experience imo.
Christophe Vanfleteren,

Bene, allora vorrei chiedere loro quali sistemi Unix hanno usato e fare loro elencare le differenze tra i sistemi Unix e probabilmente Linux / Mac
johannes

1
@Christophe - Bene, ecco l'affare ... non importa, perché probabilmente non funzioneranno per te. È una grande bandiera rossa per un intervistato quando il potenziale datore di lavoro inizia a fare acrobazie come questa perché non si fidano di ciò che è nel curriculum. Il tuo "test", e la tua giustificazione per questo, sta fondamentalmente dicendo che stai cercando di assumere qualcuno per fare un lavoro di merda in una compagnia di merda. Potrei sbagliarmi, ma suppongo di no. Tuttavia, se sbaglio, ti suggerisco di rivalutare le tue "aspettative".
Joe Internet,

1
@Yam - Lo dice in questo modo ... se stai assumendo e qualcuno ti manda un curriculum che ritieni sia inventato, non devi intervistare quella persona. Quello che non fai è creare un test sciocco che a) ammetti che non abbia alcun rapporto con i requisiti della posizione, e b) ammetta che è progettato solo per testare l '"onestà" dell'esperienza dichiarata di qualcuno. Se qualcuno non riesce nemmeno a ottenere un colloquio presso la compagnia di OP senza che la sua "onestà" sia messa in discussione perché ha detto di aver usato la shell * nix, cosa dice della compagnia? Per me, dice lavoro di merda presso la compagnia di merda. YMMV.
Joe Internet

1
@Christophe - Se stai assumendo programmatori abilitati * nix, IMO è lecito supporre che "conoscano la loro linea di comando". Se stai assumendo sviluppatori capaci di altri sistemi operativi, IMO è lecito ritenere che le loro abilità da riga di comando * nix siano minime. Il gruppo A non ha bisogno di essere testato, il gruppo B ottiene un errore automatico, quindi perché preoccuparsi di testarli? Se i tuoi criteri per l'assunzione di uno sviluppatore di software si basano su quanto bene usano la riga di comando, bene, penso che il tuo processo di assunzione sia difettoso. Sarebbe diverso se la shell scripting fosse la principale responsabilità della posizione.
Joe Internet,

3

Dalla parte superiore della mia testa probabilmente chiederei loro due cose:

  1. Quando hai usato la riga di comando * nix in precedenza, hai riscontrato un caso in cui un comando ben ponderato ti ha fatto risparmiare un sacco di tempo? Se è così, elaborato.

  2. Spiegare le principali differenze tra la riga di comando * nix e un desktop Windows standard. Quali sono i vantaggi e gli svantaggi di ciascuno?

Chiaramente, il primo ti fornirà un'indicazione di quanto siano approfondite le conoscenze del richiedente sulla linea di comando. Se ha lavorato per anni su un * nix, non ti avrebbe semplicemente detto che era orgoglioso di aver corso un grep. Non aspettarti che ricordino esattamente i comandi (ci sono sempre delle manpage per quello), ma l'idea generale di quello che hanno fatto.

La seconda domanda invece verifica se capiscono in cosa è veramente brava la linea di comando e per cosa non è uno strumento adatto. È facile imparare a usare un martello, ma è molto più difficile passare a un altro strumento nel caso in cui il martello non sia adatto. Quindi questa domanda ti dà una buona indicazione della visione del richiedente al di fuori della casella * nix, inoltre è abbastanza aperta da poter (e dovrebbe) segnare con le sue conoscenze. (Niente di peggio che rispondere a qualcosa come "uh .. windows ha quelle finestre")


2

Dipende da cosa vuoi che facciano.

Per ottenere informazioni dai file di registro tuo suggerimento per cat + grep ha perfettamente senso. Aggiungerei ls, cd e meno / più a quello.

Se ti aspetti che facciano anche delle modifiche minori (diciamo, nei file di configurazione), avrebbe senso aggiungere test per vi e / o emacs e per cose come cp / mv / rm / mkdir.


1
test dei comandi vi, sheesh, sarei più preoccupato se li conoscessero tutti
NimChimpsky,

1
bene, se il ragazzo raggiunge Google e inizia a digitare elementi del campo di ricerca come " comandi vi editor ", allora prenderei in considerazione che il test ha superato il 90% :)
moscerino

1

Consiglierei di conoscere emacs o vi / m, tar, sed, e / f / grep, i vari compilatori, alcuni script di shell. Forse eseguire un test in cui devono usare questi strumenti per prendere un po 'di codice da un file senza aprirlo, inserirlo in un altro programma; quindi compilare il programma che si interromperà per qualche banale errore. Devono quindi utilizzare un editor di testo per accedere e trovare l'errore, far funzionare il codice e archiviare il file binario. Quindi spediscilo da qualche parte mentre dai le autorizzazioni al destinatario per eseguirlo.


1

Non so te, ma sarei un po 'seccato se il mio intervistatore mi chiedesse e non sapessi come lavorare su Linux.

Non dovresti davvero preoccuparti di ciò che sanno in questo momento , ma di ciò che possono imparare se ne viene data la possibilità. Imparare gli strumenti * nix non è troppo difficile ma richiede un po 'di determinazione: dovresti davvero testare l'abilità piuttosto che la conoscenza.


2
ma intervisti i candidati per lavorare per non apprendere.
NoChance,

1
-1 @Emmad. Quindi non hai mai imparato nulla in nessun lavoro che hai avuto ...?

3
-1 @EmmadKareem tutto il lavoro sta imparando in qualche modo.
Nicholas Smith,

Sì, l'apprendimento è previsto in una certa misura, tuttavia, a meno che il ruolo non sia banale, mi aspetto che il candidato sia produttivo in circa 2 settimane di assunzione, in media in Canada questo mi costerebbe $ 3000! A meno che l'abilità non sia rara, questo è quello che mi aspetto.
NoChance,

Sembra che Emmad sia una persona per cui non vorrei lavorare, insieme all'OP.
kirk.burleson,

1

Dipende dal livello di esperienza che desideri che abbiano. SE questo non è per qualcuno che svilupperà per i sistemi * nix, e non anche per gli amministratori di sistema * nix, ma solo per gli sviluppatori regolari che a volte hanno bisogno di fare un po 'di lavoro su un sistema * nix, di quanta esperienza hanno effettivamente bisogno?

Tutto ciò di cui uno sviluppatore potrebbe aver bisogno in * nix shell (ls, chmod, cat ecc.) Potrebbe probabilmente essere scritto su un unico cheat sheet. In tal caso, richiedere * nix conoscenza della shell dove non è necessario potrebbe eliminare alcuni buoni candidati.


0

Di solito scelgo un compito semplice e chiedo alla persona di scrivere uno script shell su una lavagna.

"Hai una directory" foo "e una directory di backup" foo_backup ". Scrivi uno script di shell per vedere cosa è cambiato in" foo "da quando è cambiato" foo_backup ".


0

'Spiega il processo di login in Linux, con tutti i dettagli che ti senti a tuo agio' è una buona domanda. Il processo di accesso coinvolge il passaggio di utenti, autorizzazioni e proprietà e molta filosofia generale di Unix. Se possono spiegare chiaramente come e perché c'è un/etc/passwd e/etc/shadow , e come un utente non privato può cambiare la propria password ma non quella di altri, ciò significa che "ottengono" Unix.

Un altro valido è qualsiasi cosa con analisi dei log o rapidi controlli di sicurezza. Se riescono a sommare la larghezza di banda totale distribuita per un particolare vhost da un registro Apache, o scoprire se ci sono altri utenti nel sistema con un uid di 0, sono utili sulla riga di comando.

E una cosa da NON fare a loro: non farli fare su carta / lavagna. Dai loro un sistema live (ma niente internet perché è quasi un imbroglio) e guardali andare via. Se conoscono le pagine man e sanno costruire espressioni multi-pipe al volo, questo è un buon segno. Se hanno bisogno di google per tutto, allora il loro skillset è discutibile.


0

perché farli scrivere un programma funzionale? cosa c'è che non va nel dire "dimmi la differenza tra grep e sed, o cosa fa il comando X? ecc. in questo modo, puoi guidarli un po '.

se armeggiano sul compito specifico che gli dai, potresti non pensare che siano intelligenti. ma se fai domande generali, dai loro la possibilità di mostrarti ciò che sanno, che può essere sostanziale ma in modo diverso da quello che ti stavi chiedendo.


-1

I guru di Unix hanno comandi a riga di comando come sed, grep ecc in un dito e possono facilmente usarli per ottenere ciò che vogliono, usando tutti i tipi di virgolette, espressioni regolari avanzate ecc., Quindi a volte vedi lo script e pensi che sarebbe più facile da capire essendo scritto in cinese;)

Puoi aspettarti che, indipendentemente dalla programmazione della shell, conosceranno almeno un linguaggio di script aggiuntivo, come Perl.

Conoscerebbero gli interni di configurazione del sistema Unix, quindi se chiedi loro di cambiare il layout della tastiera (fg aggiungi un po 'di rilegatura a destra alt +) non verrebbero confusi.

Anche la gestione dei pacchetti installati non sarebbe un problema. L'installazione di Oracle, l'esecuzione di 4 server applicazioni, ciascuno con altra JVM - anche nessun problema. Anche la configurazione della rete virtuale, il routing avanzato e il filtraggio delle porte, le macchine virtuali ecc., La gestione della sicurezza, vanno anche lì.


2
La domanda è di verificare se uno sviluppatore ha competenze Unix generali, non identificare i amministratori di sistema guru che si concentrano in particolare su Oracle e Java.
Peter Taylor,

JVN? Cosa c'entra la Jewish Volunteer Network con questo?
ocodo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.