Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-47%
Le deal à ne pas rater :
SAMSUNG T7 Shield Bleu – SSD Externe 1 To à 89,99€
89.99 € 169.99 €
Voir le deal

Test de recrutement Google.Company - C/C++

3 participants

Aller en bas

Test de recrutement Google.Company - C/C++ Empty Test de recrutement Google.Company - C/C++

Message par Napoléon Mer 14 Nov - 18:46

TEST DE NIVEAU EN C/C++ DUREE=30min

Please complete answers to the following questions without assistance, in consideration for the Software Engineer, EU Headquarters position. There is usually not a single “right” answer. Please return the completed questionnaire to your Recruiter within half an hour.


Q1: The following program should print B when called with no arguments and C otherwise. Why is it not working?

Code:
    #include <iostream>

    using namespace std;

    struct A { };

    struct B : A
    {
        ~B() { cout << "B"; }
    };

    struct C : A
    {
        ~C() { cout << "C"; }
    };

    int main(int argc, char **)
    {
        A *a;
        if(argc==1) a = new B();
        else a = new C();
        cout << "Object: ";
        delete a;
        cout << endl;
    }


Q2: What's wrong with the following snippets of code, if anything?

Q2a:
Code:
    #define BAD_REQ "/status"

    bool checkRequest(const char * request) {
      if (request == BAD_REQ) {
        return false;
      }
      return true;
    }

Q2b:
Code:
    int main() {
      char *x = "hello world\n";
      x[1] = 'a';
      printf(x);   
    }

Q3: What does this code do? What could it be useful for?

Code:
    for (n->Next = n->Left; n != NULL; n = n->Next) {
        n->Left->Next = n->Right;
        n->Right->Next = n->Next->Left;
    }
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7875
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
Test de recrutement Google.Company - C/C++ Left_bar_bleue999/1000Test de recrutement Google.Company - C/C++ Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

Test de recrutement Google.Company - C/C++ Empty Re: Test de recrutement Google.Company - C/C++

Message par manianis Jeu 15 Nov - 20:18

Q1 :
Vous utilisez un destructeur dans une structure struct. Il faudra utilser la mot clé class.

Q2a:
On ne compare pas deux chaines de cette manières.
On remplacera la condition par strcmp(request, BAD_REQ) == 0)

Q2b:
x est bien un pointeur sur un caractère ou une séquence de caractères qui n'a pas été allouée.

Q3:
Il me semble que vous êtes entrain de parcourir une branche d'un arbre binaire.

manianis
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6258
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
Test de recrutement Google.Company - C/C++ Left_bar_bleue999/1000Test de recrutement Google.Company - C/C++ Empty_bar_bleue  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

Test de recrutement Google.Company - C/C++ Empty Re: Test de recrutement Google.Company - C/C++

Message par Napoléon Ven 16 Nov - 2:16

[quote="manianis"]Q1 :
Vous utilisez un destructeur dans une structure struct. Il faudra utilser la mot clé class.

Le destructeur devrait être déclarée VIRTUAL parce qu'il va être redéfini dans les classes dérivées.

manianis a écrit:Q2a:
On ne compare pas deux chaines de cette manières.
On remplacera la condition par strcmp(request, BAD_REQ) == 0)
Je crois que c'est la seule erreur dans cette question.

manianis a écrit:Q2b:
x est bien un pointeur sur un caractère ou une séquence de caractères qui n'a pas été allouée.

char *x = "hello world\n"; ==> l'allocation est automatique ici. Le compilateur fera automatiquement x=(char*)malloc(...)

printf(x); ==> Elle est correcte: puisque printf exige que les paramètres d'entrée soient des CONST CHAR* ce qui est le cas ici.

x[1] = 'a'; ==> c'est la seule erreur dans cette question. D'ailleurs, j'ai oublié comment on peut modifier un caractère dans une chaine de caractère!scratch scratch scratch

manianis a écrit:Q3:
Il me semble que vous êtes entrain de parcourir une branche d'un arbre binaire.

Je crois que c'est un arbre au moins 3-R (càd chaque noeud possède 3 fils)
Ici, les trois fils de chaque noeud sont: LEFT, RIGHT et NEXT.
Je crois que cet boucle transforme un arbre 3-R en un arbre binaire tels que les fils gauches et droits peuvent communiquer entre eux à travers le pointeur NEXT. càd le NEXT d'un du fils GAUCHE et le fils DROITE et vice versa.

Merci manianis pour les explications.
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7875
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
Test de recrutement Google.Company - C/C++ Left_bar_bleue999/1000Test de recrutement Google.Company - C/C++ Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

Test de recrutement Google.Company - C/C++ Empty Re: Test de recrutement Google.Company - C/C++

Message par manianis Ven 16 Nov - 11:20

Non, le compilateur ne fait pas l'allocation automatique de x. Et
x[1] = 'a';
est correcte.

Si tu es un développeur Java ce que tu dis est vrai car les chaines de Java sont immutables alors que celles de C/C++ ne le sont pas et on peut accéder à n'importe quel caractères en Lecture/Ecriture.

manianis
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6258
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
Test de recrutement Google.Company - C/C++ Left_bar_bleue999/1000Test de recrutement Google.Company - C/C++ Empty_bar_bleue  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

Test de recrutement Google.Company - C/C++ Empty Re: Test de recrutement Google.Company - C/C++

Message par Napoléon Ven 16 Nov - 11:45

manianis a écrit:Non, le compilateur ne fait pas l'allocation automatique de x. Et
x[1] = 'a';
est correcte.

Si tu es un développeur Java ce que tu dis est vrai car les chaines de Java sont immutables alors que celles de C/C++ ne le sont pas et on peut accéder à n'importe quel caractères en Lecture/Ecriture.

J'ai testé le code source sur le compilateur C/C++ de Microsoft Visual C++ version 6.0. Et c'est tout à fait le contraire de ce que vous avez dit manianis Smile Je crois que ça dépend du compilateur, et dans ce cas, on devrait avoir deux compilateurs différents moi et toi. Sinon c'est absurde...
C'est quel compilateur le tien?
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7875
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
Test de recrutement Google.Company - C/C++ Left_bar_bleue999/1000Test de recrutement Google.Company - C/C++ Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

Test de recrutement Google.Company - C/C++ Empty Re: Test de recrutement Google.Company - C/C++

Message par informix Ven 16 Nov - 18:08

Le dernier exercice est très difficile pour moins que 30min... !!!Sad
informix
informix
Nombre Rationnel
Nombre Rationnel

Nombre de messages : 399
Réputation : 4
Points : 6529
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
Test de recrutement Google.Company - C/C++ Left_bar_bleue1000/1000Test de recrutement Google.Company - C/C++ Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

Test de recrutement Google.Company - C/C++ Empty Re: Test de recrutement Google.Company - C/C++

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum