You are on page 1of 35

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

Samer Sboui (samersboui2016@gmail.com)


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

SCORE RANG DURÉE MEILLEUR QUE

56% 2 0H26 69%


1 340 / 2 380 pts /4 / 1H25 des développeurs

Java 26%
(260 / 1 000)

Connaissance du langage 38%


(180 / 480)

Fiabilité 0%
(0 / 80)

Modélisation 67%
(80 / 120)

Résolution de problèmes 0%
(0 / 320)

SQL 78%
(1 080 / 1 380)

Connaissance du langage 100%


(1 040 / 1 040)

Modélisation 100%
(40 / 40)

Résolution de problèmes 0%
(0 / 300)

1 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 1: Singleton
Java 00:06 / 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

2 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 2: Opération sur des entiers
Java 00:08 / 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

3 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 3: Visibilité des attributs
Java 00:12 / 00:20 0 / 20 pts

Question
Un attribut privé est visible depuis les sous-classes.

Réponse
Vrai
Faux

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

4 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 4: 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

5 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 5: Utilisation des exceptions
Java 00:19 / 00:30 20 / 20 pts

Question
Vous réalisez une bibliothèque en Java. Parmi ces options, laquelle privilégiez-vous pour traiter un
comportement inattendu ?

Réponse
throw new ComportementInattenduException()
System.exit(-1);
System.err.println("Erreur: Comportement inattendu")
return false

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

6 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 6: Héritage
Java 00:11 / 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

7 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 7: Types primitifs
Java 00:09 / 00:20 40 / 40 pts

Question
Parmi ces types primitifs, le(s)quel(s) existe en Java ?

Réponse
int
bool
float
uint

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

8 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 8: Synchronisation d'un compteur
Java 01:43 / 02:00 0 / 100 pts

Question
Transformez la méthode Counter.increment() pour qu'elle supporte l'accès concurrentiel de plusieurs
threads.

Réponse

1 class Counter {
2
3 private static int count = 0;
4
5 /**
6 * Increments count in a thread-safe manner.
7 */
8 public static int increment() {
9 Thread.yield();
10 count = count + 1;
11 return count;
12 }
13
14 }

Résultat
Accès concurrentiel synchronisé
Connaissance du langage +100pts

9 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 9: Garbage collector
Java 00:14 / 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

10 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 10: Enum
Java 00:30 / 00:30 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 considérant le code ci-dessus, quelles affirmations sont correctes ?

Réponse
Planet.MERCURY == Planet.MERCURY est vraie
Planet.MERCURY == Planet.VENUS est vraie
Planet.MERCURY.equals(Planet.MERCURY) est vraie

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

11 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 11: Opérateur sur les bits : >>
Java 00:20 / 00:20 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
Quel est le résultat de l'opération 2 >> 1 ?

Réponse
0
1
2
3
4

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

12 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 12: Héritage multiple d'interfaces
Java 00:13 / 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

13 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 13: Taille d'une ArrayList
Java 00:07 / 00:30 0 / 40 pts

Question
ArrayList l = new ArrayList(2);
l.add(1);
l.add(1);
l.add(1);

Quelle est la valeur retournée par l.size() ?

Réponse
1
2
3
5
Ce code lève une exception

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

14 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 14: Interface vs. implementation
Java 00:27 / 00:30 0 / 40 pts

Question
Parmi ces déclarations de méthodes, laquelle est à privilégier ?

Réponse
public ArrayList getOrders()
public Vector getOrders()
public List getOrders()

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

15 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 15: Design pattern 01
Java 00:24 / 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

16 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 16: Rendu de monnaie
Java 00:11 / 40:00 0 / 400 pts

Question
Les supermarchés s’équipent de plus en plus de caisses automatiques. La plupart de ces caisses n’
acceptent que le paiement par carte bancaire bien qu’une part non négligeable de consommateurs paye
encore en espèces (avec des billets et des pièces).

Une des problématiques rencontrées avec le paiement en espèces est le rendu de monnaie : comment
rendre une somme donnée de façon optimale, c'est-à-dire avec le nombre minimal de pièces et billets ?
C'est un problème qui se pose à chacun de nous quotidiennement, à fortiori aux caisses automatiques.

Dans cet exercice, on vous demande d’essayer de trouver une solution optimale pour rendre la monnaie
dans un cas précis : quand une caisse automatique ne contient que des pièces de 2€, des billets de 5€ et
de 10€.

Pour simplifier le problème, nous considérerons que toutes ces pièces et billets sont disponibles en
quantité illimitée.

Voici quelques exemples de rendu de monnaie :


Monnaie à rendre Solutions possibles Solution optimale 1 Impossible Impossible 6 2 + 2 + 2 2 + 2 + 2 10 2
+ 2 + 2 + 2 + 2 5 + 5 10 10 9223372036854775807 ... ( 10 * 922337203685477580) + 5 + 2

Le rendu de monnaie est exprimé par un objet Change. Cet objet a 3 propriétés : coin2, bill5 et bill10 qui,
respectivement, stockent le nombre de pièces de 2€, de billets de 5€ et de billets de 10€.

Par exemple, si on reprend l’exemple n°2 du tableau (6€), on devrait obtenir un objet Change avec : coin2
vaut 3 (3 pièces de 2€) bill5 vaut 0 (pas de billet de 5€) bill10 vaut 0 (pas de billet de 10€) Implémentez la
méthode optimalChange(long s) qui retourne un objet Change contenant les pièces et billets dont la
somme vaut s. S’il est impossible de rendre la monnaie (comme dans l’exemple n°1), retournez null.

Pour obtenir un maximum de points votre solution devra toujours rendre la monnaie quand c’est
possible et avec le nombre minimal de pièces et billets.

Données : s est toujours un entier ( long) strictement positif inférieur ou égal à 9223372036854775807

17 / 35
Samer Sboui (samersboui2016@gmail.com)
Réponse

1 import java.util.*;
2 import java.math.*;
3
4 // Do not modify Change
5 class Change {
6 long coin2 = 0;
7 long bill5 = 0;
8 long bill10 = 0;
9 }
10
11 class Solution {
12
13 // Do not modify this method signature
14 static Change optimalChange(long s) {
15
16 }
17 }

18 / 35
Samer Sboui (samersboui2016@gmail.com)
Résultat
La monnaie est correcte pour une somme de 10€
Résolution de problèmes +40pts

Résultat correct et dans les temps avec 9223372036854775802€


Résolution de problèmes +40pts

Le programme rend correctement la monnaie quand la somme vaut 31


Résolution de problèmes +40pts

La monnaie est optimale pour une somme de 31€ (2*10 +5 + 3*2)


Résolution de problèmes +40pts

null est retourné quand la somme vaut 3


Fiabilité +40pts

La monnaie est optimale pour une somme de 10€ (1*10)


Résolution de problèmes +40pts

null est retourné quand la somme vaut 1


Fiabilité +40pts

Le programme rend correctement la monnaie quand la somme vaut 8 (4 * 2)


Résolution de problèmes +40pts

La monnaie est optimale avec 9223372036854775803€


Résolution de problèmes +40pts

Résultat correct et dans les temps avec 9223372036854775803€


Résolution de problèmes +40pts

19 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 17: String buffers
Java 00:30 / 00:30 0 / 60 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
Saisissez le nom d'une classe appartenant au package java.lang qui permet de concaténer efficacement
les chaînes de caractères.

Réponse
Str

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

Réponse(s) correcte(s)
StringBuilder
StringBuffer
java.lang.StringBuilder
java.lang.StringBuffer

20 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 18: SQL - INSERT
SQL 00:06 / 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 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 19: SQL - DELETE
SQL 00:09 / 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

22 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 20: SQL - DISTINCT
SQL 00:53 / 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 |
---------------

23 / 35
Samer Sboui (samersboui2016@gmail.com)
Réponse

1 -- SQL request(s) below


2 SELECT distinct city
3 FROM customer
4 order by city asc

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

24 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 21: SQL - NOT EXISTS
SQL 04:20 / 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 |
---------------

25 / 35
Samer Sboui (samersboui2016@gmail.com)
Réponse

1 -- SQL request(s) below


2 SELECT c.customer_id
3 FROM customer c left join purchase_order p
4 on c.customer_id = p.customer_id
5 where p.customer_id is null

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

26 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 22: SQL - HAVING
SQL 01:49 / 05:00 200 / 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 |
--------------------------------

27 / 35
Samer Sboui (samersboui2016@gmail.com)
Réponse

1 -- SQL request(s) below


2 SELECT city, count(customer_id) customer_count
3 FROM customer
4 group by city
5 having count(customer_id) > 1

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

28 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 23: SQL - NOT NULL
SQL 01:20 / 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 |
--------------------------

29 / 35
Samer Sboui (samersboui2016@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

Question 24: SQL - Clé primaire


SQL 00:32 / 01:00 40 / 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 correcte
Modélisation +40pts

30 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 25: SQL - GROUP BY
SQL 04:17 / 05:00 300 / 300 pts

Question

Modifier la requête ci-contre pour lister le nombre de produits (product) disponibles par catégorie de
produits (product_category).

On ne listera pas les catégories de produits ne contenant pas de produit.

N'afficher que les colonnes CATEGORY_NAME (product_category.name) et PRODUCT_COUNT dans cet


ordre.

Exemple de sortie :

---------------------------------
| CATEGORY_NAME | PRODUCT_COUNT |
---------------------------------
| Books | 3 |
| Automotive | 2 |
| High-tech | 8 |
---------------------------------

31 / 35
Samer Sboui (samersboui2016@gmail.com)
Réponse

1 -- SQL request(s) below


2 SELECT pc.name category_name, count(p.product_id) product_count
3 FROM product p join product_category pc
4 on p.product_category_id = pc.product_category_id
5 group by pc.name
6 having count(p.product_id) > 0
7 order by pc.name asc

Résultat
Utilisation de "group by"
Connaissance du langage +300pts

32 / 35
Samer Sboui (samersboui2016@gmail.com)
Question 26: SQL - Jointures multiples
SQL 06:31 / 08:00 0 / 300 pts

Question

Modifier la requête pour sélectionner uniquement les ids des clients (customer) ayant acheté au moins
un produit dans la catégorie "Books" ou "Garden" (product_category). La sortie ne doit contenir aucun
doublon et doit être triée par ordre croissant.

N'afficher que la colonne CUSTOMER_ID.

Exemple de sortie :

---------------
| CUSTOMER_ID |
---------------
| 0 |
| 5 |
---------------

33 / 35
Samer Sboui (samersboui2016@gmail.com)
Réponse

1 -- SQL request(s) below


2 SELECT distinct c.customer_id
3 FROM customer c join purchase_order p
4 on c.customer_id = p.customer_id
5 join order_product op
6 on op.order_id = p.order_id
7 join product pro
8 on pro.product_id = op.product_id
9 join product_category pc
10 on pc.product_category_id = op.product_category_id
11 order by c.customer_id

Résultat
Jointures sur toutes les tables
Résolution de problèmes +300pts

34 / 35
Samer Sboui (samersboui2016@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).

35 / 35
Samer Sboui (samersboui2016@gmail.com)

You might also like