Sebbene questo sia generalmente un problema, ritengo che il problema sia inesistente a causa della configurazione.
Il richiedente ti ha inviato un codice sorgente. Come o perché è successo?
Beh, ovviamente ci sono solo tre possibilità:
- Hai dato al candidato un incarico per risolvere un particolare problema (ben definito) per valutare le sue capacità.
- Il candidato vuole mostrare qualcosa di interessante che ha scritto.
- Il richiedente è un coglione o una spia o una persona altrimenti malvagia e in realtà non è interessato ad essere assunto. Tutto ciò che spera è che sei abbastanza stupido da eseguire il suo codice.
Informazioni su 2) e 3)
Il rischio principale è distinguere tra 2) e 3). Le probabilità sono alte che se qualunque cosa abbia scritto vale la pena guardare , è qualcosa che puoi ottenere il codice sorgente online (da una fonte "neutrale") e che potresti già avere familiarità con, oppure è qualcosa che in realtà non vuoi guardare perché violerebbe la proprietà intellettuale di un concorrente (ex datore di lavoro). Quest'ultimo significherebbe che non vorresti assumere quella persona comunque.
Se è possibile ottenere la fonte online, farlo. Se è possibile verificare il contributo del richiedente a un software ben noto (incluso il software proprietario) con il suo nome da qualche parte nei crediti, farlo.
In ogni altro caso, ignora semplicemente ciò che ti ha inviato. O non vale la pena guardare, o illegale, o ad alto rischio.
Informazioni su 1)
Il richiedente ti ha inviato qualcosa perché gli hai dato un incarico. Se hai qualsiasi competenza (che presumo tu faccia!), Allora per un tipico incarico di programmazione (... che hai scelto te stesso!), Sarai in grado di dire se è una soluzione plausibile sembra che potrebbe funzionare osservando il codice sorgente per meno di 30 secondi (più probabilmente 10 secondi).
Se non puoi dire che il programma probabilmente funzionerà (o che cosa sta facendo) entro 30 secondi, colui che l'ha scritto non è il tipo di persona che vuoi assumere, fullstop. Vuoi gente che scrive codice che altri umani possano capire e mantenere. Tu non vuoi qualcuno che sta cercando di diventare intelligente con te, né qualcuno che vince regolarmente il concorso C offuscato. Non importa nemmeno se il programma funziona. Non appena un'altra persona non riesce a capire il codice, non "funziona" mai.
Se il programma sembra funzionare probabilmente, ma trovi qualcosa che sembra "strano" (ad esempio, sequenze di escape Unicode di Java, letterali stringa C ++, cose che assomigliano a trigreph, qualunque sia), considera l'assegnazione come "fail", sposta al prossimo richiedente. Non è necessario includere qualcosa di simile nel 99% di tutti i programmi (e, abbastanza sicuro, non nel tuo compito - dovrei sperare). Quindi se trovi qualcosa di "strano" come questo, il candidato non è qualcuno che vorresti assumere.
Se il codice supera questo primo triage, potresti passare altri 2-3 minuti a guardarlo più a fondo. Se sei ancora soddisfatto di ciò che vedi dopo, puoi eseguirlo tramite un analizzatore statico e compilarlo in una macchina virtuale a un livello di avviso elevato.
Questo dovrebbe far sorgere problemi che potresti aver perso durante la lettura dell'origine (come invocare un comportamento non definito o una riduzione della conversione).
La compilazione ti dirà innanzitutto se il richiedente ha la necessaria diligenza e attenzione ai dettagli, non tanto se ha abilità di programmazione. Proprio come scrivere correttamente il nome del datore di lavoro sulla tua applicazione e come eseguire il controllo ortografico del tuo CV prima di consegnarlo, è buona pratica assicurarti che qualsiasi codice sorgente che conduci compili senza errori (e preferibilmente senza avvisi). Se qualcuno non riesce a farlo, non vuoi assumerlo.
Il rischio di cose malvagie che accadono a questo punto (sfruttando il e del compilatore di compilazione della VM) è neglegabile, visto come hai già eseguito un controllo di plausibilità sul codice. Non succederà.