Vous êtes sur la page 1sur 40

Afin d'éviter la fuite de questions, ce rapport ne doit pas être partagé avec les candidats.

Slim Romdhani (Romdhani.slim.tn@gmail.com)


Campagne : Développeur Java Spring Back-End - Junior Langage(s) de programmation : Java, SQL, Spring Langage : Français Date : 16/08/2019

SCORE RANG DURÉE MEILLEUR QUE

57% 4 1H19 N/A


1 142 / 1 990 pts / 15 / 1H19

Java 62%
(462 / 750)

Connaissance du langage 75%


(177 / 237)

Fiabilité 51%
(35 / 68)

Modélisation 100%
(80 / 80)

Résolution de problèmes 47%


(170 / 365)

SQL 57%
(580 / 1 020)

Connaissance du langage 58%


(560 / 960)

Modélisation 33%
(20 / 60)

1 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Spring 45%
(100 / 220)

Connaissance du langage 45%


(100 / 220)

Question 1: Opération sur des entiers


Java 00:27 / 00:30 20 / 20 pts

Question
int i1 = 5;
int i2 = 2;
int i3 = i1 / i2;

Quelle est la valeur de i3 ?

Réponse
3
2.5
2
NaN

Résultat
Réponse correcte
Connaissance du langage +20pts

2 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 2: Chaînes de caractères égales
Java 01:21 / 02:30 17 / 50 pts

Question
A.isFoo(String param) devrait retourner true si param est égal à la chaine "foo", sinon elle devrait
retourner false.

Implémentez A.isFoo(String param)

Réponse

1 // Java code below


2 class A {
3
4 static boolean isFoo(String param) {
5 if (param.equals("foo"))
6 return true;
7 else
8 return false;
9 }
10
11 }

Résultat
Utilisation de equals plutôt que '=='
Connaissance du langage +17pts

Fonctionne si param est null


Fiabilité +33pts

3 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 3: Classe abstraite
Java 00:17 / 00:20 20 / 20 pts

Question
Une classe abstraite peut contenir des méthodes concrètes.

Réponse
Vrai
Faux

Résultat
Réponse correcte
Connaissance du langage +20pts

4 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 4: Singleton
Java 01:18 / 00:20 20 / 20 pts

Question
Quelle signature de méthode est généralement utilisée pour obtenir un singleton ?

Réponse
getSingleton()
instance()
getInstance()

Résultat
Réponse correcte
Connaissance du langage +20pts

5 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 5: Méthode finale
Java 00:11 / 00:20 20 / 20 pts

Question
Une méthode déclarée finale est une méthode qui...

Réponse
ne peut pas être redéfinie
retourne une constante
provoque une erreur de compilation

Résultat
Réponse correcte
Connaissance du langage +20pts

6 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 6: Constante
Java 01:25 / 00:25 0 / 20 pts

Question
Quelle déclaration est une constante valide en Java ?

Réponse
define("MAXSIZE", 100);
#define MAXSIZE 100
public static final int MAXSIZE = 100;
const int MAXSIZE = 100;

Résultat
Réponse incorrecte
Connaissance du langage +20pts

7 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 7: Héritage
Java 01:10 / 01:00 20 / 20 pts

Question
Parmi ces deux propositions, laquelle préférez-vous ?

Proposition #1 :
interface CapableDeVoler {
void vole();
}
abstract class Avion implements CapableDeVoler {}
abstract class Oiseau implements CapableDeVoler {}

Proposition #2 :
abstract class Avion {
abstract void vole();
}
abstract class Oiseau extends Avion {}

Réponse
La proposition #1
La proposition #2

Résultat
Réponse correcte
Modélisation +20pts

8 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 8: Classe « friendly »
Java 00:16 / 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

Question 9: Somme de facteurs


Cross 12:49 / 08:00 100 / 100 pts

Question
La méthode computeMultiplesSum(n) doit renvoyer la somme de tous les multiples positifs de 3 ou 5 ou
7 strictement inférieurs à n.

Par exemple, pour n=11, on obtient 3,5,6,7,9,10 en tant que multiples et la somme de ces multiples vaut
40.

Implémentez computeMultiplesSum(n).

Contraintes:
0 ≤ n < 1000

9 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Réponse

1 import java.util.*;
2 import java.io.*;
3 import java.math.*;
4
5 class Solution {
6
7 public static int computeMultiplesSum(int n) {
8 int c=0;
9 for(int i =3;i<n;i++)
10 {
11 if(i%3==0){
12 // System.out.println("rest par 3 de "+i+"est"+i%3);
13 c+=i;
14 }
15 else if (i%5==0)
16 c+=i;
17 else if (i%7==0)
18 c+=i;
19
20 }
21
22
23 return c;
24 }
25
26 /* Ignore and do not change the code below */
27 public static void main(String args[]) {
28 Scanner in = new Scanner(System.in);
29 int n = in.nextInt();
30 PrintStream outStream = System.out;
31 System.setOut(System.err);
32 int res = computeMultiplesSum(n);
33 System.setOut(outStream);
34 System.out.println(res);
35 }
36 }

10 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Résultat
n=20
Résolution de problèmes +20pts

n=125
Résolution de problèmes +20pts

n=202
Résolution de problèmes +20pts

n=996
Résolution de problèmes +20pts

n=0
Fiabilité +20pts

11 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 10: Opérateur unitaire (i++)
Java 00:25 / 00:25 0 / 40 pts

Question

Saisissez le résultat qu'affiche ce bout de code.

Réponse
1

Résultat
Réponse correcte
Connaissance du langage +40pts

Réponse(s) correcte(s)
0

12 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 11: Opérateur sur les bits : &
Java 01:05 / 00:20 40 / 40 pts

Question
En base 2 (binaire), combien font 0001 & 0001 ?

Réponse
0010
0000
0001

Résultat
Réponse correcte
Connaissance du langage +40pts

13 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 12: Garbage collector
Java 00:38 / 00:20 40 / 40 pts

Question
Le garbage collector garanti qu'il y a suffisamment de mémoire pour exécuter un programme Java.

Réponse
Vrai
Faux

Résultat
Réponse correcte
Connaissance du langage +40pts

14 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 13: Design pattern 01
Java 01:01 / 00:50 40 / 40 pts

Question
public class A {

private A() {}

private static class AHolder {


private static final A INSTANCE = new A();
}

public static A getInstance() {


return AHolder.INSTANCE;
}
}

Si vous connaissez le patron de conception (design pattern) utilisé dans ce bout de code, saisissez son
nom dans le champ texte (1 mot seulement).

Réponse
singleton

Résultat
Réponse correcte
Modélisation +40pts

Réponse(s) correcte(s)
Singleton
Singleton Pattern

15 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 14: C'est au fruit que l'on connaît l'arbre
Java 17:51 / 25:00 105 / 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.

16 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
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 // System.out.println(this.value+ "valeur chercher"+ v);
9 if (this.value==v)
10 return(this);
11 else
12 if (this.right!=null && this.value<v)
13 return(this.right.find(v));
14 else if (this.left!=null&&this.value>v)
15 return(this.left.find(v));
16 else
17 return null;
18 }
19
20
21 }

Résultat
Les résultats sont correctes avec un arbre d'une 'petite' hauteur
Résolution de problèmes +90pts

Si le noeud demandé n’existe pas 'null' est retourné


Fiabilité +15pts

Les résultats sont correctes avec un arbre d'une 'grande' hauteur


Résolution de problèmes +195pts

17 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 15: SQL - DROP
SQL 00:18 / 00:45 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

18 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 16: SQL - DELETE
SQL 00:15 / 00:30 20 / 20 pts

Question
Quelle commande SQL permet d'effacer des lignes dans une table ?

Réponse
REMOVE FROM table WHERE ...
UPDATE table REMOVE WHERE ...
DELETE FROM table WHERE ...
DROP FROM table WHERE ...

Résultat
Réponse correcte
Connaissance du langage +20pts

19 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 17: SQL - DISTINCT
SQL 01:55 / 05:00 100 / 100 pts

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 |
---------------

20 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Réponse

1 -- SQL request(s) below


2 SELECT distinct city
3 FROM customer
4 order by city

Résultat
Utilisation de "distinct", "order by"
Connaissance du langage +100pts

Question 18: SQL - INSERT


SQL 00:13 / 00:30 20 / 20 pts

Question
Quelle commande SQL permet d'ajouter une ligne dans une table de base de données ?

Réponse
INSERT
ADD
UPDATE
MORE

Résultat
Réponse correcte
Connaissance du langage +20pts

21 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 19: SQL - Clé étrangère n°1
SQL 00:27 / 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.

Réponse
Clé primaire
Index
Blob
Clé étrangère

22 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Résultat
Réponse correcte
Modélisation +20pts

23 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 20: SQL - NOT NULL
SQL 03:33 / 05:00 200 / 200 pts

Question

Modifier la requête pour selectionner uniquement les clients ayant un code postal (zipcode) égal à
75000 ou 34000 et ayant une date de naissance (birth_date) définie.

N'afficher que colonnes LASTNAME et FIRSTNAME dans cet ordre.

Exemple de sortie :

--------------------------
| LASTNAME | FIRSTNAME |
--------------------------
| RIVER | John |
| JACKSON | Elizabeth |
| PUTTER | James |
--------------------------

24 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Réponse

1 -- SQL request(s) below


2 SELECT lastname,firstname
3 FROM customer
4 where (zipcode = 75000 or zipcode = 34000)
5 and birth_date is not null

Résultat
Utilisation de "not null"
Connaissance du langage +200pts

25 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 21: SQL - NOT EXISTS
SQL 03:44 / 05:00 200 / 200 pts

Question

Modifier la requête pour selectionner uniquement les clients (customer) n'ayant aucun ordre achat
(purchase_order) associé.

Afficher uniquement la colonne CUSTOMER_ID.

Exemple de sortie :

---------------
| CUSTOMER_ID |
---------------
| 8 |
| 5 |
---------------

26 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Réponse

1 -- SQL request(s) below


2 SELECT customer_id
3 FROM customer as c
4 where c.customer_id not in (select customer_id from purchase_order)

Résultat
Utilisation de "not exists" ou "not in"
Connaissance du langage +200pts

27 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 22: SQL - HAVING
SQL 09:00 / 05:00 0 / 200 pts

Question

Modifier la requête pour fournir la liste du nombre de clients (customer) par ville (city). Seules les villes
qui comptent deux clients ou plus doivent être sélectionnées.

N'afficher que les colonnes CITY et CUSTOMER_COUNT dans cet ordre.

Exemple de sortie :

--------------------------------
| CITY | CUSTOMER_COUNT |
--------------------------------
| Boston | 8 |
| New Delhi | 2 |
--------------------------------

28 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Réponse

1 -- SQL request(s) below


2 SELECT city, (select count(*) from customer where c.city=customer.city) as customer_count
3 FROM customer as c
4 where (select count(*) from customer where c.city=customer.city)>=2

Résultat
Utilisation de "having"
Connaissance du langage +200pts

29 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 23: SQL - LIKE
SQL 03:08 / 05:00 0 / 200 pts

Question

Modifier la requête pour selectionner uniquement les noms et prénoms des clients (customer) dont le
nom commence par la lettre 'W', triés par ordre alphabétique de noms puis de prénoms.

N'afficher que les colonnes LASTNAME et FIRSTNAME dans cet ordre.

Exemple de sortie :

------------------------
| LASTNAME | FIRSTNAME |
------------------------
| WHITTARD | Bill |
| WILLIAMS | John |
------------------------

30 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Réponse

1 -- SQL request(s) below


2 SELECT lastname,firstname
3 FROM customer
4 where lastname like 'W%' or
5 lastname like 'w%'

Résultat
Utilisation de "like", "order by"
Connaissance du langage +200pts

Question 24: SQL - Clé primaire


SQL 01:24 / 01:00 0 / 40 pts

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 incorrecte
Modélisation +40pts

31 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 25: [Core] Détection de bean
Spring 01:11 / 00:45 0 / 20 pts

Question
Vous souhaitez que la classe suivante soit détectée par un scan Spring et enregistrée en tant que bean.
Quelle annotation utiliseriez-vous ?

Réponse
Component
Bean
Scannable
Register

Résultat
Réponse incorrecte
Connaissance du langage +20pts

32 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 26: [Core] Injection
Spring 00:57 / 00:45 20 / 20 pts

Question
Quelle annotation peut-on utiliser pour injecter un bean Spring ?

Réponse
@Autowired
@PostConstruct
@Bean
@Component
@InjectBean

Résultat
Réponse correcte
Connaissance du langage +20pts

33 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 27: [Data] find by Id
Spring 01:31 / 01:00 0 / 20 pts

Question
On considère une entitée User et l'interface UserRepository associée, héritée de CrudRepository, qui
permet son accès depuis la base.

Quelle méthode devriez-vous définir pour permettre de récupérer un objet User à partir de son id ?

Écrivez le nom de la méthode.

Réponse
findById

Résultat
Réponse correcte
Connaissance du langage +20pts

Réponse(s) correcte(s)
findUserById
getUserById
readUserById

34 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 28: [Validation] Validator
Spring 01:36 / 01:15 20 / 20 pts

Question
Quelle est le nom de l'interface Spring implémentée ci-dessous, utilisée pour valider un business model
depuis plusieurs modules Spring ?

Réponse
Validator

Résultat
Réponse correcte
Connaissance du langage +20pts

Réponse(s) correcte(s)
Validator
org.springframework.validation.Validator

35 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 29: [Rest] RestController
Spring 00:27 / 00:30 20 / 20 pts

Question
Comment déclare-t-on un endpoint REST dans Spring ?

Réponse
@RestEndpoint
@RestController
@Rest
@REST

Résultat
Réponse correcte
Connaissance du langage +20pts

36 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 30: [Rest] RestTemplate
Spring 04:49 / 00:45 0 / 40 pts

Question
Quelle classe de Spring Framework utiliseriez-vous pour appeler un service Rest ?

Réponse
org.springframework.web.servlet.DispatcherServlet

Résultat
Réponse correcte
Connaissance du langage +40pts

Réponse(s) correcte(s)
RestTemplate
org.springframework.web.client.RestTemplate

37 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 31: [Core] Application events
Spring 01:20 / 00:35 40 / 40 pts

Question
Quel événement du cycle de vie de l'application n'existe pas dans Spring Framework ?

Réponse
ContextRefreshedEvent
ContextStartedEvent
ContextClosedEvent
ContextLostEvent

Résultat
Réponse correcte
Connaissance du langage +40pts

38 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
Question 32: [Core] Constructeurs Autowired
Spring 01:00 / 00:50 0 / 40 pts

Question
Combien de constructeurs d'une classe peuvent être annotés avec @Autowired ?

Réponse
0 - @Autowired n'est utilisable que sur les champs et les méthodes setXXX
1 - sinon Spring ne saurait lequel choisir
multiple - si chacun d'eux a un @Qualifier différent
multiple - dans tous les cas

Résultat
Réponse incorrecte
Connaissance du langage +40pts

39 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)
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).

40 / 40
Slim Romdhani (Romdhani.slim.tn@gmail.com)

Vous aimerez peut-être aussi