it-swarm.it

Qual è la migliore domanda per l'intervista in C ++?

Se potessi porre una domanda a un programmatore C++ per misurare le sue abilità in C++, quale sarebbe?

La domanda che ritengo migliore è: Puoi chiamare "elimina questo;" all'interno di una funzione membro? (Ho inserito questo come link in modo da poterlo esaminare prima, quindi andare su La migliore domanda di intervista in C++ - Mai! per vedere il risposta corretta.)

Non lo chiedo perché mi aspetto che molte persone conoscano la risposta. Se lo facessero, non sarebbe utile una domanda. Chiedo di vedere se riescono a trovare la risposta corretta e come lo fanno.

28
David Thielen

Vorrei chiedere loro il motivo per cui la funzione di membro virtuale non può essere utilizzata con il modello in C++. Naturalmente, ci sono solo poche persone che possono effettivamente rispondere immediatamente alla domanda. Ma se un intervistato comprende correttamente la meccanica di base del C++ (come funziona il modello in C++, come viene implementata la funzione virtuale, in che modo compilatore e linker generano un eseguibile dal codice sorgente, ecc.), Potresti ottenere una risposta con l'appropriata procedura dettagliata- domande anticipate.

Aggiunto: la funzione di membro virtuale modello in questa risposta indica la funzione di modello che è la funzione di membro virtuale di una classe - non una normale funzione di membro nella classe di modello. Ci scusiamo per la confusione :(

8
summerlight

La migliore domanda di intervista in C++ sarebbe un problema di programmazione, non una domanda a quiz.

57
Steven Evers

Vorrei chiedere loro cosa gli piace di C++ 0x. Da questo ho potuto "seccarli" in vari stereotipi:

  • super old school, usa i compilatori C++ per compilare il codice C.
  • vecchia scuola, impaurita (o non ha senso) STL, non ha tenuto il passo con i cambiamenti
  • adora lambdas, adora STL sempre più veloce da riferimenti a valori, grande fan RAII, caldo da usare shared_ptr, unique_ptr ecc
  • è amaro perché tutto il codice boost scritto negli ultimi anni dovrà essere adattato per usare gli equivalenti C++ 0x
  • metaprogrammer modello folle che mi fa esplodere la testa mentre risponde a una domanda relativamente breve

È probabile che alcuni di questi secchi siano perfetti per te e alcuni sono "grazie per essere entrati". Come domanda che ti fornisce molte informazioni velocemente, questo è il mio vincitore.

32
Kate Gregory

Sono un po 'confuso sul perché "puoi cancellarlo?" è considerata una domanda interessante. Chiunque abbia scritto codice COM in C++ sa che la prima cosa che impari il primo giorno della programmazione COM di base è come usare correttamente "elimina questo". Suppongo che potrebbe essere utile determinare se, per esempio, qualcuno sta mentendo sul suo curriculum sull'avere scritto programmi COM, ma come domanda C++ di conoscenza generale, se qualcuno non è in grado di rispondere immediatamente, allora non saranno adatti per la mia squadra.

Ad ogni modo, se il tuo obiettivo è quello di formulare una domanda che misura le abilità C++, scegliere una domanda è la strada sbagliata da percorrere. Giralo. La domanda giusta da porre è:

Su una scala da uno a dieci, quanto sei bravo un programmatore C++?

Questa non è la domanda che ti dà la risposta che desideri. Tutti dicono "otto" a prescindere. La domanda che ti dà la risposta che desideri è:

OK, quindi hai otto anni. Qual è un'area problematica con cui pensi che un sette avrebbe difficoltà a lavorare?

E boom, ora li hai. Se il candidato pensa che "qualcosa a che fare con la ricorsione" o "quando usare un distruttore virtuale" è il genere di cose con cui un sette ha difficoltà, allora sai che sanno un po 'di ricorsione o distruttori o altro e che la loro conoscenza non va molto oltre.

Ciò dovrebbe darti una calibrazione molto migliore di quella di fare qualche domanda banale. Se dovessi costringermi a farmi una buona domanda su un fatto su C++, probabilmente farei una domanda del tipo "come progetteresti l'analizzatore semantico e il generatore di codice per la parte di un compilatore C++ che si occupa di metodi virtuali chiamato in un distruttore di classe base? " Dovresti porre domande che hanno a che fare con cose reali su cui lavori e su cui è probabile che il candidato lavori. Questo è un problema su cui ho dovuto lavorare una volta, e penso che darebbe una visione abbastanza buona di come una persona progetta analizzatori semantici e generatori di codice, così come la loro conoscenza del C++.

28
Eric Lippert

Solo per divertimento, ho avuto programmatori C++ che si divertivano con questo piccolo bambino:

Perché questo viene eseguito in un ciclo infinito (e sì, è digitato correttamente)? ​​

int x=0;
while (x<3) {
  x = x++;
}

È incredibile quanti siano inciampati. Certo, non posso più usarlo dopo che è apparso su Stack Overflow . Mormora ... Mormora ...

(Per ottenere la risposta corretta leggi la confessione e leggi sicuramente i commenti)

Aggiunta domanda bonus

C'è il classico FizzBuzz di tutti i tempi (come descritto nell'ormai famoso articolo Coding Horror ). Non l'ho mai usato in un'intervista da solo, ma dopo averlo buttato in giro per il team di sviluppo una volta a pranzo i risultati erano ... ehm ... sorprendentemente precisi.

Confession

Sono stato coinvolto nella risposta standard "x ++ restituisce il valore originale". Tuttavia, la risposta corretta è che il comportamento non è definito a causa di punti sequenza. Nessuno ha mai menzionato i punti sequenza in tutte le volte che l'ho usato fino a quando non l'ho pubblicato qui.

Sono stato educato e vorrei sinceramente ringraziare tutti coloro che hanno avuto il tempo di commentare.

14
Gary Rowe

La prima cosa da fare è una semplice domanda sui puntatori. Sono rimasto stupito nel vedere quante persone che affermano di conoscere C++ o, peggio ancora, C, non sono in grado di rispondere. Quindi vorrei porre una semplice domanda sulle funzioni virtuali. Questa combinazione ti dice molto rapidamente se la persona conosce effettivamente il C++.

8
Dima

Parlami del costruttore di copie.

7
fredoverflow

Dipende molto dal tipo di C++ scritto nella tua azienda. (Quando ho dovuto assumere programmatori C++, non ho mai chiesto di delete, perché ho chiesto loro delle tecniche per evitare di dover scrivere delete del tutto.)

Idealmente, vuoi assumere persone che scrivono codice al di sopra del livello di quello che scrive il tuo team, ma non troppo in alto, a meno che tu non voglia combinarlo con l'addestramento del team per portarlo a un livello superiore.

7
sbi

La migliore domanda per un grande sviluppatore di C++ è "Dimmi i motivi per cui dovremmo NON usare C++?"

6
amadvance

Credo che vorrei chiedere loro cos'altro sanno, o più probabilmente dare loro una domanda in qualcosa di completamente diverso.

Troppi programmatori C++ su chi ha poca esperienza in altre lingue. L'esperienza ristretta è generalmente restrittiva.

6
Orbling

Non penso che ci sia una domanda C++ migliore. Il C++ è un linguaggio così grande, e con il C++ 0X è cresciuto, che puoi essere forte in un certo sottodominio della lingua e non poco su un'altra parte della lingua. Una domanda "one shot" eserciterà solo la conoscenza di qualcuno di una piccola parte della lingua e rischia di trascurare la sua conoscenza di altri aspetti della lingua.

4
sashang
4
karlphillip

La mia domanda preferita da porre è semplice:

a) Hai iniziato con C e poi sei passato a C++?

b) In tal caso, quali sono state le prime cose che hai imparato a fare diversamente?

Questa risposta di solito mi dà un'idea di come il programmatore si avvicina al C++ e alla sua comprensione di OOP e C++ in generale.

non c'è una risposta "giusta" o "sbagliata" qui, ma di solito è un ottimo modo per capire da dove proviene il candidato.

3
mohaps

Come implementare le funzioni virtuali in C++, spiegare uno scenario del mondo reale.

1
user616

Al momento, direi: "Come faresti per implementare un costruttore di mosse per un container?"

La mia logica è che, poiché i costruttori di mosse sono una caratteristica del prossimo standard e non di quello attuale, la risposta del candidato indicherà se lo sviluppatore in questione persegue attivamente la conoscenza della propria lingua o si attiene solo ai trucchi che conoscono.

1
Kaz Dragon

Penso che chiederei la loro opinione sul design di, diciamo, std::string. Chiederei anche loro se hanno usato altri disegni (ad es. MFC/ATL CString, wxString, ecc.) E supponendo che abbiano, chiedo loro di confrontare e contrastare i disegni.

Le stringhe sono ampiamente utilizzate e quasi chiunque con esperienza reale nell'uso del C++ avrebbe dovuto usare almeno una o due delle precedenti. Quasi tutti i design presentano alcuni compromessi tra purezza teorica e uso pratico. Alcuni possono funzionare davvero bene, ma solo se usati esattamente come previsto, mentre altri commerciano una maggiore versatilità per alcuni possibili goffaggini. In breve, quasi chiunque abbia esperienza reale dovrebbe essere in grado di esprimere alcune opinioni significative dei propri progetti e tali opinioni dovrebbero dirti un bel po 'su come pensano, come loro codice di progettazione, il grado in cui valutano il pragmatismo rispetto alla purezza teorica e così via.

1
Jerry Coffin

In realtà vorrei presentare alla persona un po 'di codice da un altro linguaggio di programmazione orientato agli oggetti e preferibilmente non nell'elenco dei linguaggi che conoscono. Il codice dovrebbe rappresentare un compito semplice svolto in quella lingua.

Il punto di ciò non sarebbe determinare la loro conoscenza del C++ ma scoprire quanto capiscono bene la programmazione. Quando capisci i concetti di base alla base della programmazione, puoi risolvere i problemi.

1
Paul