OVH Cloud OVH Cloud

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
David Fleury
Jean-Marc Bourguet a écrit :

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.




Je crois que je suis d'accord avec ça même si, j'ai l'impression que
cela peut dérouter certains candidats les discussions ouvertes.
Mais j'aime bien improviser sur les sujets qui arrivent dans la
discussion pour "sentir" le "niveau de culture" en C++ du candidat.
De toute façon, j'ai une confiance modéré dans les CV présentés.
Avatar
David Fleury
Jean-Marc Bourguet a écrit :

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).




Ok, ça me va. J'essaye à mon niveau de pratiquer comme ça.
Merci.
Avatar
David Fleury
Wykaaa a écrit :

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.



Oui, mais je n'ai pas dit que je posais que cette seule question.

Mais peut être une ou deux remarques, souvent les candidats qui arrivent
sont brieffés et testés par la SS2I, ils connaissent souvent les
réponses à des questions que tout le monde pose ou les bases du langage.

Ensuite, si j'arrive à faire passer l'idée que j'en ai, je préfère les
praticiens aux théoriciens (sans être péjoratif s'entend)., n'étant pas
moi même théoricien, et juste un praticien raisonnable. Et puis je peux
me tromper aussi sur certains points que je n'aborde pas qu'un candidat
pourrait mieux connaitre que moi ;)
Avatar
Alex
"Jean-Marc Bourguet" wrote in message
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.



Oui, dans le monde réel, où tout est sur google ou google groups et où on
n'a pas de temps à perdre à réinventer la roue...
Avatar
Sylvain SF
David Fleury a écrit :

Mais je pose la question pour savoir si ça gêne ou pas de demander du code.



tu peux expliquer ?!

si cela te gêne ... parce que tu as expérimenté que cela amenait
à de mauvaises conclusions, ou à aucune conclusion, en effet il
n'est peut être pas utile d'insister, mais sinon ?

un postulant serait perturbé en 2008 de devoir produire du code,
ou à tout le moins, un scenario de code ? faut-il pour cela aussi
prévoir des équipes de soutien psychologique ?

Sylvain.
Avatar
James Kanze
On Oct 28, 10:09 pm, "Alex" wrote:
"Jean-Marc Bourguet" wrote in message
>> 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.



Oui, dans le monde réel, où tout est sur google ou google
groups et où on n'a pas de temps à perdre à réinventer la
roue...



Tu ne dois pas être très exigeant en ce qui concerne la qualité,
si ce que tu trouves comme ça, à travers Google, fait l'affaire.

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Avatar
David Fleury
Sylvain SF a écrit :
David Fleury a écrit :

Mais je pose la question pour savoir si ça gêne ou pas de demander du
code.



tu peux expliquer ?!

si cela te gêne ... parce que tu as expérimenté que cela amenait
à de mauvaises conclusions, ou à aucune conclusion, en effet il
n'est peut être pas utile d'insister, mais sinon ?

un postulant serait perturbé en 2008 de devoir produire du code,
ou à tout le moins, un scenario de code ? faut-il pour cela aussi
prévoir des équipes de soutien psychologique ?




Non, je pose la question au candidat, si je peux lui demander du code à
lui. Moi, j'attends du code, s'il me dit non, on va devoir en discuter.
Par exemple dans un autre post de la discussion, les questions ne
semblaient être que des points techniques du C++ mais pas de code réel.

Soutien psychologique, pourquoi pas ;) mais après embauche :D
Avatar
Jerome
James Kanze wrote:
On Oct 28, 10:09 pm, "Alex" wrote:
"Jean-Marc Bourguet" wrote in message
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.





Oui, dans le monde réel, où tout est sur google ou google
groups et où on n'a pas de temps à perdre à réinventer la
roue...



Tu ne dois pas être très exigeant en ce qui concerne la qualité,
si ce que tu trouves comme ça, à travers Google, fait l'affaire.




Il n'y a pas de "qualité" dans un code d'une fonction dont on demande
qu'il retourne le résultat, sans ramer.
Et en recoupant tous les exemples de google, on trouve effecivement
tout, et au contraire de l'excellent code (surtout sous Win quand ca
vient de MS (Msdn))
Avatar
Alex
"James Kanze" wrote in message
news:505ac881-08fb-4bec-a579-
Oui, dans le monde réel, où tout est sur google ou google
groups et où on n'a pas de temps à perdre à réinventer la
roue...





Tu ne dois pas être très exigeant en ce qui concerne la qualité,
si ce que tu trouves comme ça, à travers Google, fait l'affaire.



Bien sûr, il faut choisir la source !
Si tu copies du code du siteduzeo ou developpez, où c'est déjà du
copier-coller de diverses sources par des gosses de 10-15 ans, on ne pourra
pas faire pire, évidemment
Mais si tu copies d'après les sources de Linux ou Windows, ou depuis google
groups venant de divers gurus (Stroustrup et autres), tu ne feras
certainement pas mieux en partant de zéro et tu perdras du temps.
Avatar
Alp Mestan
On 29 oct, 09:20, "Alex" wrote:
"James Kanze" wrote in message

news:505ac881-08fb-4bec-a579-

>> Oui, dans le monde réel, où tout est sur google ou google
>> groups et où on n'a pas de temps à perdre à réinventer la
>> roue...
>Tu ne dois pas être très exigeant en ce qui concerne la qualité,
>si ce que tu trouves comme ça, à travers Google, fait l'affaire.

Bien sûr, il faut choisir la source !
Si tu copies du code du siteduzeo ou developpez, où c'est déjà du
copier-coller de diverses sources par des gosses de 10-15 ans, on ne pour ra
pas faire pire, évidemment
Mais si tu copies d'après les sources de Linux ou Windows, ou depuis go ogle
groups venant de divers gurus (Stroustrup et autres), tu ne feras
certainement pas mieux en partant de zéro et tu perdras du temps.



Par contre je ferai désormais attention de ne plus copier une ligne de
code venant de toi.
Pour le siteduzero, je suis d'accord.
Pour Developpez, tu te trompes allègrement, mais on peut en discuter
en privé si tu veux.
(après, bien sûr, en allant dans le forum "Débuter" de C++, tu ne
trouveras que du code de débutant je te l'accorde)

Pour le PO : je dirais que les questions dépendent fortement du poste.
Si vous devez concevoir énormément de choses génériques et
réutilisables, peut-être plus poser des questions sur les spécificit és
OO du C++, voir même sur les techniques de programmation générique,
plutôt que renverser une chaîne. Par contre, s'il s'agit de pondre un
code qui certes aura à être maintenu mais ne servira que dans le
logiciel en cours de réalisation, il faut peut-être plus s'orienter
vers des questions de C++ assez générales, et un peu d'algorithmique.
Enfin c'est mon point de vue.
1 2 3 4 5