"Explain the RAII idiom" è una buona domanda di screening in C ++? [chiuso]

13

Una società con cui lavoro mi ha chiesto di fare screening per i candidati per assicurarmi che non siano completamente imbarazzati quando invii qualcuno a un potenziale cliente.

È emerso che un buon numero di persone veniva assegnato a un ruolo di sviluppatore C ++. Non passo molto tempo in C ++, ma ho fatto alcuni progetti banali e non banali nella lingua. Ho pensato che "Spiegare l'idioma RAII" sarebbe stata una bella domanda sul softball che i più seri sviluppatori di C ++ potevano rispondere mentre dormivano, e mi avrebbe permesso di passare a domande più interessanti sull'esperienza. Ma risulta che le persone che hanno più di 10 anni di esperienza in C ++ non riconoscono il termine, anche se espongo l'acronimo "Acquisizione risorse è inizializzazione". Un candidato si è spinto fino a dire che sentiva che non era sempre pratico applicare la tecnica nello sviluppo di Windows, che pensavo fosse un sentimento strano, ma potevo vedere un paio di esempi che probabilmente supportano quella linea di pensiero. (Ma in realtà probabilmente ).

Anche un paio di sviluppatori C ++ che conosco abbastanza bene per giudicare la loro competenza dicono che non hanno riconosciuto il termine, ma dopo aver letto un riassunto della tecnica, hanno detto "Oh, sì, non sapevo che avesse un nome Ho solo pensato a quelle cose come qualcosa che devi solo fare . " Ricordo il termine della seconda edizione del libro di Stroustrup, anche se all'epoca l'impatto non era ancora calato.

Quindi, è "Puoi spiegarmi l'idioma RAII?" una domanda di screening equo? È ragionevole aspettarsi che tutti gli sviluppatori C ++ competenti lo capiscano? Il termine è più esoterico di quanto penserei? Supponendo che un candidato non conosca il termine, ci sono domande di follow-up che potrebbero aiutarmi a capire se hanno almeno interiorizzato le pratiche che fanno funzionare RAII? Esistono alternative alternative "alette" che diano al candidato una certa libertà di risposta e aiutino il candidato a dimostrare la propria comprensione dello sviluppo del C ++?

Modifica da aggiungere : per chiarire, non sono il tipo di intervistatore che squalifica le persone perché non conoscono parole chiave e acronimi. Tuttavia, penso che sia ragionevole aspettarsi che un esperto programmatore C ++ abbia interiorizzato le buone pratiche per la gestione delle risorse. Penso anche che sia importante verificare che un candidato comprenda alcune "nozioni di base" sulla tecnologia che rivendicano esperienza prima di passare a domande più interessanti su design, problem solving, ecc. Penso che quello che sto cercando sia un buon modo per fare una domanda a risposta aperta, adatta per l'uso in uno screening telefonico breve, che posso usare per giudicare la comprensione di base di un candidato di buone pratiche di gestione delle risorse in C ++, prima di porre domande "difficili".

    
posta JasonTrue 07.06.2011 - 22:46
fonte

6 risposte

23

Sembra che tu abbia scoperto che gli sviluppatori C ++ che conosci dall'esperienza sono competenti non hanno familiarità con quell'acronimo o anche con la piena espressione. Questo da solo sembra indicare che la domanda non è adatta come domanda di screening durante una telefonata.

D'altra parte, si può arrivare allo stesso punto in modo più indiretto creando uno scenario. Qualcosa del tipo: "Stai implementando una classe Log che scriverà le informazioni di registrazione in un file. Ovviamente, devi avere una variabile membro che sia un handle di file (std :: FILE *). Dove si assegna e si libera questo file maniglia?" Se il candidato inizia a parlare di creare un metodo open () e un metodo close () piuttosto che allocare l'handle del file nel costruttore e deallocare l'handle nel distruttore, è possibile eseguire un follow up chiedendo informazioni su come si comporterebbe la classe se il chiamare il codice ha sollevato eccezioni, ecc.

    
risposta data 07.06.2011 - 23:02
fonte
15

Non penso che sia una domanda pratica come viene proposta. Penso che troverete che molti sviluppatori cadranno nel campo "oh, sì, non sapevo che avesse un nome". Ti suggerirei di testare i candidati sul concetto e non sul nome del concetto. Fornisci loro un esempio di codice e chiedi perché è incompleto o fai dimostrare loro di conoscere il concetto.

    
risposta data 07.06.2011 - 22:52
fonte
3

Penso sia una domanda valida. Anche se non so quanto sia popolare il termine RAII (nel mio team, usiamo sempre il termine RAII) ma il concetto di gestione delle risorse è importante soprattutto se si desidera anche una sicurezza eccezionalmente sicura e multi-thread .

    
risposta data 07.06.2011 - 23:02
fonte
3

Bene, so che quando voglio sapere se qualcuno è competente, la prima cosa che faccio è controllare la loro conoscenza degli acronimi. Una volta stabilito, mi assicuro che conoscano i nomi di altre tecnologie che ritengo siano interessanti. Se sono ancora lì dopo, chiedo loro una lista dei loro colori preferiti.

Non sopporto questo genere di cose. Voglio dire, alla mia fine dell'intervista, si tratta di sirene e campane d'allarme. Non voglio lavorare in un posto dove è veramente importante che conosca bizzarrie mnemoniche che il mio capo pensa siano "fondamentali". Non posso essere preso la briga di imparare i nomi delle persone con cui ho avuto a che fare per anni, quindi di sicuro non sprecare spazio nel cervello con sigle carine che descrivono le migliori pratiche.

Guarda il mio codice. Chiedimi come farei le cose Farò una merda a una merda fino a quando le mucche torneranno a casa. Ti codifico un'app. Non farmi domande di banalità. La curiosità è sempre incostante, e non è mai fondamentale.

    
risposta data 07.06.2011 - 23:03
fonte
1

Se il tuo scopo è di escludere rapidamente gli incompetenti totali, prova qualcosa del tipo:

Test FizzBuzz

Quindi puoi lasciare concetti e pratiche C ++ a quelli in una posizione migliore per valutare l'esperienza in C ++.

    
risposta data 08.06.2011 - 00:19
fonte
0

È una domanda valida, ma non per lo screening. L'ho usato come domanda scritta, da discutere al colloquio. È possibile ottenere un sacco di informazioni su modelli di pensiero dato preavviso. Come domanda di screening è solo una brutta trappola.

    
risposta data 25.03.2014 - 11:28
fonte

Leggi altre domande sui tag