"Spiega il linguaggio RAII" è una buona domanda di screening in C ++? [chiuso]


13

Una società con cui lavoro mi ha chiesto di fare delle proiezioni telefoniche candidate per assicurarmi che non siano completamente imbarazzate quando invio qualcuno a un potenziale cliente.

Si scopre che un discreto numero di persone veniva assegnato a un ruolo di sviluppatore C ++. Non passo molto tempo in C ++, ma ho realizzato alcuni progetti banali e non banali nella lingua. Ho pensato che "Spiegare il linguaggio RAII" sarebbe stata una bella domanda di softball a cui gli sviluppatori C ++ più seri potevano rispondere mentre dormivano e mi permetteva 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 a "Acquisizione di risorse è inizializzazione". Un candidato è arrivato al punto di dire che non è sempre stato pratico applicare la tecnica nello sviluppo di Windows, che pensavo fosse uno strano sentimento, ma ho potuto vedere un paio di esempi che probabilmente sostengono quella linea di pensiero.).

Anche un paio di sviluppatori C ++ che conosco abbastanza bene per giudicare la loro competenza hanno detto di non riconoscere il termine, ma dopo aver letto un riassunto della tecnica, hanno detto "Oh, sì, non sapevo che avesse un nome. pensato a quelle cose come qualcosa che devi solo fare ". Ricordo il termine della seconda edizione del libro di Stroustrup, anche se in quel momento il pieno impatto non affondò.

Quindi, è "Puoi spiegarmi il linguaggio RAII per me?" una domanda di screening corretta? È 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 domande "diserbo" alternative migliori che consentono al candidato di avere una certa libertà di risposta e aiutano 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 d'ordine e acronimi. Tuttavia, penso sia ragionevole aspettarsi che un programmatore esperto in 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 in cui rivendicano esperienza prima di passare a domande più interessanti su design, risoluzione dei problemi, ecc. Penso che quello che sto cercando sia un buon modo per porre una domanda aperta, adatta per essere utilizzata in una breve proiezione telefonica, che posso usare per giudicare la comprensione di base di un candidato delle buone pratiche di gestione delle risorse in C ++, prima di porre domande "difficili".


3
"Anche un paio di sviluppatori C ++ che conosco abbastanza bene per giudicare la loro competenza hanno affermato di non riconoscere il termine". Va bene. "Quindi, è" Puoi spiegarmi il linguaggio RAII per me? "Una domanda di screening equo?" Perchè chiedere? Non riuscivi a trovare persone che lo sapessero. Cos'altro devi sapere che non sai già? Forse dovresti minimizzare questo argomento (dal momento che conosci già la risposta) e concentrarti su "Esistono migliori domande" diserbo "alternative che potrebbero essere interessanti. Tranne il fatto che si tratta di opinioni fuori dal comune, che non sono tollerate bene.
S.Lott

9
I modi di dire cambiano, le buone pratiche no. Invece di chiedere un particolare idioma, che ne dici di chiedere semplicemente "quali passi prendi nel progettare una classe per assicurarti che non perda?"
Blrfl,

Abbastanza giusto, anche se la mia dimensione del campione è bassa e non sono più attivamente coinvolto nella comunità C ++, quindi non so cosa la comunità consideri la conoscenza essenziale in questi giorni. Sto essenzialmente cercando di capire come espandere il mio repertorio di domande che possono essere utilizzate per giudicare la vera conoscenza del C ++ oltre, ad esempio, le basi della sintassi.
JasonTrue,

2
il tuo problema non è quello che mi aspettavo. Supponevo che avresti trovato qualcuno che sapeva cos'è RAII, che venisse assunto, e solo dopo scopri che fanno ancora schifo al codice.
Kevin,

1
@JasonTrue: Penso che le domande sul buzz fizz dovrebbero essere vere e proprie domande di programmazione come l'inversione di una stringa. Comunque penso che sia una bella domanda. Potresti anche considerare di chiedere quali funzionalità in c ++ - 0x l'intervistato ritiene siano le più interessanti o importanti. È un po 'più difficile, ma se ottieni una buona risposta probabilmente significa cose buone. E la domanda può sempre ricadere su "quali librerie boost sono più importanti / interessanti" se si ottiene uno sguardo vuoto.
Kevin,

Risposte:


24

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

D'altra parte, si potrebbe arrivare allo stesso punto attraverso un modo più rotonde proponendo uno scenario. Qualcosa del tipo: "Stai implementando una classe Log che scriverà le informazioni di registrazione in un file. Ovviamente, dovrai avere una variabile membro che è un handle di file (std :: FILE *). Dove allochi e liberi questo file maniglia?" Se il candidato inizia a parlare della creazione di un metodo open () e di un close () anziché allocare l'handle di file nel costruttore e deallocare l'handle nel distruttore, è possibile dare seguito a domande su come la loro classe si comporterebbe se il il codice chiamante ha generato eccezioni, ecc.


Un suggerimento eccellente. Mi piace questo approccio.
JasonTrue,

Richiede troppo tempo in un'intervista telefonica.
HelloWorld,

15

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


3

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


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 interessanti. Se dopo sono ancora lì, allora chiedo loro un elenco dei loro colori preferiti.

Non sopporto questo genere di cose. Voglio dire, alla fine del colloquio, sono sirene e campanelli d'allarme. Non voglio lavorare in un posto dove conta davvero che conosca bizzarri mnemonici che il mio capo ritiene "fondamentali". Non posso preoccuparmi di imparare i nomi delle persone con cui ho avuto a che fare per anni, quindi sono sicuro che non sprecare spazio nel cervello con simpatici acronimi che descrivono le migliori pratiche.

Guarda il mio codice. Chiedimi come farei le cose. Scaraboccherò una merda su una lavagna finché le mucche non torneranno a casa. Ti codificherò un'app. Non farmi domande trivia di cazzate. La curiosità è sempre incostante, e non è mai fondamentale.


Non tendo a porre molte domande di conoscenza esoterica nelle interviste di screening, ma ci si aspetta un po 'di due diligence per assicurarsi che qualcuno non sia del tutto incompetente. Di conseguenza, sto cercando una domanda aperta che mi permetta di verificare un certo livello di conoscenza, consentendo al candidato di mostrare il proprio background. Mi aspetto "un po 'di conoscenza diretta se qualcuno dice di conoscere la tecnologia X sul suo curriculum; la mia domanda si riduce a, quali conoscenze dovrei aspettarmi da un programmatore C ++ che è un gateway utile per ulteriori conversazioni?
JasonTrue,

4
@jason: Beh, probabilmente potrò ricordare l'acronimo RAII per alcuni mesi. Quella conoscenza effimera mi rende competente, anche se non tocco C ++ da anni? È banale curiosità. Chiedi loro come gestiscono le serrature e assicurati di comprendere la CONOSCENZA effettiva, non lo strano acronimo.
Satanicpuppy

1
@jason: sono d'accordo. Non sono d'accordo sul fatto che le basi includano questo tipo di curiosità. Un idiota potrebbe saperlo, e un esperto potrebbe non esserlo. Stai basando il tuo processo di selezione su qualcosa di irrilevante per l'abilità.
Satanicpuppy

5
Conoscere ciò che viene chiamato RAII non è conoscenza essenziale. Ma raggiungere automaticamente lo schema è.
btilly

2
RAII è un concetto fondamentale del buon C ++ e il termine esiste da almeno 20 anni. Penso che respingerlo come curiosità sia in qualche modo ingiusto. Mentre puoi avere buoni sviluppatori C ++ che non conoscono il termine, per me ha l'odore di qualcuno che non ricerca il loro mestiere.
Kaz Dragon,

1

Se il tuo scopo è di eliminare rapidamente gli incompetenti totali, prova qualcosa del genere:

Test FizzBuzz

Quindi puoi lasciare concetti e pratiche C ++ a quelli in una posizione migliore per valutare le competenze C ++.


1
Ho usato e ricevuto frequentemente questa domanda e l'ho menzionata sopra nel mio commento, ma trovo scomodo fare una conversazione telefonica di 25 minuti.
JasonTrue,

0

È una domanda valida, ma non per lo screening. L'ho usato come una domanda scritta, da discutere durante l'intervista. È possibile ottenere molte informazioni dettagliate sui modelli di pensiero con preavviso. Come domanda di screening è solo una cattiva trappola.

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.