Test de recrutement Google.Company - C/C++
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1•
Test de recrutement Google.Company - C/C++
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?
Q2: What's wrong with the following snippets of code, if anything?
Q2a:
Q2b:
Q3: What does this code do? What could it be useful for?
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;
}
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Test de recrutement Google.Company - C/C++
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.
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- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Test de recrutement Google.Company - C/C++
[quote="manianis"]Q1 :
Vous utilisez un destructeur dans une structure struct. Il faudra utilser la mot clé class.
Je crois que c'est la seule erreur dans cette question.
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!
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.
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!
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.
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Test de recrutement Google.Company - C/C++
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.
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- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Test de recrutement Google.Company - C/C++
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
C'est quel compilateur le tien?
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Test de recrutement Google.Company - C/C++
Le dernier exercice est très difficile pour moins que 30min... !!!
informix, Ecole d'ingénieurs
Les passions font vivre l'Homme; sa sagesse le fait seulement durer.
Les passions font vivre l'Homme; sa sagesse le fait seulement durer.

informix- Membre fondamental

- Messages : 350
Inscrit le : 19 Mar 2007
Feuille de personnage
Capacité linguistique:


(1000/1000)




