Révisions en C++ - test ?

Moi je pose des questions dessus oui. C’est bien un mec motive qui a ses projets perso :stuck_out_tongue:

Chez nous c’est considéré comme hyper-important, généralement on focus même l’entretien dessus. Et surtout on aime bien voir du code, histoire de se rendre compte comment c’est structuré. Puis par expérience, je peux vous dire que les mecs qui n’ont aucun projet perso à montrer n’ont généralement pas un niveau terrible (je parle de ceux qui sortent de l’école).

Ceci dit, je ne suis pas sûr que nombreux soient les employeurs qui y attachent de l’importance, faut voir quel domaine on vise.

eh oui, j’assume j’ai jamais appris à correctement programmer. Par contre j’ai appris les méthodes pour faire de la détection de contours, de la classification etc… Dans beaucoup d’écoles d’ingé on apprend pas à programmer correctement, et pourtant c’est ce que jugent les employeurs (je comprends tout de même).
Mon gros souci c’est la propreté du code. Je sais que demain je lui ferai pas un bon code, parce que je suis pas bon là-dedans, tout le monde ne peut pas être excellent. Arrêtez l’élitisme. Ca me fait penser à la première bd de gloP.

Elitisme ? Bah j’en vois pas dans ce qu’on raconte. Le mec qui recrute un programmeur, il vérifie qu’il sait bien programmer, et pour bien programmer faut programmer beaucoup. Et quand je dis programmer beaucoup, j’ai jamais dit qu’il fallait être doué ou être un génie, juste qu’il faut y investir du temps. Y’a pas d’élitisme là-dedans. Ne prends pas mal ce que je vais dire, mais si tu cherches des “tuyaux” qu’il suffit de bien bloquer pour réussir un entretien d’embauche en C++ sans vraiment avoir d’expérience, c’est très mal barré.

[quote=“ezeeckiel, post:43, topic: 29127”]eh oui, j’assume j’ai jamais appris à correctement programmer. Par contre j’ai appris les méthodes pour faire de la détection de contours, de la classification etc… Dans beaucoup d’écoles d’ingé on apprend pas à programmer correctement, et pourtant c’est ce que jugent les employeurs (je comprends tout de même).
Mon gros souci c’est la propreté du code. Je sais que demain je lui ferai pas un bon code, parce que je suis pas bon là-dedans, tout le monde ne peut pas être excellent. Arrêtez l’élitisme. Ca me fait penser à la première bd de gloP.[/quote]
Bah c’est pas de l’élitisme. C’est juste que ça fait un peu partie intégrante des bases de la programmation. Le plus important n’est pas de connaître sur le bout des doigts tous les algo ou principes de programmation, mais de savoir écrire un algo et de l’évaluer a priori.
Je me doute bien qu’on peut appliquer des algos connus sans en connaître le fond, mais ça limite quand même beaucoup les possibilités d’adaptation.
Si le boulot que tu veux faire te correspond vraiment, la partie programmation n’est peut être pas aussi importante que ça.

j’espère !
j’espère aussi que cette épreuve est pas éliminatoire.
De manière générale si je dois implémenter quelque chose, je cherche d’abord si quelqu’un ne l’a pas fait, et sinon j’en discute avec les collègues, amis pour avoir plusieurs points de vue différents. Après tout c’est ça bosser en équipe (une phrase qui plaît tellement).
Et si tu es pas en équipe, tu disposes du net pour poser tes questions. Il y a plein de gens plus doués que moi (vous je sais pas) qui m’aideront par passion à arranger mon code.

Bon, allez, pour la route, des tests faciles (même moi, j’ai à peu près trouvé) :

  1. Using the variable a, give definitions for the following:
    a) An integer
    :stuck_out_tongue: A pointer to an integer
    c) A pointer to a pointer to an integer
    d) An array of 10 integers
    e) An array of 10 pointers to integers
    f) A pointer to an array of 10 integers
    g) A pointer to a function that takes an integer as an argument and returns an integer
    h) An array of ten pointers to functions that take an integer argument and return an integer

et

What are the uses of the keyword static?

vous en conviendrez, c’est du classique. Bon, c’est pas de l’algorithmie… attendez, je vais vous en trouver un sympa…

Celui-là vient de la boite où j’ai bossée en premier. J’ai eu de la chance j’ai pas passé d’entretien technique cette fois-là.

Recherche du plus grand palindrome dans un suite de caractère (plus difficile,
20 minutes)
Exemple:
SL"JOZIZOJ"CL
« LAVAL »
SLVIAJDDHYDH"ZJZ"
(et ca vaut 10 points dans le test)

me demandez pas la réponse, je ne la connais pas.

source 1 : www.embedded.com

Mouais… Le coup du palindrôme je trouve ça intéressant, par contre les définitions, beuh. Franchement, un array de pointeurs de fonctions… Le premier qui me pond ça dans un code C++ au boulot je lui casse un bras. C’est le truc que je reproche à pas mal de soi-disants “tests” de programmation, c’est que ça se focus sur des subtilités qu’on utilise jamais. Et du coup, ça teste pas les compétences en programmation du candidat, mais sa faculté à mémoriser les tuyaux dont je parlais plus haut.

au moins on est d’accord là-dessus !
'tain le stress !

edit : faux 'te

Sinon yavait une question que j’avais une fois posée ici que KiniK (il me semble) avait trouvé être une très bonne question pour un entretien (faut dire, elle était fourbe).

Ayé, retrouvé: http://www.cafzone.net/ipb/index.php?showtopic=24329. Notez que le problème est plus complexe qu’il n’y parait à la base, et qu’il ya quelques petites blagues.

Ps: si un jour vous passez un entretien avec KiniK, méfiez vous, ca peut tomber :stuck_out_tongue:

salut !

entretien terminé après 4H.
Bilan, j’ai assez avancé dans l’algo qu’on m’a donné, plus que la moyenne des gens.

Mais bon, 5 minutes pour parler du cv, et hop, sur la bécane. Comme quoi, je suis pas fou en disant que y’a que ça qui compte. D’ailleurs pas de tableau blanc, rien du tout, j’étais sur la bécane, seul tout, et quand j’avais fini, je pouvais appeler le gars.

L’algo pour ceux que ca intéresse. Ca porte sur les palindromes ('tain pourquoi j’ai pas cherché la soluce! !! je sais, je cherchais d’autres exos).
Soit un string.
Trouvez le plus petit nombre de lettres à retirer pour obtenir le pus grand palindrome possible.
exemples :
anna - 0 lettres
hallo - 3 lettes
programmeerwedstrijd - 14 lettres (ai-je dit que je passais l’entretien en néerlandais ?)

c’est clair ou j’explique ?

anna est un aplindrome, donc 0 lettres
hallo comporte un palindrome, c’est “ll”. Si on regarde à droite ett à gauche de “ll”, on voit bien qu’il n’y pas de quoi rallonger ce palindrome
programmeerwedstrijd comporte deux palindromes “mm” et “ee”. Si on regarde à partir de “mm” (pour “ee” c’est la même chose dans cet exemple) à droite et à gauche on voit 2 R se répêter. Le palindrome devient RRMMRR. La réponse est donc de retirer les lettres “pogaeewedstijd”, soit 14 lettres.

J’ai pas vraiment fini, mais au moins mon algo marchait pour les cas proposés. J’ai bien vu deux ou trois autres subtilités, mais j’avais pas la moindre idée comment les résoudre.

Non, tu le passais où ? Je ne pense avoir vu personne en costard aujourd’hui, donc c’est pas chez nous :stuck_out_tongue:

dans une boite qui s’appelle indg et qui se trouve à groningen (180 km au nord-est d’Amsterdam… cad très très haut dans les pays-bas)

Ah oui, carrément :stuck_out_tongue: Je ne suis pas si haut, nord-ouest de la Belgique.

tiens tu connais multitel à Mons ? C’est là que j’ai bossé en sortant de mon école. Ils font aussi un test technique d’entrée, je le colle en dessous pour ceux que ca intéresse. Ca part facile et après ca devient plus chaud.

Connaissance générales en informatiques

Que pouvez vous dire sur:

MIPS (million instructions per second)
JPEG (Joint Photographic Experts Group)
DHCP (Dynamic Host Configuration Protocol)
XML (Extensible Markup Language)
STL (Standard Template Library)
LATEX
SQL (Structured Query Language)
UML (Unified Modeling Language)
YUV (Luminance-Bandwidth-Chrominance code)

0.5 point si ca dit qqchose
1 point pour une vrai connaissance
total 9 points.

C/C++

  1. Which is not valid in C?

a) class aClass{public:int x;};
:stuck_out_tongue: /* A comment */
c) char x=12;

  1. Which command properly allocates memory?

a) char *a=new char[20];
:stuck_out_tongue: char a=new char[20];
c) char a=new char(20.0);

  1. What character terminates all character array strings

a) \0
:stuck_out_tongue: .
c) \END

  1. If you push the numbers (in order) 1, 3, and 5 onto a stack, which pops out first?

a) 5
:stuck_out_tongue: 1
c) 3

  1. What function initalizes variables in a class:

a) Constructor
B) Destructor
c) Constitutor

  1. Which sort is best for the set: 1 2 3 5 4

a) Quick Sort
:- Bubble Sort
c) Merge Sort

  1. What is the maximum value of a unsigned char?

a) 255
:wink: 256
c) 128

  1. In int main(int argc, char *argv[]) what is argv[0]?

a) The first argument passed into the program
:smiley: The program name
c) You can’t define main like that.

  1. What will happen:
    int x;
    while(x<100)
    {
    cout<<x;
    x++;
    }

a) Outputs 0123…99
:stuck_out_tongue: Outputs 0123…100
c) Other

  1. What is the correct syntax for inheritance

a) class aclass : public superclass
:smiley: class aclass inherit superclass
c) class aclass <-superclass

  1. What does the break; do in the following?
    void afunction()
    {
    if(1)
    {
    break;
    a_function();
    cout<<« Err »;
    }
    }

a) Breaks out of the if statement
:stuck_out_tongue: Exits the function
c) Nothing (Compiler error)

  1. What are pointers, when declared, intialized to?

a) NULL
:smiley: Newly allocated memory
c) Nothing. Its random.

  1. Spell Stroustrup. Just kidding. Which uses less memory?

a) struct astruct
{
int x;
float y;
int v;
};
:stuck_out_tongue: union aunion
{
int x;
float v;
};

  1. How long does this loop run: for(int x=0; x=3; x++)

a) Never
:stuck_out_tongue: Three times
c) Forever

Notation: 14 questions à 1 point.

Structure de données

Écrire la définition d’une classe C++ IMAGE. Cette classe représente une matrice 2D de pixel (une tableau bi-dimentionel). On considère le type PIXEL comme étant déjà défini.
(évaluer sur constructeur/destructeur, données membres, accesseur, sections public/protected/private, surcharge des opérateurs, affectation d’image…)

Notation sur 10 points.

Orienté Objet

Soit une hiérarchie de classes REGION (2DBox et 2DPolygon dérivent de 2DRegion)

   2DRegion
      |          |

2DBox 2DPolygon

une méthode de 2DRegion:
virtual bool isPointInside(const Point&) const = 0;

Questions:
2DRegion est-elle une classe abstraite ?
Pourquoi ?
Quel interet ?
La méthode isPointInside doit t-elle définie dans 2DBox ?
Comment ?
2DRegion a t-elle un destructeur ?

Notation sur 10 points.

Algorithmie

  • Écrire un algorithme qui cherche la position d’une sous chaîne de caractères A dans une chaîne de caractère B (facile, 10 minutes)

Exemple:
A=tune
B=iletaitunefois
resultat=7

Notation: 5 points.

  • Recherche du plus grand palindrome dans un suite de caractère (plus difficile, 20 minutes)

Exemple:
SL"JOZIZOJ"CL
« LAVAL »
SLVIAJDDHYDH"ZJZ"

Notation: 10 points.

  • Écrire un algorithme qui cherche dans une image binaire (noir et blanc) le nombre de pixels de la plus grande zone. Une zone est un ensemble de pixel blanc 4-connectés (encore plus difficile minimum 30 minutes).

Notation: 15 points.

Ouais je connais bien, j’ai fait mon mémoire à Materia Nova (juste à côté, même bâtiment) et j’ai deux amis très proches qui bossent à Multitel (Fabrice V. et Jean-François S.)

Moi je pose ce genre de questions simples :[ul]
[li]Dans quels cas un programme peut consommer plus de mémoire virtuelle que de mémoire physique ?[/li][li]En C, pourquoi est-ce que c’est l’appellant qui rétablit la pile ?[/li][li]Sur un OS 32-bit de type Unix ou NT, est-il possible d’utiliser plus de 4 Go de mémoire physique (hors PAE ou AWE-like) ?[/li][li]Qu’est-ce qu’un compromis temps-mémoire ?[/li][li]Qu’est-ce qu’une buffer overflow ?[/li][li]etc.[/li][/ul]Ensuite, selon les réponses je fais faire un petit test de C/C++. Selon le résultat je passe ensuite aux questions de logiques du type “Comment faire pour déplacer un continent”, etc.

A mes yeux ce n’est pas grave de se tromper, ce qui compte c’est comment on se trompe et le comportement du candidat. Je ne me bloque pas en cas d’erreur car il est possible que la formulation des questions soit déroutante ou autre, il faut prendre son temps pour expliquer. On essaye aussi d’être à plusieurs lors des entretiens et d’en faire plusieurs.

Mais ce n’est pas la charité non plus, si techniquement le candidat n’est pas à la hauteur, out.

Moloch, je serai bien incapable de répondre à la moindre de ces questions. Tu as appris ça où ? à l’école ou tout seul ?
Et quelles sont les réponses ?

Bah avec le temps, et à l’école tu vois un peu d’architecture des OS et des compilateurs non ? Enfin à mon époque c’était comme ça. Je trouve pas mes questions si dures. :s Pour moi un ingénieur doit savoir y répondre, sinon ça veut dire qu’il ne comprend pas ce qu’il fait.

Pour les débutants on les prend en stage et si ça se passe bien on les recrute.

vous serez ravis d’apprendre que j’ai passé le test technique avec succès, mais qu’on en m’a pas donné le boulot. Je ne parle pas suffisament bien néerlandais selon eux. Pour l’anecdote, ils sont passés par le bureau de recrutement pour m’annoncer la nouvelle. Quelle lâcheté tout de même !

Il va de soi que je pense que c’est une excuse comme une autre. Vous ne pouvez pas juger de mon néerlandais, mais si j’ai passé le premier entretien (une heure de discussion sur mon cv etc…) c’est que mon néerlandais était suffisant. Et puis à quoi ca sert de dire que je pourrai améliorer mon c++ … n’est-ce pas la même chose pour mon hollandais ?

Tout ça pour dire que ca me réconcilie pas avec les entreprises et leurs méthodes de recrutement/gestion de personnel.

Si tu as vraiment besoin d’un TAF dans l’info et que tu es prêt à descendre sur Paris, ma boite recrute.