QCM Recrutement ? [C++] - C++ - Programmation
Marsh Posté le 23-11-2004 à 17:40:59
Demande à Taz, comme ça, dans 10 ans, la place sera toujours libre...
Marsh Posté le 23-11-2004 à 17:46:57
Une piste:
http://www.developpez.net/forums/v [...] highlight=
Marsh Posté le 23-11-2004 à 17:49:33
Un début de truc là: http://www.techinterviews.com/index.php?cat=2
Marsh Posté le 23-11-2004 à 18:03:06
Et épluche les FAQ aussi, y'a matière à en sortir des questions.
Sinon j'ai quelques questions vicieuses du genre:
Code :
|
est-ce que ce code compile ?
Marsh Posté le 23-11-2004 à 18:46:13
Hermes le Messager a écrit : Demande à Taz, comme ça, dans 10 ans, la place sera toujours libre... |
n'empêche, je suis sur que j'arriverais à faire un sacré bon test pour détecter les bidouilleurs de CV
Marsh Posté le 23-11-2004 à 18:51:15
J'imagine le genre.
Combien de permutations de modifieurs sont légales et raisonnables en C++, en considérant static, auto, register, const, long, extern, unsigned et _gc (ça c'est pour disqualifier les linuxiens).
Ecrivez le prototype d'une fonction f qui prend comme argument un pointeur sur fonction, de telle sorte que l'on puisse écrire f(f);
Marsh Posté le 23-11-2004 à 19:02:48
tu peux t'aider de cette page aussi
genre "bonjour monsieur, que fait la fonction f?"
Code :
|
Marsh Posté le 23-11-2004 à 19:03:15
ReplyMarsh Posté le 23-11-2004 à 19:05:04
-La virtualité comme valeur contredisant les droits de l'homme ? commentez
Marsh Posté le 23-11-2004 à 19:05:34
moi je ferais des questions assez simples genre (à pondérer):
- combien vaut l'expression 'sizeof(char)' ?
- quel est le mode d'héritage par défaut d'une 'struct' ?
- 'while(!stream.eof()) { getline(stream, line; }' est il un usage correct de la fonction membre 'eof()' ?
- un destructeur peut-il être virtual pure ?
- à quoi servent les mots clef 'mutable' et 'explicit' ?
- quelle est la différence entre une 'std::map<>' et une 'std::multimap<>' ?
- a-t-on toujours la propriété 's.size() == strlen(s.c_str())' où 's' est une instance de 'std::string' ?
- quel est le type de la constante '3.14' ?
après, selon le niveau, on peut pousser un peu :
question subsidiaire (pour départager si vraiment serré):
- écrire une fonction déterminant le nombre d'éléments d'un tableau à la compilation
le tout, ça serait de faire des question attendant des réponses très courtes (moins d'une phrase) puis de demander l'écriture d'un petit programme (en 15 minutes, sans que le candidat ait a recherché l'algorithme (comme la question subsidiaire par exemple))
Marsh Posté le 23-11-2004 à 19:07:00
Taz a écrit : |
jsaurais meme pas dire tiens
Marsh Posté le 23-11-2004 à 19:07:07
Masklinn a écrit : tu peux t'aider de cette page aussi
|
mieux
Code :
|
que vaut
Code :
|
?
Marsh Posté le 23-11-2004 à 19:09:00
deja je poserais une question con : comment represente t'on une chaine de caractere en c++ ?
ca devrait deja bien faire le tri
Marsh Posté le 23-11-2004 à 19:12:47
+1
J'opterais pour un programme tout simple : saisir 10 entiers et les trier. Aucune autre info. Il rend son code, tu vois vite s'il est soucieux des vérifs, s'il réinvente la roue, s'il fait du C, s'il obfusque, s'il est lent...
Marsh Posté le 23-11-2004 à 19:16:35
Je rajouterais une question comme:
Ecrivez un programme qui donne les arguments passés en ligne de commande dans leur ordre alphabétique.
Ca permet de voir si les bases de string et set/multiset sont comprises.
Ecrivez le même si vous souhaitez stocker représentation entière des données passées en argument, et pouvoir réutiliser ces données ordonnées un grand nombre de fois de la façon la plus optimale possible (et argumentez).
Ca permet de voir les malins qui savent se servir de stringstream, et de sort et vector.
Marsh Posté le 23-11-2004 à 20:45:25
un exemple de ce que j'ai eu a affronter pour ma part :
Rien d'exeptionnel, mais parfois il vaut mieux s'assurer que les bases sont la et bien la plutot que de taper dans le folklorique.
Le niveau du test depend aussi du niveau du gars qui est vise (etudiant fraichement diplome ou serial programmer)
Code :
|
Marsh Posté le 23-11-2004 à 23:49:59
Moi je regarderais aussi si le mec fait du C en pensant faire du C++.
Marsh Posté le 24-11-2004 à 00:45:12
Citation : combien vaut l'expression 'sizeof(char)' ? la taille d'un char |
Il veut connaitre la teille d'un char...
Batailler sur 3.14 ou 3.14f je sais pas si c'est une bonne idée. Un mec qui a 2 ans d'exp en C++ mais une autre activité depuis quelques mois a le droit d'avoir du flou sur la syntaxe du langage. La syntaxe ça revient en quelques jours. Par contre des trucs comme le destructeur virtuel, le réflexe STL, etc... c'est un vrai critère AMHA.
Marsh Posté le 24-11-2004 à 09:07:20
Moi je poserais aussi 2-3 questions sur quelques design patterns de base, histoire de savoir si le candidat est sensibilisé aux problèmes de design, genre, "A quoi sert un singleton ? Comment le coderiez-vous ? Dans quel cas utiliser un object factory ? Donnez un exemple." Ou bien : "Dans quels cas utiliseriez-vous un pointeur de fonction ? Dans quels cas vous pouvez éviter de les utiliser (discutez des avantages et des inconvénients) ? Comment raffiner le concept de callback ?".
Le gars qui répond correctement à toutes ces questions et à quelques-unes de Taz, moi je le prends !
Marsh Posté le 24-11-2004 à 13:23:24
Roob a écrit : En même temps la taille d'un char peut varier d'un compilo à l autre. Je ne sais pas si la norme C++ spécifie que la taille d'un char est forcement 1 octet quel que soit la plateforme. |
tu t'enfonces là ... on aurait bien fait de pas de prendre
Marsh Posté le 24-11-2004 à 13:27:54
mais le questionnaire, c'est pas pour fait si c'est vital ou pas. C'est fait pour juger de la connaissance globale. Moi je vois la (les) réponses de Roob, je vois qu'il n'a jamais lu quoi que ce soit. Ça ressemble à du 'ça compile, c'est bon'
Marsh Posté le 24-11-2004 à 13:33:31
ben tu vois, sur ce point, je trouve que c'est tout sauf du C++. En théorie objet, le cycle de vie d'un objet se termine par un destructeur/finaliseur. En C++, une fonction virtuelle pure n'a pas d'implémentation. Or un objet, même instanciable, à toujours un destructeur. Donc définir un destructeur virtuel pure est un non-sens.
Marsh Posté le 24-11-2004 à 13:34:15
(à ce rythme, je crois que je peux rayer tout langage de mon CV...ça va être sympa le jour où je devrai chercher un taf...)
Marsh Posté le 24-11-2004 à 13:36:38
Taz a écrit : Donc définir un destructeur virtuel pure est un non-sens. |
C'est marrant, moi je suis pas d'accord.
D'ailleurs, ça a été évoqué il n'y a pas longtemps. Si tu veux faire une classe abstraite, c'est très pratique de pouvoir faire:
Code :
|
Marsh Posté le 24-11-2004 à 13:40:44
Disons que ça ne sert à rien d'avoir un questionnaire ou c'est tout ou rien. Le plus important, c'est de mettre un poids à chaque question, de regarder la note globale, et de regarder si la personne a le niveau nécessaire.
En plus, suivant le poste (junior ou guru), le niveau attendu n'est pas le même... Donc un mec qui n'a jamais entendu parler de std::string, je ne le prends pas. Mais un mec qui n'est pas capable de m'écrire un pointeur sur fonction membre de tête, il n'est pas éliminé d'office.
Marsh Posté le 24-11-2004 à 13:41:26
Lam's a écrit : Disons que ça ne sert à rien d'avoir un questionnaire ou c'est tout ou rien. Le plus important, c'est de mettre un poids à chaque question, de regarder la note globale, et de regarder si la personne a le niveau nécessaire. |
\o/
Tout n'est pas perdu...
Marsh Posté le 24-11-2004 à 13:46:06
Roob a écrit : ouais mais la il n'est pas virtuel pure (oul alors j'dois me gourrer quand à cette notion) |
Citation : An abstract class contains at least one pure virtual function. Specify a virtual function as pure by placing = 0 at the end of its declaration. You don't have to supply a definition for a pure virtual function. |
Ne pas confondre "don't have to" avec "cannot".
Marsh Posté le 24-11-2004 à 14:26:15
ReplyMarsh Posté le 24-11-2004 à 15:20:27
Bonjour à tous et merci pour vos nombreuses remarques/suggestions.
Je dégage quelques voies :
-Pas d'obfuscating code.
-Pas de question de trop générale, qui peuvent être posées pour n'importe quel language (elle font l'objet d'un autre QCM)
-Considérer le QCM comme un outil, pas une fin en soit (ce qui était déjà le cas).
Merci encore à tous.
Marsh Posté le 24-11-2004 à 15:31:19
Pour info, M. Serge a combien de pratique de C++ ?
J'avais lu qu'il fallait au bas mot 18 mois de pratique (quotidienne) de C++ pour maîtriser le langage.
Pour plus d'explications l'histoire du destructeur virtuel [pur] est traitée ici:
http://c.developpez.com/faq/cpp/?p [...] UR_virtuel
http://c.developpez.com/faq/cpp/?p [...] n_vituelle
Marsh Posté le 24-11-2004 à 16:16:02
un destructeur virtuel pur ... le concept me turlupine
ca peut servir dans le cadre d'un design factory ?
Marsh Posté le 24-11-2004 à 16:56:01
Ca sert à rendre une classe abstraite, donc là on a besoin d'une classe abstraite ça peut servir.
Marsh Posté le 24-11-2004 à 17:10:52
Lam's a écrit : C'est marrant, moi je suis pas d'accord.
|
oui et comme tu vois, c'est la du laxisme, puisque le destructeur n'est pas virtuel pure : il a bien une définition !
edit : je viens de lire le reste
Marsh Posté le 23-11-2004 à 17:37:04
Bonjour à tous,
Mon chef d'équipe cherche un developpeur C++ et je dois pondre un QCM technique mais je n'ai aucune connaissance en C++. Je cherche donc quelques questions à réponses multiples de niveaux progressifs pour tester les connaissances. Bien évidement, tout cela doit être le plus constructif possible :
1) Detecter les enfumeurs qui ont écrits 3 lignes de C++ dans leur vie.
2) Ne pas être trop typé (par exemple sur les GUI, pasqu'on peut avoir fait du C++ et ne pas avoir developper de GUI)
Toutes les idées sont les bienvenues !!!