Afin d'éviter la fuite de questions, ce rapport ne doit pas être partagé avec les candidats.
Islem Ghouma (ighouma@[Link])
Campagne : Développeur Full Stack Java et Angular - Senior Domaine(s) : Angular 2+, Java, SQL Langage : Français Date : 10/02/2023
MEILLEUR QUE
RANG 1/2
78% DURÉE 0h45 / 1h12
des professionnels SCORE 1 200 / 1 590 (75%)
Angular 2+ 220 / 370pts (59%) MEILLEUR QUE 44% des professionnels
Connaissance du langage 220 / 370pts
Java 600 / 640pts (94%) MEILLEUR QUE 97% des professionnels
Connaissance du langage 180 / 220pts
Fiabilité 83 / 83pts
Modélisation 20 / 20pts
Résolution de problèmes 317 / 317pts
1 / 32
Islem Ghouma (ighouma@[Link])
SQL 380 / 580pts (66%) MEILLEUR QUE 82% des professionnels
Connaissance du langage 320 / 520pts
Modélisation 60 / 60pts
Accéder au rapport détaillé
Question 1: SQL - Clé étrangère n°1
SQL 00:22 / 01:00 20 / 20 pts
Question
D'après le schéma de base de données ci-dessus, indiquer ce qui qualifie le mieux la colonne
customer_id de la table PURCHASE_ORDER .
2 / 32
Islem Ghouma (ighouma@[Link])
Réponse
Clé primaire
Index
Blob
Clé étrangère
Résultat
Réponse correcte
Modélisation +20pts
3 / 32
Islem Ghouma (ighouma@[Link])
Question 2: SQL - DROP
SQL 00:08 / 00:30 20 / 20 pts
Question
Quelle commande SQL est utilisée pour supprimer une table d'une base de données ?
Réponse
DELETE table
TRUNCATE table
DROP table
REMOVE table
Résultat
Réponse correcte
Connaissance du langage +20pts
4 / 32
Islem Ghouma (ighouma@[Link])
Question 3: SQL - Clé primaire
SQL 01:00 / 01:00 1x (6 sec) 40 / 40 pts
Le temps alloué à cette question s'est écoulé. La réponse du
candidat a été automatiquement récupérée à la fin du décompte.
Question
Indiquer quelles propositions sont vraies pour une colonne déclarée en tant que clé primaire.
(plusieurs réponses possibles)
Réponse
Elle ne peut pas contenir de doublons
Elle peut contenir la valeur NULL
Elle ne peut pas être en plus une clé étrangère
Elle peut être déclarée avec un type "caractère" tel que "VARCHAR"
Résultat
Réponse correcte
Modélisation +40pts
5 / 32
Islem Ghouma (ighouma@[Link])
Question 4: SQL - DISTINCT
SQL 01:07 / 05:00 100 / 100 pts
Le temps alloué à cette question s'est écoulé. La réponse du
candidat a été automatiquement récupérée à la fin du décompte.
Question
Modifier la requête pour donner la liste des villes (city) des clients (customer). La liste ne doit pas
contenir de doublon et doit être triée par ordre alphabétique.
N'afficher que la colonne CITY.
Exemple de sortie :
---------------
| CITY |
---------------
| Istanbul |
| Montpellier |
| Tokyo |
---------------
6 / 32
Islem Ghouma (ighouma@[Link])
Réponse
1 -- SQL request(s) below
2 SELECT distinct CITY
3 FROM customer
4 order by city;
Voir le code playback
Résultat
Résultat
Connaissance du langage +100pts
7 / 32
Islem Ghouma (ighouma@[Link])
Question 5: HAVING avec un champ calculé et condition OR
SQL 05:59 / 06:00 0 / 200 pts
Le temps alloué à cette question s'est écoulé. La réponse du
candidat a été automatiquement récupérée à la fin du décompte.
Question
Modèle de données Objectif
Rédigez une requête qui renvoie tous les étudiants dont la note moyenne aux tests de sciences
humaines ( avg_score ) est supérieure ou égale à 0,9. Un test de sciences humaines a un test_name
égal à 'English Test' ou 'History Test'. Conditions
Colonnes attendues : first_name , last_name , avg_score , dans cet ordre. Arrondissez le score
moyen pour ne conserver que deux décimales. Trier les lignes par score moyen (non arrondi), dans
l'ordre décroissant. Exemple :
--------------------------------------
| FIRST_NAME | LAST_NAME | AVG_SCORE |
--------------------------------------
| Joann | Stroik | 0.99 |
| Teddy | Bryant | 0.91 |
| Rebecca | Coffee | 0.91 |
--------------------------------------
8 / 32
Islem Ghouma (ighouma@[Link])
Réponse
1 -- SQL request(s) below
2 SELECT FIRST_NAME,LAST_NAME,ROUND(avg(SCORE),2) as AVG_SCORE
3 FROM students
4 WHERE (TEST_NAME LIKE '%English Test%' or TEST_NAME like '%History Test%')
5 GROUP by FIRST_NAME,LAST_NAME
6 HAVING aV;
Voir le code playback
Résultat
Résultat
Connaissance du langage +200pts
9 / 32
Islem Ghouma (ighouma@[Link])
Question 6: [Vehicle Data Model] SQL - LIKE
SQL 01:33 / 05:00 200 / 200 pts
Question
Modèle de données
Objectif
Extraire les marques ( make ) et modèles ( model ) des véhicules ( vehicle ) dont le nom (
vehicle_name ) commence par la lettre 'G'.
10 / 32
Islem Ghouma (ighouma@[Link])
Conditions
Colonnes attendues : make , model , dans cet ordre. Trier les lignes par ordre alphabétique des
marques et puis des modèles. Exemple :
------------------------
| MAKE | MODEL |
------------------------
| Ford | F150 |
| Toyota | Tercel |
------------------------
Réponse
1 -- SQL request(s) below
2 SELECT MAKE,MODEL
3 FROM vehicle WHERE VEHICLE_NAME LIKE 'G%'
4 order by MAKE,MODEL
Voir le code playback
Résultat
Résultat
Connaissance du langage +200pts
11 / 32
Islem Ghouma (ighouma@[Link])
Question 7: Classe « friendly »
Java 00:10 / 00:20 20 / 20 pts
Question
Déclarer une classe sans niveau d'accès explicite est en général conseillé.
Réponse
Vrai
Faux
Résultat
Réponse correcte
Modélisation +20pts
12 / 32
Islem Ghouma (ighouma@[Link])
Question 8: Classe Object
Java 00:08 / 00:20 20 / 20 pts
Question
public class A {}
Qui est la classe parente de A ?
Réponse
Object
Root
La classe A n'a pas de parent
Résultat
Réponse correcte
Connaissance du langage +20pts
13 / 32
Islem Ghouma (ighouma@[Link])
Question 9: Héritage multiple d'interfaces
Java 00:12 / 00:30 40 / 40 pts
Question
public interface A extends B, C, D {}
Cette interface est correcte si B, C et D sont également des interfaces.
Réponse
Vrai
Faux
Résultat
Réponse correcte
Connaissance du langage +40pts
Question 10: Méthodes par défaut d'interface
Java 00:18 / 00:45 40 / 40 pts
Question
Quelle est la façon correcte de définir une interface avec une implémentation de méhode concrète ?
14 / 32
Islem Ghouma (ighouma@[Link])
Réponse
public interface Product {
public default int getTaxRate() {
return 0;
}
}
public interface Product {
public trait int getTaxRate() {
return 0;
}
}
public interface Product {
public int getTaxRate() {
return 0;
}
}
public interface Product {
public final int getTaxRate() {
return 0;
}
}
Résultat
Réponse correcte
Connaissance du langage +40pts
15 / 32
Islem Ghouma (ighouma@[Link])
Question 11: Fonction Predicate
Java 00:15 / 00:50 40 / 40 pts
Question
En Java 8, quelle interface par défaut peut être utilisée comme une fonction à un argument qui retourne
un booléen ?
Réponse
Optional
Predicate
Functions
Comparator
Résultat
Réponse correcte
Connaissance du langage +40pts
16 / 32
Islem Ghouma (ighouma@[Link])
Question 12: Méthode pour supprimer les espaces
Java 00:40 / 00:40 0 / 40 pts
Le temps alloué à cette question s'est écoulé. La réponse du
candidat a été automatiquement récupérée à la fin du décompte.
Question
En supposant que vous travailliez en Java 11+, quelle est la meilleure méthode pour supprimer les
caractères d'espacement de début et de fin d'une chaîne de caractères ?
Example:
String str = " Hello world. ";
Réponse
[Link]()
[Link]()
[Link]()
[Link]()
[Link]().stripTrailing()
Résultat
Réponse incorrecte
Connaissance du langage +40pts
17 / 32
Islem Ghouma (ighouma@[Link])
Question 13: Méthode stream anyMatch()
Java 00:29 / 01:00 40 / 40 pts
Question
Quelle méthode de Stream permet de vérifier si un certain prédicat correspond à l'un des éléments du
stream ?
Ecrire le nom de la méthode la plus adaptée pour cela.
Réponse
anyMatch
Résultat
Réponse correcte
Connaissance du langage +40pts
Réponse(s) correcte(s)
anyMatch
anyMatch()
18 / 32
Islem Ghouma (ighouma@[Link])
Question 14: Du désordre le plus grand gagne
Java 02:57 / 05:00 100 / 100 pts
Question
Implémentez la méthode [Link](int[] numbers) afin qu'elle retourne le plus
grand nombre dans numbers .
Note : Le tableau contient toujours au moins un nombre.
Réponse
1 import [Link];
2 import [Link];
3
4 class Algorithm {
5
6 /** @return the largest number of the given array */
7 static int findLargest(int[] numbers) {
8
9 return [Link](numbers).max().getAsInt();
10 // Your code goes here
11
12 }
13
14 }
Voir le code playback
Résultat
Fonctionne dans des cas simples
Résolution de problèmes +32pts
Fonctionne quand le tableau contient seulement Integer.MIN_VALUE
Fiabilité +58pts
Fonctionne quand le plus grand élément est à la position 0
Fiabilité +5pts
Fonctionne quand le plus grand élément est à la fin du tableau
Fiabilité +5pts
19 / 32
Islem Ghouma (ighouma@[Link])
Question 15: C'est au fruit que l'on connaît l'arbre
Java 08:11 / 25:00 1x (1 min) 300 / 300 pts
Question
Un arbre est composé de noeuds qui respectent les règles suivantes : Un noeud tient une valeur
correspondant à un entier. Hormis le noeud à la racine de l’arbre, un noeud a toujours un seul autre
noeud qui le référence. Un noeud n’a pas plus de deux enfants, appelés noeud à gauche et noeud à
droite. Si un noeud n’a pas d’enfant à droite ou à gauche, alors la référence correspondante est null .
La valeur tenue par tout enfant du sous arbre à gauche est inférieure à la valeur de son parent et la
valeur tenue par tout enfant du sous arbre à droite est supérieure à la valeur de son parent. Voici un
exemple d’arbre qui respecte ces règles (la racine vaut 9) :
Fig. 1 Pour simplifier le code, tout est combiné dans une simple classe nommée Node . La hauteur de l’
arbre (la distance entre le noeud le plus éloigné et la racine) est comprise entre 0 et 100 000 noeuds.
Question : Implémentez une nouvelle méthode de Node nommée find(int v) qui retourne le noeud
tenant la valeur v . Si ce noeud n’existe pas alors find devra retourner null . Important : Essayez de
privilégier un faible usage de la mémoire RAM. Pour tester votre algorithme, vous pouvez vous exercer à
partir de deux exemples d’arbres : L’arbre présenté ci-dessus (Fig. 1) : la variable small correspond au
noeud racine. Un arbre d’une hauteur de 100 000 noeuds : la variable large correspond au noeud
racine, sachant que le noeud le plus éloigné tient la valeur 0 .
20 / 32
Islem Ghouma (ighouma@[Link])
Réponse
1 class Node {
2
3 // keep these fields
4 Node left, right;
5 int value;
6
7 public Node find(int v){
8 Node current = this;
9 while(current != null){
10 if([Link]== v){
11 return current;
12
13 }
14 current = v < [Link]?[Link]:[Link];
15
16 }
17 return null;
18 }
19
20
21 }
Voir le code playback
Résultat
Les résultats sont correctes avec un arbre d'une 'petite' hauteur
Résolution de problèmes +90pts
Les résultats sont correctes avec un arbre d'une 'grande' hauteur
Résolution de problèmes +195pts
Si le noeud demandé n’existe pas 'null' est retourné
Fiabilité +15pts
21 / 32
Islem Ghouma (ighouma@[Link])
Question 16: Interpolation
Angular 2+ 00:05 / 00:50 20 / 20 pts
Question
Quelle concept Angular est mis en oeuvre dans le template ci-dessous à la ligne 6 pour afficher la
propriété name ?
Réponse
string interpolation
template string
template literal
event binding
Résultat
Réponse correcte
Connaissance du langage +20pts
22 / 32
Islem Ghouma (ighouma@[Link])
Question 17: Directive structurelle
Angular 2+ 00:07 / 00:30 20 / 20 pts
Question
Parmi les propositions suivantes, laquelle n'est pas un directive structurelle d'Angular ?
Réponse
ngIf
ngFor
ngSwitch
ngUnless
Résultat
Réponse correcte
Connaissance du langage +20pts
23 / 32
Islem Ghouma (ighouma@[Link])
Question 18: Import de HttpClientModule
Angular 2+ 00:30 / 00:30 20 / 20 pts
Le temps alloué à cette question s'est écoulé. La réponse du
candidat a été automatiquement récupérée à la fin du décompte.
Question
Quel module doit-on importer pour utiliser le service HttpClient ?
Réponse
HttpClientModule
HttpModule
RequestModule
TransportModule
ClientModule
Résultat
Réponse correcte
Connaissance du langage +20pts
24 / 32
Islem Ghouma (ighouma@[Link])
Question 19: Directive ngFor
Angular 2+ 00:44 / 00:50 40 / 40 pts
Question
Ligne 7, par quoi doit-on remplacer ?? pour que la directive ngFor puisse fonctionner ?
Réponse
of
Résultat
Réponse correcte
Connaissance du langage +40pts
Réponse(s) correcte(s)
of
25 / 32
Islem Ghouma (ighouma@[Link])
of
Question 20: Ajout d'entête HTTP
Angular 2+ 00:18 / 00:40 40 / 40 pts
Question
Qu'utiliseriez-vous pour ajouter le même entête HTTP à tous vos appels HTTP ?
Réponse
Un Injector
Un Interceptor
Par injection de dépendances
L'entête doit être ajouté à chaque appel manuellement
Résultat
Réponse correcte
Connaissance du langage +40pts
26 / 32
Islem Ghouma (ighouma@[Link])
Question 21: Extension Chrome pour debugging
Angular 2+ 00:14 / 00:30 40 / 40 pts
Question
Parmi les propositions ci-contre, quelle est celle qui désigne une extension Chrome pour débugguer les
apps Angular ?
Réponse
ngrx
npx
npm
Angular DevTools
Résultat
Réponse correcte
Connaissance du langage +40pts
27 / 32
Islem Ghouma (ighouma@[Link])
Question 22: Définition des routes filles
Angular 2+ 00:30 / 00:30 40 / 40 pts
Le temps alloué à cette question s'est écoulé. La réponse du
candidat a été automatiquement récupérée à la fin du décompte.
Question
Au sein de l'objet de type Routes , quelle propriété permet de définir des routes filles ?
Réponse
loadChildren
route
children
childRoutes
Résultat
Réponse correcte
Connaissance du langage +40pts
28 / 32
Islem Ghouma (ighouma@[Link])
Question 23: @Input/@Output composant parent
Angular 2+ 14:38 / 15:00 0 / 150 pts
Le temps alloué à cette question s'est écoulé. La réponse du
candidat a été automatiquement récupérée à la fin du décompte.
Question
On vous demande de créer un composant Angular nommé DisplayComponent et ayant display-
component pour sélecteur.
Il doit utiliser le composant VoterComponent (sélecteur = voter-component ) dont le code est fourni.
DisplayComponent a 3 champs public nommés question , yesAnswer et noAnswer . Ils
représentent une question posée à l'utilisateur et les choix de réponse possibles affichés dans
VoterComponent .
DisplayComponent doit utiliser VoterComponent en tant qu'enfant et doit lui passer question ,
yesAnswer et noAnswer en entrée.
Quand l'utilisateur vote, VoterComponent créé un événement de type boolean vers un @Output
nommé output .
Vous devez afficher le résultat du vote dans DisplayComponent dans un <div> avec id=lastVote :
si output est vrai, alors on affiche la valeur de yesAnswer , sinon on affiche la valeur de noAnswer .
Notes : Un bloc de "Preview" est disponible pour vous permettre de débugguer votre code. Il affiche
votre composant ci-dessous. Vous pouvez l'ouvrir et le modifier à votre guise. Ce bloc de "Preview" n'est
pas pris en compte dans le calcul du score de votre code.
Réponse
1 // Angular 15.x code
2 import { Component, Input, NgModule, Output, EventEmitter } from '@angular/core';
3
4 @Component({
5 selector:'display-component',
6 template: `
7 <voter-component question='question' yesAnswer='yesAnswer' noAnswer='noAnswer' (output)=
'onOutPut($event)'>
8 </voter-component>
9 <div id = 'lastVote'>
29 / 32
Islem Ghouma (ighouma@[Link])
10 {{res}}
11 </div>
12 `
13 })
14 export class DisplayComponent {
15 public question = "Too easy?"
16 public yesAnswer = "Yes";
17 public noAnswer = "No";
18 public res:any;
19 onOutPut(event){
20 if(event==true){
21 [Link]=[Link];
22 }else{
23 [Link]=[Link];
24 }
25
26
27
28 }
29 }
30
31 // VoterComponent: do not change
32 @Component({
33 selector:'voter-component',
34 template: `
35 {{question}}
36 <button (click)="vote(true)">{{yesAnswer}}</button>
37 <button (click)="vote(false)">{{noAnswer}}</button>
38 `
39 })
40 export class VoterComponent {
41 @Input()
42 public question: string;
43
44 @Input()
45 public yesAnswer: string;
46
47 @Input()
48 public noAnswer: string;
49
50 @Output()
51 public output = new EventEmitter<boolean>();
52
53 public vote(vote: boolean): void{
54 [Link](vote);
55 }
56 }
57
58
59
60 // #region Preview
61
62 @Component({
63 template: `<display-component></display-component>`
64 })
65 export class PreviewComponent { }
66 // #endregion Preview
67
68 // #region Module declaration - Do not Change
69 @NgModule({
70 declarations: [PreviewComponent, DisplayComponent, VoterComponent],
71 entryComponents: [PreviewComponent]
72 })
73 export class PreviewModule { }
74 // #endregion Module declaration
30 / 32
Islem Ghouma (ighouma@[Link])
Voir le code playback
Résultat
Compile
Connaissance du langage +0pts
Gère l'événement
Connaissance du langage +75pts
Les entrées sont bien propagées
Connaissance du langage +75pts
31 / 32
Islem Ghouma (ighouma@[Link])
Glossaire
Connaissance du langage
La mesure de cette compétence permet de déterminer l'expérience du candidat dans la pratique d'un langage de
programmation. Privilégiez cette compétence si, par exemple, vous recherchez un développeur qui devra être
rapidement opérationnel.
Modélisation
Cette mesure fournit une indication sur la capacité du candidat à appliquer des solutions standard pour résoudre des
problèmes récurrents. Un développeur ayant un bon niveau dans cette compétence augmentera la qualité
(maintenabilité, évolutivité) de vos applications. Cette compétence ne dépend pas spécifiquement d'une technologie.
Privilégiez cette compétence si, par exemple, vous recherchez un développeur qui sera amené à travailler sur les
briques qui structurent vos applications, à anticiper les besoins de demain pour développer des solutions pérennes.
Résolution de problèmes
Cette compétence correspond aux aptitudes du candidat à comprendre et à structurer son raisonnement pour trouver
des solutions à des problèmes complexes. Cette compétence ne dépend pas spécifiquement d'une technologie.
Privilégiez cette compétence si, par exemple, vos applications ont une composante technique importante (R&D,
innovation).
Fiabilité
La fiabilité caractérise la capacité du candidat à réaliser des solutions qui prennent en compte les cas particuliers. Plus
cette compétence est élevée, plus vos applications sont robustes (moins de bugs).
32 / 32
Islem Ghouma (ighouma@[Link])