Test de recrutement Google.Company - C/C++
3 participants
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;
}
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7875
Date d'inscription : 19/03/2007
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- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6258
Date d'inscription : 11/10/2007
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.
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.
Je crois que c'est la seule erreur dans cette question.manianis a écrit:Q2a:
On ne compare pas deux chaines de cette manières.
On remplacera la condition par strcmp(request, BAD_REQ) == 0)
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.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7875
Date d'inscription : 19/03/2007
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- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6258
Date d'inscription : 11/10/2007
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 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- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7875
Date d'inscription : 19/03/2007
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- Nombre Rationnel
- Nombre de messages : 399
Réputation : 4
Points : 6529
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Sujets similaires
» Google crée un algorithme anti "Google bombs"
» Recrutement: informaticien
» TEST DE QI
» Le test resto !!!
» Test de primalité récursif
» Recrutement: informaticien
» TEST DE QI
» Le test resto !!!
» Test de primalité récursif
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum