Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question entretien C++ - doutes.

95 réponses
Avatar
David Fleury
Bonjour,

voici une des questions que je pose pour lors de mes entretiens pour des
développeurs avec expérience orienté C++

"Ecrire une fonction qui renverse une chaine (ex: ABC -> CBA, AE -> EA, ...)

Après avoir posé la question deux ou trois fois déjà, je suis surpris
des réponses (souvent fausses). Je laisse volontairement le choix au
candidat d'utiliser (char* ou std::string) et/ou une fonction modifiant
la chaine entrée ou retournant une nouvelle chaine, et l'utilisation de
la STL est autorisé.

A votre avis, est-ce que la question n'est pas trop mauvaise ?

David.

PS : Dans le même genre, il y a la fonction EstPalindrome qui semble
bloquer.

10 réponses

1 2 3 4 5
Avatar
Alex
"Michael DOUBEZ" wrote in message
news:49063279$0$30095$

Alors c'est peut être le fait de poser la question, tout le monde ne
demande pas de faire du code à un entretien.



Oui, à la limite aux débutants, et encore.
Quand tu as > ans d'expérience, tu ne codes plus "à la main" : tout se
fait en copier-coller.
Avatar
Michael DOUBEZ
David Fleury a écrit :
Bonjour,

voici une des questions que je pose pour lors de mes entretiens pour des
développeurs avec expérience orienté C++

"Ecrire une fonction qui renverse une chaine (ex: ABC -> CBA, AE -> EA,
...)

Après avoir posé la question deux ou trois fois déjà, je suis surpris
des réponses (souvent fausses).



Par fausses, tu veux dire que la réponse ne réalise pas la fonction
demandée ?

Je laisse volontairement le choix au
candidat d'utiliser (char* ou std::string) et/ou une fonction modifiant
la chaine entrée ou retournant une nouvelle chaine, et l'utilisation de
la STL est autorisé.

A votre avis, est-ce que la question n'est pas trop mauvaise ?



AMA, comme le répète ad nauseum Joel Spolsky, l'important est les
processus mis en oeuvre pour résoudre la question plutôt que la réponse
produite.

PS : Dans le même genre, il y a la fonction EstPalindrome qui semble
bloquer.



Alors c'est peut être le fait de poser la question, tout le monde ne
demande pas de faire du code à un entretien.

--
Michael
Avatar
espie
In article <490626b8$0$12768$,
David Fleury wrote:
Bonjour,

voici une des questions que je pose pour lors de mes entretiens pour des
développeurs avec expérience orienté C++

"Ecrire une fonction qui renverse une chaine (ex: ABC -> CBA, AE -> EA, ...)

Après avoir posé la question deux ou trois fois déjà, je suis surpris
des réponses (souvent fausses). Je laisse volontairement le choix au
candidat d'utiliser (char* ou std::string) et/ou une fonction modifiant
la chaine entrée ou retournant une nouvelle chaine, et l'utilisation de
la STL est autorisé.

A votre avis, est-ce que la question n'est pas trop mauvaise ?

David.



Moi je sais pas, tu me poserais ce type de question en entretien,
je commencerais par demander ce que tu as comme chaines, et qu'est-ce qu'il
faut traiter comme cas.

Ensuite j'aurais sans doute tendance a te le faire a la main...

mais bon, c'est tellement artificiel comme exemple...

je n'ecris que rarement du code a partir de rien. Un vrai exemple pour moi,
ca serait plus un fragment de vrai code avec un joli bug bien visible,
pour voir si le candidat le detecte.
Avatar
Michael DOUBEZ
Alex a écrit :
"Michael DOUBEZ" wrote in message
news:49063279$0$30095$

Alors c'est peut être le fait de poser la question, tout le monde ne
demande pas de faire du code à un entretien.



Oui, à la limite aux débutants, et encore.
Quand tu as > ans d'expérience, [...]



Ça dépends si il a vraiment 10 ans d'expérience ou 10 fois une année
d'expérience :). Une question de code ne me choquerais pas, au contraire.

[...] tu ne codes plus "à la main" : tout se
fait en copier-coller.



C'est dur de vieillir.

--
Michael
Avatar
Sylvain SF
Alex a écrit :
"Michael DOUBEZ" wrote in message
news:49063279$0$30095$

Alors c'est peut être le fait de poser la question, tout le monde ne
demande pas de faire du code à un entretien.



Oui, à la limite aux débutants, et encore.
Quand tu as > ans d'expérience, tu ne codes plus "à la main" : tout se
fait en copier-coller.



"à la main" ou "avec les pieds" tout se rencontre.

avec un débutant, on peux vouloir tester s'il ne commet pas des
erreurs graves, de compréhension, de sens comme de syntaxe
(et un bout de code peut montrer tout cela).

après 10 ans d'expérience, on s'attend à une bonne maitrise de
l'algorithmie classique, et donc qu'il puisse raconter (pas
nécessairement coder) via quels basiques il retournerait la
chaine.

bien sur, dans le même temps, poser des questions (d'entretien)
sans but serait un non-sens, donc on pourra vouloir évaluer la
créativité d'un débutant comme le conformisme et la rigueur
d'un senior, cela dépend bien de ce que l'on attend de lui.
(une porte ouverte).

Sylvain.
Avatar
Mickaël Wolff
David Fleury a écrit :
Après avoir posé la question deux ou trois fois déjà, je suis surpris
des réponses (souvent fausses).



On peut avoir des exemples ? J'ai du mal à croire qu'on peut répondre
quelque chose de faux à ça !

D'ailleurs, est-ce que ceci est une réponse acceptable pour toi :

#include <iostream>
#include <algorithm>

int main()
{
std::string s("Ceci est une chaine !") ;
std::string rs(s.rbegin(), s.rend()) ;
std::cout << rs << std::endl ;
}

Ou attendrais-tu plutôt un usage de std::reverse ou std::reverse_copy ?

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Jean-Marc Bourguet
Mickaël Wolff writes:

David Fleury a écrit :
> Après avoir posé la question deux ou trois fois déjà, je suis surpris
> des réponses (souvent fausses).

On peut avoir des exemples ? J'ai du mal à croire qu'on peut répondre
quelque chose de faux à ça !



Est-ce que tu as deja fait passe des interviews? Je confirme que tu peux
avoir des reponses abherrantes optenues en un temps absurdement long par
des gens ayant un CV apparemment excellent (et des reponses excellentes et
rapides par des gens ayant un CV qui a failli les empecher de venir a
l'interview).

D'ailleurs, est-ce que ceci est une réponse acceptable pour toi :



Quand j'interview, n'importe quoi est acceptable. C'est de toute maniere
une base pour la discussion et une maniere de voir la maniere de reflechir.
Je pose parfois meme une question ou le main peut faire une ligne... mais
j'attends toujours que quelqu'un me la fasse -- ou meme simplement y fasse
allusion.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avatar
Wykaaa
David Fleury a écrit :
Bonjour,

voici une des questions que je pose pour lors de mes entretiens pour des
développeurs avec expérience orienté C++

"Ecrire une fonction qui renverse une chaine (ex: ABC -> CBA, AE -> EA,
...)

Après avoir posé la question deux ou trois fois déjà, je suis surpris
des réponses (souvent fausses). Je laisse volontairement le choix au
candidat d'utiliser (char* ou std::string) et/ou une fonction modifiant
la chaine entrée ou retournant une nouvelle chaine, et l'utilisation de
la STL est autorisé.

A votre avis, est-ce que la question n'est pas trop mauvaise ?

David.

PS : Dans le même genre, il y a la fonction EstPalindrome qui semble
bloquer.



Poser ce genre de question pour "voir" si le développeur maîtrise le
langage (quel qu'il soit), c'est confondre connaissance du langage et
algorithmique (ce qui est aussi souvent le cas des TP lors d'un cours
langage).
Perso, si j'étais l'interviewé, j'en ferais la remarque au recruteur.

Des questions pertinentes pour voir si le développeur maîtrise le C/C++
seraient plutôt du style :
- pt étant un pointeur sur tableau, puis-je écrire pt++ (environ 2/3 de
réponses fausses)
- Pourquoi, quand on surcharge l'opérateur [], vaut-il mieux le
surcharger dans sa version const et non const ?
- Que signifie une dérivation virtuelle et à quoi cela sert-il ?
- Comment interdire l'utilisation de l'affectation entre instances d'une
classe ? (réponse : en définissant la surcharge de cet opérateur dans la
partie privée. Le corps est vide)
- Comment surcharge-t-on l'opérateur ++ dans sa version préfixe et dans
sa version postfixe ?
- Quelles sont les différentes utilisations de l'opérateur de "scope" :: ?

etc.

Dans les questions ci-dessus, il n'y a pas d'algorithmique...
Uun développeur ne crée d'ailleurs jamais d'algorithme mais ne fait
qu'utiliser des algorithme existants en les adaptant. Il n'a donc pas à
connaître tous les algorithmes de la terre mais plutôt à savoir les
retrouver ou savoir utiliser des bibliothèques de composants réutilisables.
Avatar
Jean-Marc Bourguet
David Fleury writes:

voici une des questions que je pose pour lors de mes entretiens pour des
développeurs avec expérience orienté C++

"Ecrire une fonction qui renverse une chaine (ex: ABC -> CBA, AE -> EA, ...)

Après avoir posé la question deux ou trois fois déjà, je suis surpris
des réponses (souvent fausses). Je laisse volontairement le choix au
candidat d'utiliser (char* ou std::string) et/ou une fonction modifiant la
chaine entrée ou retournant une nouvelle chaine, et l'utilisation de
la STL est autorisé.

A votre avis, est-ce que la question n'est pas trop mauvaise ?



Non. Mon experience d'interviewer est que la plupart des gens -- meme avec
un peu d'experience -- ne sont pas prepares a des questions pratiques.
Meme quand ils sont avertis par avance et qu'on leur laisse le choix du
langage. Je laisse marinner un peu puis je guide. J'agis pas mal a
l'instinct et en reaction a ce que le candidat dit et fait (j'ai par
exemple deja ete cherche des bouquins pour les donner au candidat, par
malchance pour lui, cela a simplement montre qu'il ne savait pas retrouver
quelque chose dans un bouquin dont il pretendait qu'il etait sa reference
principale). J'ai une serie de questions (programmer, chercher un bug,
dire simplement ce que du code fait,...) et je pioche en fonction de ce que
les candidats pretendent savoir *sur place* et ce qu'ils sont capables de
faire reellement (je parts du CV pour les premieres questions ou quand il y
a un trou).

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avatar
Jean-Marc Bourguet
"Alex" writes:

"Michael DOUBEZ" wrote in message
news:49063279$0$30095$

> Alors c'est peut être le fait de poser la question, tout le monde ne
> demande pas de faire du code à un entretien.

Oui, à la limite aux débutants, et encore.
Quand tu as > ans d'expérience, tu ne codes plus "à la main" : tout se
fait en copier-coller.



Tu vis dans un autre monde que le mien.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
1 2 3 4 5