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
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
📝 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
| Association | Côté Banque | Côté Compte |
|---|---|---|
| Non qualifiée (numeroDeCompte attribut de Compte) | 1 | * (0..*) |
| Qualifiée par numeroDeCompte | 1 | 0..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) :
- Nœud initial → action « i ← 0 ».
- Décision : s[i] = '\0' ?
- [non] → action « i ← i + 1 » → retour à la décision (boucle).
- [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
- 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.
- singleton. Par défaut, le conteneur Spring crée une seule instance par bean ; prototype, request et session doivent être déclarés explicitement.
- 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).
- 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.
- 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.
- 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.
- 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.
- Non. CORBA convient bien à un intranet (réseau maîtrisé, applications hétérogènes) ; ses difficultés concernent surtout Internet (pare-feu, ports).
- 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.
- Réponse 1. En RMI, la classe de l'objet distant hérite de
UnicastRemoteObjectet implémente une interface (qui étendRemote) décrivant les méthodes distantes. - OUI. CORBA est la norme de middleware objet de l'OMG.
- 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.
- OUI. Un pattern décrit un principe de conception (structure, rôles), indépendamment d'une implémentation.
- Un fichier .class contient du binaire indépendant de la plateforme : le bytecode, exécuté par la JVM.
- 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
staticetdefault, et cette affirmation est devenue vraie. - Fausse : « Une classe peut étendre plusieurs classes abstraites ». Java n'a pas d'héritage multiple de classes.
- 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. - o1, o2 et o3 ont comme valeur true. Un B est un A (héritage), un B, et tout objet est un Object.
- 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. - Erreur à la compilation. La variable locale
pest utilisée sans être initialisée (« variable p might not have been initialized ») ; de plussystem.out(minuscule) ne compile pas. - 5 instances. 1 pour le champ statique
centerPoint(initialisation de la classe) + pour p1 : 1 + 1 (le constructeur crée un nouveauPoint()) + pour p2 : 1 + 1 = 5. - 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.
- 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.
- 2 erreurs de compilation. Une classe imbriquée
staticn'a pas d'instance englobante : A peut modifiermy(statique), mais B (mx++) et C (mz++) accèdent à des champs d'instance → 2 erreurs. - Arithmetic Exception,Finally Clause, — 1/0 lève
ArithmeticException, captée par le second catch ; lefinallys'exécute même aprèsreturn. - 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,voisetInterrupteException, qui empêcheraient la compilation ; la question porte évidemment sur le comportement de join.) - 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).
- 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é. - Elle encode les caractères spéciaux HTML afin d'éviter toute injection de balises (XSS) : < devient
<, > devient>, & devient&, " devient". - Par $_POST['nom'] ou $_REQUEST['nom']. Le formulaire utilise
method='post';$_REQUESTregroupe GET, POST (et cookies selon la configuration). - 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.
- 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.
- L'expression 1. Avec
magic_quotes_gpcactivé, 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). - Définition 4.
global $adonne 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 $bremplace le paramètre par la variable globale $b (inexistante, donc null) → $a reste 1. - 2 3 0. Tableau : [1, 2, 3] → ajout 0 et 4 → [1, 2, 3, 0, 4] ;
array_popretire 4 ;array_shiftretire 1 et réindexe → [2, 3, 0]. (Le.''n'ajoute pas d'espace : l'affichage exact est « 230 ».) - 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 (leechode 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.
Questions fréquentes sur ce sujet
Ce sujet est-il téléchargeable gratuitement ?
Le corrigé est-il inclus ?
Quel organisme et quel grade concerne ce sujet ?
De quelle session s'agit-il et dans quelle langue ?
Où trouver d'autres sujets du même concours ?
Vous préparez ce concours ?
Modèles similaires
Source : archive de modèles de concours — document archivé tel que reçu ; l'avis officiel du concours fait foi.
}
