Wadifa InfoEmploi public au Maroc ع

Modèle de concours de recrutement — Cadre supérieur en études et développement informatique — Caisse Nationale de Sécurité Sociale (CNSS) 2013 — Épreuve professionnelle

🏢 Caisse Nationale de Sécurité Sociale (CNSS) 👤 Cadre supérieur en études et développement informatique 🎯 Épreuve professionnelle 📅 17 novembre 2013 👁️ 13 vues

En bref

Ce document est une ancienne épreuve écrite du concours de Cadre supérieur en études et développement informatique organisé par Caisse Nationale de Sécurité Sociale (CNSS) (2013), publiée sur Wadifa Info en consultation et téléchargement PDF gratuits, avec une correction proposée.

Organisme
Caisse Nationale de Sécurité Sociale (CNSS)
Grade
Cadre supérieur en études et développement informatique
Spécialité
Épreuve professionnelle
Année
2013
Pages
15
Langue des questions
français
Correction
correction proposée disponible sur cette page
Sujet « Épreuve professionnelle » du concours de recrutement (Cadre supérieur en études et développement informatique) organisé par la Caisse Nationale de Sécurité Sociale (CNSS), 17 novembre 2013. Document officiel publié par la CNSS sur cnss.ma (copie archivée), 15 page(s). Sans corrigé.
📝 Texte des questions (extrait automatiquement des pages scannées)

Ce texte est extrait automatiquement des images de l'épreuve et peut contenir des erreurs de lecture — les images ci-dessus font foi.

Epreuve Professionnelle
Cadre Supérieur en Etude et Développement
Informatique
17/11/2013
Consignes
Cette épreuve comporte des questions théoriques et pratiques dont la nature est de deux types:
* les questions à réponse directe: dans ce cas, le candidat doit donner une solution ou
compléter une proposée.
* les questions à plusieurs propositions dont lesquelles le candidat doit choisir une ou
plusieurs bonnes réponses.
51 le candidat doit raturer une croix, il doit le faire correctement afin qu'il n'y ait aucune
ambiguïté.
Page 1
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

Partie I : Conception
Question 1.
En trigonométrie, on a besoin de calculer le sinus, le cosinus, la tangente des angles et la
valeur du nombre PI. La classe Angle existe déjà. Proposez une structure qui regroupe ces
fonctions.
ودين ممست سما وت تود مس ل ‎qe‏
‏إٍْ إٍْ
ا إٍْ
ا ٍْ
‎Question 2.‏
Une personne peut être abonnée à plusieurs magazines. Un magazine peut avoir de nombreux
abonnés. Pour chaque abonnement, il est important de connaitre la date et le montant de
chaque règlement ainsi que la date d'expiration de l'abonnement. Laquelle des 2 conceptions
suivantes vous semble la meilleure ?
i [] Schéma A ‏نا‎ Schéma B
E Schems A Schems 8
+Abonné '
! - 88/62 . rom . 801556 nom 0
I - * ‏ا‎ - nom |
| +Abonné \1 1 !
E - dateExgirstion Ent |
! Abonnement |
- GateExprsation
‏ا إٍْ‎
1 . ‏ج081‎ gste i
1 - montant +: montam ‏ا‎
‏إٍْ إٍْ‎
Rd — ‏لجيج دودح دوج جد جد جد جد ادج د جر كاء ماله جا د جاداج د حا اج‎ |
‎Page 2‏
‎È _ | = A .‏ 5 ل = 2
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

Question 3.
Une banque gère de nombreux comptes. Un compte appartient à une seule banque. Un
numéro de compte permet d'identifier un compte unique dans une banque donnée. Un numéro
de compte est relatif à une banque. Indiquez la multiplicité selon que l'association soit
qualifiée ou qu'elle ne le soit pas.
1 Banque - Association Non Qualifiée Banque - Association Qualifièe |
Question 4.
Les chaînes de caractères du langage C sont codées comme un tableau de caractères non nuls,
terminé par un caractère *\0’. Par exemple, la chaîne s="hello!" est codée comme suit :
s[O] s[1] sf2] s[3] s[4] s[5] sf6]
D € 1 “© °° ‏تي‎
‎Décrivez une activité implémentant la fonction strlen, qui prend en entrée un tableau de |
caractères et rend un entier correspondant à la taille de la chaîne. Exemple :
strlen("hello!")=6.
Partie II : Développement
Question 5.
Dans le modèle MVC, Hibernate correspond à la couche
‏لا‎ M
‏لأ‎ V
‏لا‎ Aucune
Question 6.
Quel est le scope par défaut d’un bean Spring ?
[] session
‏لا‎ singleton
‏لا‎ prototype
‏لا‎ request
Page 3
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

Question 7.
Quelle implémentation de Map doit-on utiliser si on veut garder l’ordre d’insertion des clés ?
‏نا‎ HashMao
‏لا‎ TreeTable
‏لا‎ HashTable
‏نا‎ LinkedHashMap
Question 8. |
Pourquoi appelle-t-on Spring un conteneur léger
‏نا‎ en opposition avec EJB
‏نا‎ pour la taille des jars réduite
‏نا‎ la faible charge de développement nécessaire
‏نأ‎ la possibilité de déployer une application sur un conteneur de servlet (comme tomcat)
Question 9.
Quelle est une utilisation typique des méthodes ejbSelect()?
‏نا‎ Utiliser les méthodes ejbSelect() dans des “session beans” pour déterminer les critères de
sélection pour une liste
‏نا‎ Utiliser les méthodes ejbSelect() dans les méthodes ejbHome afin de renvoyer des “entity
beans”
‏نأ‎ Utiliser des méthodes ejbSelect() afin d’accéder à des champs d’une instance d’un bean
‏نا‎ Utiliser des méthodes ejbSelect() pour exécuter des opérations qui ne sont pas spécifiques
à une instance d’un “entity bean”
Question 10.
Le “EJB Query Language” est utilisé
‏لا‎ pour compléter le standard SQL96 avec des options supplémentaires pour les relations
complexes
‏لأ‎ à la place de la méthode findByPrimaryKey(), pour définir des critères de sélection
alternatifs
‏لأ‎ pour spécifier une implémentation concrète pour les méthodes “find” et “select” des
“CMP entity beans"
‏لأ‎ pour pouvoir utiliser les types de données définis par les utilisateurs ou les procédures
stockées dans une base de données
Question 1.
Un Middleware est :
‏لأ‎ dans les architectures web, un framework, comme eclipse, d’aide au développement, à la
mise au point et au déploiement des logiciels basés sur une architecture répartie
‏لأ‎ dans une architecture client-serveur, une couche logicielle, utilisée par le client et le
serveur pour communiquer par exemple par envoi/réception de message
‏لأ‎ dans une architecture répartie, un ORB (Object Request Broker) assurant la communication
entre les différentes entités du réseau
Page 4
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

Question 12.
Pour la conception d'une architecture logicielle Intranet, la technologie CORBA n'est pas bien
adaptée
‏لا‎ Oui
‏لا‎ Non
Question 13.
Les composants d'un ORB (Object Request broker) sont : |
‏نا‎ Une interface Java, la classe UnicastRemoteObject, la classe LocateRegistry
‏لا‎ Eclipse, JDK, Apache
‏نا‎ Une API (fonctions de base de l'ORB), un service de nommage, un compilateur IDL
Question 14.
En RMI de Java,
CT la classe d'appartenance d'un objet distribué, hérite de UnicastRemoteObject et
implémente une interface qui décrit les méthodes distantes
‏لا‎ la classe d'appartenance d'un objet distribué, hérite de RemoteObject et implémente
l'interface Remote
Question 15.
CORBA (Common Object Request Broker Architecture) est une norme de Middleware
‏لا‎ OUI
‏لا‎ NON
Question 16.
Un Design Pattern (DP) ou Patron est une norme de description des interfaces entre les
composants d'une architecture logicielle orientée objet
EI ‘QUI
‏لا‎ NON
Question 7
Un DP définit des principes de conception, et non des implémentations spécifiques de ces
principes
‏لا‎ OUI
‏لا‎ NON
Question 18.
Quelle affirmation est vraie à propos des fichiers .class ?
‏نا‎ Un fichier .class n’est pas un fichier géré par java
‏نا‎ Un fichier .class contient du binaire indépendant de la plateforme
‏نا‎ Un fichier .class contient du code assemblé plateforme dépendant
‏نا‎ Un fichier .class contient le code source
Page 5
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

Question 19.
Quelle affirmation est fausse à propos des interfaces ?
‏نا‎ Une classe peut implémenter plusieurs interfaces
‏نأ‎ Une interface peut contenir des déclarations de méthodes et de constantes
‏نا‎ Une variable peut être déclarée du type d’une interface : Moninterface m : ;
‏نا‎ Une interface peut contenir des déclarations de méthodes static et non static
Question 20. |
Quelle affirmation est fausse à propos des classes abstraites ?
‏نأ‎ Une classe peut étendre plusieurs classes abstraites
‏نأ‎ Une classe abstraite est définie grâce au mot réservé abstract
‏نا‎ Une variable peut être du type d’une classe abstraite
‏نأ‎ Une classe abstraite peut implémenter des méthodes
Question 21.
Quelle affirmation est fausse à propos du Garbage Collector
‏نا‎ Le programmeur peut demander le lancement du Garbage Collector
‏نا‎ Une instance d’un objet est éligible pour le Garbage Collector quand plus personne ne le
référence
‏نأ‎ Le Garbage Collector évite automatiquement toute perte de mémoire
‏نآ‎ Le Garbage Collector démarre automatiquement quand il décide que c’est le bon moment
Question 22.
‏أ‎ public class A{
1 ‏إٍْ‎
‎| public class B extends A{
| public static void main(String[] args){
: B anObject=new B();
| Boolean o1 = (anObject instanceof A); i
| Boolean ‏2ه‎ = (anObject instanceof B);
i Boolean ‏3ه‎ = (anObject instanceof Object); 1
Quels booléens ont comme valeur true 9 ‏ا ا‎
‏نا‎ Seul ‏2ه‎ a comme valeur true
‏لا‎ ol, o2 et ‏3ه‎ ont comme valeur true
‏لا‎ Seuls o1 et ‏2ه‎ ont comme valeur true
‏لأ‎ Seuls o2 et ‏3ه‎ ont comme valeur true
Question 23.
| public static void main(Stringl] args){ ‏ا‎
‎‘int ji;
| for (i=0;i<10;##){ ‏أ ا ااا‎
Page 6
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

ET 11111 111١1١1١1١١1111]!
13 ‏ا‎
‏إٍْ ا‎
| System.out.println("i="+i); ‏ا‎
‏إٍْ‎
‎Quelle est la valeur affichée de 1 ? ;
‏لا‎ i=11
‏لا‎ i=9
‏لا‎ 1-2
Question 24.
00 ‏ا ا ا‎
‏ااام ب م كمض الات ور لَك هه ا‎
| public class Point{
: private int mx=1;
private int my=1;
| public Point(){
0 ٍْ
! public void dump(){
| system.out.println("x="+mx+",y="+my) ;
| public static void main(String[l] args){
| Point ‏إٍْ رج‎
ً, p.dump();
‎Quel est le résultat obtenu si vous compilez et exécutez ce code?
‏لا‎ x=0, y=0
‏نا‎ Erreur à la compilation
‏لا‎ x=1, y=1
‏نا‎ Null Pointer Exception à l’exécution
Question 25.
i Code
CE OO ET ‏دود :511::::166:5:[اا+انافا الالح‎
public class Point{
‏ا‎ private static Point centerPoint - new Point )( 7:
private int mx=0; |
i private int my=0; l
| public Point(){
‎Page 7
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

publie 2012 (DE LE QT | | | | | ‏ملسست‎ :
| MX=X ;
| MY=Y ;
‏أ‎ centerPoint = new Point() ;
| public static void main(String[] args){
: Point pl = new Point(1,1); |
| Point p2 = new Point(2,2); ِ
‏ال ل لا و جح سا وا ا ا واه ااام لاس اا احم اواج لح ااه اج ا جا اع ل ا وج جح حت سوساج‎
Combien d’instances de la classe Point sont créées ?
‏نا‎ 2 instances
‏نا‎ 4 instances
‏نا‎ 5 instances
‏لا‎ 3 instances
Question 26.
: package test;
| public class A{
: protected int mx=0; E
i private int my=0;
SN 2 ‏يوري انز‎
Quelle affirmation est vraie ?
‏نا‎ mx et my sont accessibles par les sous classes de A
‏نأ‎ mx est accessible par toutes les classes et my est accessible que par la classe A
‏نا‎ mx est accessible par les classes du package test et my est accessible par les sous classes de
‏نأ‎ mx est accessible des sous classes de A et my n’est accessible que par la classe A
Question 7
| package test; E
| public class A{
| int mx=0;
Quelle affirmation est vraie 9 ‏مدت .سسوة--7---س7أل أ آآ‎
‏نأ‎ mx est accessible par toutes les classes du package test
‏نأ‎ mx est accessible par toutes les classes
‏نا‎ mx est accessible par n’importe quelle sous classe de A
Page 8
> ‏ظرفة إزة‎ ee ‏بات مر‎ La ‏نماذج‎
‎wadifa-info.com ‏ج المباريات من موقع وظيفة إنفو‎

Question 28.
a meme menant ‏ل‎
‎: public class Test{
| private int mx=0;
: private static int my=0; E
i protected int mz=0;
| public static class A{
|) public void increase(){
| My++; i
! public static class B{
| public void increase(){
| public static class ©
| public void increase(){
Combien obtient-on d’erreurs de compilation avec ce code ?
‏لا‎ 3 erreurs de compilation
‏نا‎ 2 erreurs de compilation
‏نا‎ 4 erreurs de compilation
‏نا‎ 1 erreur de compilation
Question 29.
Il ‏ا‎
‎public static void main(Stringl] args) {
i int toto=1/0;
! Jcatch(java.lang.NullPointerException el){
i System.out.print ("NullPointer Exception,");
: return;
| }Jcatch(java.lang.ArithmeticException el) {
| System.out.print ("Arithmetic Exception, ");
i return;
; }Jfinally{
| System.out.print ("Finally Clause,"); |
‏دس ةب اج سي سي جك جات تي ةا ب اح يح حي لأ‎
Quel est le résultat en sortie standard ?
‏نا‎ Arithmetic Exception,
Page 9
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

‎NullPointer Exception, Finally Clause,‏ نا
‎Finally Clause,‏ لأ
‎Arithmetic Exception, Finally Clause,‏ نا
‎Question 30.‏
ا 3 ‎public static void main(Stringl]l args){‏ :
‎i final Thread secondThread = new Thread(){‏
‎public void run(){‏ !
‎i for(int i=0;i<3;i++) {‏
‎ System.out.print("2"); ;‏
‎final Thread firstThread = new Thread (){‏ !
‎public vois run(){‏ |
‎secondThread.start ();‏ |
‎try{‏ |
‎secondThread. join();‏ !
‎١ }catch(java.lang.InterrupteException e){‏
‎for (int i=0;i<3;i++) { |‏ |
ا ب(" ‎System.out.print("1‏ |
! 013
‎firstThread.start ();‏ |
ا ‎Quel est le résultat en sortie standard?‏
‎[OT 11222‏
11 02221
‎Résultat aléatoire en sortie standard‏ نا
21 1 12 12
‎Question 31.‏
‎static class TestThread{‏ ا ان
‎private long 71-7‏ :
‎private long v2=0;‏ |
‎private Object lockl = new Object ();‏ |
‎private Object lock2 = new Object ();‏ |
‎public long getV1l(){‏
‎synchronized (lock1) {‏ |
‎return vil;‏ :
‎public long getv2(){‏ |
ل ل ا ‎synchronized(Lock2){‏ |
‎Page 10‏
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

‎à‏ 2 _جقطة”« ا
‎public void 017172 ) 4 ٍْ‏ :
{ (1601-1) 87001-02312683 أ
‎(1lock2) {‏ 8170117031268 |
‎public void mulViv2(int mult){‏ !
‎synchronized(lock2){‏ |
‎synchronized(lock1) {‏ |
‎vi*=mult;‏ |
‎v2*=mult;‏ |
‎Dans un contexte multi-thread, quelle est l’affirmation vraie 7‏
‎Cette classe peut provoquer un blocage : « dead lock »‏ لا
‎Les variables 71 et v2 ne peuvent pas être lues en même temps par deux threads‏ نا
‎La variable vi peut être modifiée par deux threads en même temps‏ نآ
‎manque des catch sur les expressions de type InterruptedException‏ 11 نا
‎Question 32.‏
‎public static boolean checkArray(Object[] list, Object o){‏ |
‎final int len = list.length;‏ :
‎ for(int i=0;i<len;i++){‏
‎if(listli]l.equals(o)){‏ :
‎return true;‏
‎return false;‏
‎public static boolean checkVector (Vector list, Object o){ E‏ :
‎i final int len = list.size();‏
‎for(int i=0;i<len;i++){‏ ا
‎i if(list.get(i) .equals(o)){‏
‎return true;‏ :
‎return false;‏
‎public static boolean checkArrayList (ArrayList list, Object o){ ;‏ |
‎final int len = list.size()5 0‏
‎Page 11‏
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

ٍّ ل[ (ججةبضعاعة 0ح له ) عو
‎i if(list.get(i).equals(o)){‏
‎return true;‏ :
‎return false;‏ |
اي 9 ‎Quelle est l'affirmation exacte‏
‎Généralement, checkArrayList() est la méthode la plus rapide et checkArray() la plus lente‏ نا
‎Généralement, checkArray() est la méthode la plus rapide et checkArrayList() la plus lente‏ نا
‎Généralement, checkArray() est la méthode la plus rapide et checkVector() la plus lente‏ نا
‎Généralement, check Vector() est la méthode la plus rapide et checkArray() la plus lente‏ نأ
‎Question 33.‏
‎<?php echo htmlspecialchars ($nom) ;?>‏ |
‎Quelle est l'utilité de la fonction htmlspecialchars ()?‏
‎Cette fonction permet d’enlever les possibles caractères anti-slash de la string‏ نا
‎Cette fonction encode les caractères spéciaux HTML afin d’éviter toutes injection de balise‏ نا
‎(X-) HTML‏
‎Cette fonction permet d’interpréter les variables contenues par la chaine $nom‏ نا
‎Cette fonction permet un affichage correct des caractères étrangers quelle que soit la‏ لا
‎langue du navigateur utilisé‏
‎Question 34.‏
‎«form name='nomformulaire' action='traitement.php' method='post'>‏ |
‎<input name='nom' type='text' size=50><br>‏ أ
‎<input name='go' type='submit' value='inscription'><br>‏ |
‎</form>‏ |
‎Comment récupérer la variable nom dans le fichier traitement.php ?‏
‎On peut récupérer la valeur de nom par un appel à $ GET['nom'] ou à $ POST['nom']‏ نأ
‎On peut récupérer la valeur de nom par un appel à $ GET['nom'] ou à $ REQUESTl['nom']‏ نأ
‎On peut récupérer la valeur de nom par un appel à $ REQUEST/['nom']‏ نأ
‎On peut récupérer la valeur de nom par un appel à $ POST{]'nom'| ou à‏ لا
‎REQUEST{['nom']‏ $
‎Question 35.‏
‎$site-'emploi.ma'‏ |
‎//expression 1 ٍْ‏ :
‎i echo "3000 offres d'emploi en informatique et électronique sur $site" ; ;‏
‎ue‏ الا ‎Re‏
‎Page 12‏
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

! echo "Annuaire de 1200 entreprises en informatique sur".$site 0000
i //expression 3
: echo ١3000 offres d'emploi en informatique et électronique sur $site' ;
| //expression 4
: echo "Annuaire de 1200 entreprises en informatique sur'.$site ;
Quelle expression ne va pas afficher emploi.ma dans la phrase 7
‎L'expression 2‏ نا
‎L'expression 3 ;‏ نا
‎L'expression 4‏ نا
‎L'expression 1‏ نا
‎Question 36.
‎| $site='recrutement.org' !ْ
‎| //expression 1 ‏أ:‎
‎i echo "58166 : Annuaire des cabinets de recrutement " ;
‎: //expression 2
‎| echo $site.': Annuaire des cabinets de recrutement ; 1
‎Quelle expression est exécutée la plus rapidement 7
‎Cela va dépendre de la version de l’interpréteur PHP‏ نا
‎L'expression 2 est exécutée la plus rapidement‏ نا
‎L’expression 1 est exécutée la plus rapidement‏ نا
‎Les expressions 1 et 2 sont exécutées à la même vitesse‏ نا
‎Question 37.
‎Code‏ أ
‎SSSR RER RSR OS ARR BRIE RCA RE
‎! //Note : le serveur a le magic quotes gpc à on
‏ص , ص , = و ,7 = ا
‎; //0On cherche à faire une requête SQL à la fois correcte et sécurisée
‎| //expression 1 :
‎: $myVariable=stripslashes ($ POST['myVariable']) ;
‎| $Squerysprintf ("INSERT INTO products ('name') VALUES('%s')",
‎E Mysql real escape string($myVariable,$link) );
‎: //expression 2
‎i $myVariable=$ POST['myVariable'];
‎: $query=sprintf ("INSERT INTO products ('name') VALUES('%s'})",
‎i $myVariable) ; |
‎| //expression 3
‎| $myVariable=stripslashes ($ POST['myVariable']) ï
‎| $query=sprintf ("INSERT INTO products ('name') VALUES('%s')",
‎Addslashes ($myVariable) 7‏ ا
‎ //expression 4
‎١ $SmyVariable=$ POST['myVariable'] ;
‎Squerysprintf ("INSERT INTO products ('name') VALUES('%s')",‏ أ
‎Mysql real escape string($myVariable, $link) ); |
Page 13
‏نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

Quelle expression faut-il privilégier pour construire une requête SQL juste et sécurisée ?
‎L'expression 4‏ نا
‎L'expression 1‏ نا
‎L'expression 2‏ نا
‎L'expression 3‏ نا
‎Question 38.
‎RON TRE
| //Définition de fonction n°1
function addtionne ($b){
$a=$a+$b ;
: //Définition de fonction n°2
| function addtionne ($b){
static $a ;
i $a=$a+$b ; i
| //Définition de fonction n°3
function addtionne ($b) {
global $a,$b ;
!: $a=$a+$b ;
‏إٍْ إٍْ‎
| //Définition de fonction n°4
! function addtionne ($b) {
| global $a ;
:. $a=$a+$b ;
ْ ‏إٍْ‎
‎| <?php
i // code utilisant la fonction
: $a=1l;
| additionne (2);
| echo $a;
uelle définition de la fonction additionne() donne comme résultat "3" lors de l’appel
‎additionne(2) ?
‎[1 Définition 4
‎[1 Définition 3
‎Définition 1‏ لا
‎[1 Définition 3
‎Question 39.
‎| <?php
| $Stableau=array(1,2,3) ;
i Stableau[]=0;
55816812 11 24 ‏ا ا ااا‎
‎Page 14‏
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

l'array_pop($tableau); ‏امح ردن‎
i array shift ($tableau) ;
! for($i=0;$i<count ($tableau) ; $i++) {
l echo $tableaul[si].'';
Quel est le résultat du code ci-dessus 9 ‏اا‎
‎Ce code donne comme affichage : 023 .‏ نا
‎Ce code donne comme affichage : 43 2‏ نا
‎Ce code donne comme affichage : 23 0‏ نا
‎Ce code donne comme affichage : 2 3 4‏ نآ
‎Question 40.
‎| <?php
| class classA{
| var $i=0 ;
function classA($value) {
$thisdi-$value;
i function afficher(){
| echo $this>i.'';
class classB extends classA{
! var $3=0;
| function classB($valuel, $value2) {
| SthisDi=$valuel;
i $Sthisdj-$value2; i
01 ‏ض‎
‎! function afficher )( 4
| echo $Sthisdi.' !'.$thisdj." ‏وا‎
‎! $objl=new classA(1);
| $obj2=new classB(2,3);
echo $obj1>afficher();
! echo $obj2>afficher ();
Quelle affirmation est vraie 9 ‏ا‎
‏نا‎ Ce code donne comme affichage : 1 1
‎Ce code donne comme affichage : 023‏ نا
‎Ce code donne comme affichage : 123‏ نا
‎L'héritage est interdit en PHP, ce code génère une erreur‏ نا
‎Page 15‏
نماذج المباريات من موقع وظيفة إنفو ‎wadifa-info.com‏

✅ Correction proposée

Il s'agit d'une correction proposée, rédigée par l'équipe wadifa-info pour vous aider à comprendre la méthode — ce n'est pas un corrigé officiel de l'administration organisatrice.

Ce modèle est l'épreuve professionnelle du concours de recrutement de cadres supérieurs en études et développement informatique de la Caisse Nationale de Sécurité Sociale (CNSS), session du 17 novembre 2013. Elle compte 40 questions en deux parties : Conception (UML, algorithmique, questions 1 à 4) et Développement (Java/JEE, middleware, PHP, questions 5 à 40), sous forme de questions à réponse directe et de QCM à une ou plusieurs réponses. Durée et barème non imprimés. Les réponses sont données selon les versions en usage en 2013 (Java 7, PHP 5), avec une remarque quand le comportement a changé depuis.

💡 Méthode : pour les questions « que affiche ce code ? », exécutez le code à la main, ligne par ligne, en notant la valeur des variables. Vérifiez d'abord qu'il compile : plusieurs questions (24, 28) testent justement les erreurs de compilation.

Partie I : Conception

Question 1 — Fonctions trigonométriques

Il faut regrouper des fonctions qui ne dépendent d'aucun état : on propose une classe utilitaire (stéréotype UML «utility»), non instanciable, dont toutes les opérations et la constante sont statiques (soulignées en UML), et qui utilise la classe Angle existante (dépendance).

«utility»  Trigonometrie
-----------------------------------------
+ PI : double = 3.14159265...  {readOnly}   (statique)
-----------------------------------------
+ sin(a : Angle) : double                  (statique)
+ cos(a : Angle) : double                  (statique)
+ tan(a : Angle) : double                  (statique)
- Trigonometrie()                          (constructeur privé)

Trigonometrie - - - - - - > Angle   (dépendance « utilise »)

C'est exactement le modèle de java.lang.Math. On ne met pas ces méthodes dans Angle pour ne pas alourdir cette classe et parce que PI n'appartient à aucun angle particulier.

Question 2 — Abonnements : schéma A ou B ?

Réponse probable : le schéma B.

  • Dans le schéma A, Abonnement est une classe d'association : il ne peut exister qu'une seule instance d'Abonnement par couple (Personne, Magazine). Une personne qui se réabonne au même magazine après expiration ne peut pas avoir deux abonnements distincts.
  • Dans le schéma B, Abonnement est une classe à part entière reliée à une Personne (1) et à un Magazine (1) : une personne peut avoir plusieurs abonnements successifs au même magazine, chacun avec sa date d'expiration et ses règlements (1 abonnement — * règlements). C'est plus fidèle à l'énoncé (« pour chaque abonnement… date d'expiration ») et plus facile à traduire en tables.

Question 3 — Association qualifiée

AssociationCôté BanqueCôté Compte
Non qualifiée (numeroDeCompte attribut de Compte)1* (0..*)
Qualifiée par numeroDeCompte10..1

Le qualificatif réduit la multiplicité : pour une banque et un numéro donnés, on trouve au plus un compte (0..1 si le numéro n'est pas attribué). Un compte appartient toujours à une seule banque (1).

Question 4 — Activité strlen

Diagramme d'activité (décrit en étapes) :

  1. Nœud initial → action « i ← 0 ».
  2. Décision : s[i] = '\0' ?
  3. [non] → action « i ← i + 1 » → retour à la décision (boucle).
  4. [oui] → action « retourner i » → nœud final.
int strlen(char s[]) {
    int i = 0;
    while (s[i] != '\0')
        i++;
    return i;
}

Vérification sur "hello!" : s[0]..s[5] sont non nuls, s[6] = '\0', la boucle s'arrête avec i = 6.

Partie II : Développement

  1. M. Hibernate est un framework de persistance (ORM) : il appartient à la couche Modèle (accès aux données), pas au contrôleur ni à la vue.
  2. singleton. Par défaut, le conteneur Spring crée une seule instance par bean ; prototype, request et session doivent être déclarés explicitement.
  3. LinkedHashMap. Elle conserve l'ordre d'insertion des clés (liste doublement chaînée) ; HashMap et Hashtable n'ont pas d'ordre, TreeMap trie les clés (« TreeTable » n'existe pas).
  4. Réponse probable : « en opposition avec EJB » et « possibilité de déployer sur un conteneur de servlets (Tomcat) ». Spring est dit « léger » par opposition aux conteneurs EJB lourds : objets POJO non intrusifs, pas besoin d'un serveur d'applications complet. La taille des jars n'est pas le critère.
  5. Réponse probable : utiliser ejbSelect() dans les méthodes ejbHome afin de renvoyer des entity beans. Les méthodes ejbSelect (EJB 2.x, beans CMP) sont des requêtes internes au bean, non exposées au client, appelées depuis les méthodes métier ou les méthodes home ; elles renvoient des entity beans ou des valeurs de champs CMP. Elles ne s'utilisent pas dans les session beans.
  6. Pour spécifier une implémentation concrète des méthodes « find » et « select » des CMP entity beans. EJB QL décrit, dans le descripteur de déploiement, la requête portable que le conteneur traduit en SQL pour chaque finder (sauf findByPrimaryKey, implicite) et chaque ejbSelect.
  7. Réponse 2 (et la réponse 3 est un cas particulier acceptable) : un middleware est une couche logicielle intermédiaire qui permet au client et au serveur de communiquer (messages, appels distants). Un ORB est un type de middleware. La réponse 1 est fausse : Eclipse est un environnement de développement.
  8. Non. CORBA convient bien à un intranet (réseau maîtrisé, applications hétérogènes) ; ses difficultés concernent surtout Internet (pare-feu, ports).
  9. Une API (fonctions de base de l'ORB), un service de nommage, un compilateur IDL. La réponse 1 décrit Java RMI, la réponse 2 des outils de développement.
  10. Réponse 1. En RMI, la classe de l'objet distant hérite de UnicastRemoteObject et implémente une interface (qui étend Remote) décrivant les méthodes distantes.
  11. OUI. CORBA est la norme de middleware objet de l'OMG.
  12. NON. Un design pattern est une solution réutilisable à un problème de conception récurrent ; la description normalisée des interfaces relève d'un langage comme IDL.
  13. OUI. Un pattern décrit un principe de conception (structure, rôles), indépendamment d'une implémentation.
  14. Un fichier .class contient du binaire indépendant de la plateforme : le bytecode, exécuté par la JVM.
  15. Fausse : « Une interface peut contenir des déclarations de méthodes static et non static ». C'était faux jusqu'à Java 7 (version de 2013). Remarque : depuis Java 8 (2014), les interfaces acceptent des méthodes static et default, et cette affirmation est devenue vraie.
  16. Fausse : « Une classe peut étendre plusieurs classes abstraites ». Java n'a pas d'héritage multiple de classes.
  17. Fausse : « Le Garbage Collector évite automatiquement toute perte de mémoire ». Un objet encore référencé par erreur (collection statique, listener non retiré) n'est jamais libéré : les fuites restent possibles. System.gc() permet bien de demander son lancement.
  18. o1, o2 et o3 ont comme valeur true. Un B est un A (héritage), un B, et tout objet est un Object.
  19. i=12. i = 0 à 3 : rien. i = 4 : 4 % 5 == 4 → i = 12, puis i-- → 11 ; l'incrément de la boucle donne 12 ; 12 < 10 est faux, on sort. Affichage : i=12.
  20. Erreur à la compilation. La variable locale p est utilisée sans être initialisée (« variable p might not have been initialized ») ; de plus system.out (minuscule) ne compile pas.
  21. 5 instances. 1 pour le champ statique centerPoint (initialisation de la classe) + pour p1 : 1 + 1 (le constructeur crée un nouveau Point()) + pour p2 : 1 + 1 = 5.
  22. mx est accessible des sous-classes de A et my n'est accessible que par la classe A. protected = package + sous-classes ; private = la classe seule.
  23. mx est accessible par toutes les classes du package test. Sans modificateur, la visibilité est « package » : une sous-classe située dans un autre package n'y a pas accès.
  24. 2 erreurs de compilation. Une classe imbriquée static n'a pas d'instance englobante : A peut modifier my (statique), mais B (mx++) et C (mz++) accèdent à des champs d'instance → 2 erreurs.
  25. Arithmetic Exception,Finally Clause, — 1/0 lève ArithmeticException, captée par le second catch ; le finally s'exécute même après return.
  26. 2 2 2 1 1 1. firstThread démarre secondThread puis attend sa fin avec join() avant d'afficher ses « 1 ». (Le code imprimé contient des coquilles, vois et InterrupteException, qui empêcheraient la compilation ; la question porte évidemment sur le comportement de join.)
  27. Cette classe peut provoquer un blocage (dead lock). incV1V2 prend lock1 puis lock2, mulV1V2 prend lock2 puis lock1 : deux threads peuvent chacun tenir un verrou et attendre l'autre. Les autres affirmations sont fausses (v1 et v2 peuvent être lues en même temps par deux threads différents, v1 est toujours modifiée sous lock1, aucune méthode ne lève InterruptedException).
  28. Généralement, checkArray() est la plus rapide et checkVector() la plus lente. Accès direct au tableau, puis ArrayList (non synchronisée), puis Vector dont chaque get() est synchronisé.
  29. Elle encode les caractères spéciaux HTML afin d'éviter toute injection de balises (XSS) : < devient &lt;, > devient &gt;, & devient &amp;, " devient &quot;.
  30. Par $_POST['nom'] ou $_REQUEST['nom']. Le formulaire utilise method='post' ; $_REQUEST regroupe GET, POST (et cookies selon la configuration).
  31. L'expression 3. Entre apostrophes, PHP n'interprète pas les variables : elle affiche littéralement « $site ». L'expression 4 concatène et affiche bien emploi.ma.
  32. Réponse probable : l'expression 2. La chaîne entre apostrophes n'est pas analysée et la concaténation évite l'interpolation ; c'était la réponse classique en PHP 5. La différence est négligeable dans les versions récentes.
  33. L'expression 1. Avec magic_quotes_gpc activé, les données sont déjà échappées : on retire ces antislashs (stripslashes) puis on échappe correctement pour MySQL (mysql_real_escape_string), sinon on obtient un double échappement (expression 4) ou une injection SQL (expression 2) ; addslashes (expression 3) ne tient pas compte du jeu de caractères de la connexion. (Le signe = manque dans $querysprintf, coquille d'impression.) Aujourd'hui : magic_quotes a été supprimé (PHP 5.4) et l'extension mysql (PHP 7) ; on utilise des requêtes préparées (PDO ou mysqli).
  34. Définition 4. global $a donne accès au $a du script : 1 + 2 = 3. Définition 1 : $a local non défini. Définition 2 : $a statique local. Définition 3 : global $b remplace le paramètre par la variable globale $b (inexistante, donc null) → $a reste 1.
  35. 2 3 0. Tableau : [1, 2, 3] → ajout 0 et 4 → [1, 2, 3, 0, 4] ; array_pop retire 4 ; array_shift retire 1 et réindexe → [2, 3, 0]. (Le .'' n'ajoute pas d'espace : l'affichage exact est « 230 ».)
  36. Ce code donne comme affichage : 1 2 3. En PHP 5, une méthode portant le nom de la classe sert de constructeur : obj1 a i = 1, obj2 a i = 2 et j = 3. afficher() fait l'affichage (le echo de son résultat null n'ajoute rien). Remarque : depuis PHP 8, ces constructeurs « à l'ancienne » ne sont plus reconnus (il faut __construct).

💡 À retenir : cette épreuve date de 2013 (EJB 2, CORBA, mysql_*). Les principes restent demandés (visibilité, héritage, threads, injections SQL/XSS), mais révisez aussi les équivalents actuels : JPA, Spring Boot, API REST, requêtes préparées.

Un nouveau sujet de concours chaque jour sur WhatsApp

Questions fréquentes sur ce sujet

Ce sujet est-il téléchargeable gratuitement ?
Oui. La totalité du sujet (15 pages) est consultable et téléchargeable gratuitement, sans inscription ni compte.
Le corrigé est-il inclus ?
Oui. Un corrigé proposé figure sur cette page, sous les pages du sujet : méthode de réponse et éléments attendus, rédigés par l'équipe Wadifa Info.
Quel organisme et quel grade concerne ce sujet ?
Ce sujet provient d'un concours organisé par Caisse Nationale de Sécurité Sociale (CNSS). Il concerne le grade : Cadre supérieur en études et développement informatique.
De quelle session s'agit-il et dans quelle langue ?
Session : 17 novembre 2013. Les questions sont en français.
Où trouver d'autres sujets du même concours ?
Tous nos sujets de la même famille sont regroupés sur la page Établissements et offices publics : /fr/modeles-concours/etablissements-publics. Les sujets y sont classés par session, du plus récent au plus ancien.

Source : archive de modèles de concours — document archivé tel que reçu ; l'avis officiel du concours fait foi.

}
Utile ? Envoyez-le à quelqu'un qui cherche
WhatsApp Facebook Telegram
📲
Installez Wadifa Info sur votre iPhone : appuyez sur le bouton Partager en bas de Safari, puis sur Sur l'écran d'accueil. Les nouveaux concours, sans passer par le navigateur.