Questions Factices pour Certification Java SCJP CX310-055
Date de publication : 14/11/2005 , Date de mise à jour : 14/11/2005
Par
Kathy Sierra (wickedlysmart)
Bert Bates (wickedlysmart)
Vincent Brabant (Traducteur) (Java, NetBeans, et Co)
Developpez.com a obtenu la permission de traduire en français des questions
factices, tirées du nouveau livre concernant la certification SCJP 310-055,
écrit par Kathy Sierra et Bert Bates. J'espère que cela vous plaira énormément.

Couverture Livre SCJP 310-055
1. Remarques
- L'examen réel vous dira le nombre exact de réponses valides;
nous ne le faisons pas car nous voulions que ce quizz soit un peu
plus dur que l'examen réel.
- L'examen réel contient des questions "Tirer-Lâcher" ;
nous avons formatté la question #9 pour reflêter la façon dont les
questions de tirer-lâcher sont posées (mais sans avoir la partie
interactive vu que c'est sur papier).
- Ces questions sont une bonne représentation du ton, du
style, de la difficulté et du contenu de l'examen réel. Si vous avez
déjà passé des versions précédentes de l'examen SCJP, vous allez
noter une grande différence - on est passé de questions " basées sur
la connaissance ", qui posaient une questions spécifique à propos
d'une règle Java, à des questions " basées sur la performance " où
vous devez analyser du code et ensuite appliquer votre connaissance
Java pour trouver ce qui se passe. Vous trouverez moins de questions
concernant le langage (ou la mémorisation d'API) mais plus de
questions pour voir si vous savez comment le langage fonctionne
vraiment. Aussi les questions que nous vous proposons ici sont
axées sur les nouvelles fonctionnalités de Tiger/Java 5.
- Vous avez raison - il y a des bouts de code dans l'examen
pour lesquels vous seriez renvoyé si vous écriviez du code comme
cela à votre travail. Les développeurs de l'examen ont essayé de
réduire cela autant que possible, car nous désirons que vous soyez
préparé pour des réelles choses.
- Le livre inclut les explications pour les réponses - nous
ne l'avons pas fait ici parce que nous n'avions pas encore fini
cette partie. Ces questions ont été béta-testées, nous sommes donc
confiant quant à l'exactitude des réponses... mais vous savez comment
vont les choses. Si vous ne comprenez pas une réponse, passez par le
forum concernant les certifications SCJP, où les questions ont été
débatues. N'hésitez pas à poser vos questions. Mais nous (Kathy et
Bert) ne seront pas capables de répondre personellement à vos
questions. Raison pour laquelle JavaRanch est la meilleure place pour
poser vos questions. [NdT: et http://java.developpez.com, la meilleure
place pour les francophones]
- Nous travaillons sur la mise à jour du livre aussi vite que
nous le pouvons ! Il devrait être disponible sur Amazon fin septembre
ou début octobre. [Ndt: Ce sera plutôt pour Janvier 2006].
Désolé pour le retard !!! Bonne chance pour vos études.
- Ces questions sont protégées par copyrights 2005 Kathy
Sierra & Bert Bates. Notre publieur demande que nous précisons
cela. Vous pouvez partager le lien vers cette page, vous pouvez
imprimer cette page et la diffuser aux autres, mais veuillez ne pas
les reproduire dans un autre livre ou examen factice (mock exam).
2. Questions Factices
2.1. Question 1
Étant donné:
enum Cheval {
PONEY(10),
CHEVAL(15);
Cheval(int mains) {
this.hauteur = mains;
this.longueur = mains * 100;
}
int hauteur;
int longueur;
int getLongueur() { return longueur; }
void setLongueur(int w) { longueur = w; }
}
class Stable {
public static void main(String [] salut) {
Cheval h = Cheval.ISLANDAIS;
System.out.println(h.getLongueur () + " " + h.hauteur);
}
}
|
Qu'est ce qui, inséré à la place de '// insérer le code ici', produit le résultat:
? (Choisissez toutes les possibilités.)
- ISLANDAIS(13) { longueur = 800; },
- ISLANDAIS(13) { setLonguer(800); },
- ISLANDAIS(13) { this.longueur = 800; },
- ISLANDAIS(13) { public int getLongueur() { return 800; } },
- Aucun du code ci-dessus va produire le résultat demandé.
- Du fait de la présence d'autres erreurs dans le code, aucun des choix proposés ne permettra la compilation.
2.2. Question 2
Étant donné:
1. class Aïe {
2. public static void main(String [] args) {
3. faitQuelqueChose(1);
4. faitQuelqueChose(1,2);
5. }
6.
7. }
|
Qu'est ce qui, inséré à la ligne 6, va compiler?
(Choisissez toutes les possibilités.)
- static void faitQuelqueChose(int... doArgs) { }
- static void faitQuelqueChose(int[] doArgs) { }
- static void faitQuelqueChose(int doArgs...) { }
- static void faitQuelqueChose(int... doArgs, int y) { }
- static void faitQuelqueChose(int x, int... doArgs) { }
- Aucun des bouts de code donnés ci-dessus ne permet la compilation.
2.3. Question 3
Étant donné:
class Oiseau {
{ System.out.print("b1 "); }
public Oiseau() { System.out.print("b2 "); }
}
class Rapace extends Oiseau {
static { System.out.print("r1 "); }
public Rapace() { System.out.print("r2 "); }
{ System.out.print("r3 "); }
static { System.out.print("r4 "); }
}
class Aigle extends Rapace {
public static void main(String[] args) {
System.out.print("pre ");
new Aigle();
System.out.println("aigle ");
}
}
|
Quel est le résultat?
- pre b1 b2 r3 r2 aigle
- pre b2 b1 r2 r3 aigle
- pre b2 b1 r2 r3 aigle r1 r4
- r1 r4 pre b1 b2 r3 r2 aigle
- r1 r4 pre b2 b1 r2 r3 aigle
- pre r1 r4 b1 b2 r3 r2 aigle
- pre r1 r4 b2 b1 r2 r3 aigle
- L'ordre d'affichage ne peut être prédit
- La compilation échoue
2.4. Question 4
Quelle exception est typiquement lancée
par un développeur d'API ou un développeur d'Application
contrairement à ce qui est lancé généralement par la JVM ?
(Choisissez toutes les possibiltés.)
- ClassCastException
- IllegalStateException
- NumberFormatException
- IllegalArgumentException
- ExceptionInInitializerError
2.5. Question 5
Étant donné:
class Oeufs {
int doX(Long x, Long y) { return 1; }
int doX(long... x) { return 2; }
int doX(Integer x, Integer y) { return 3; }
int doX(Number n, Number m) { return 4; }
public static void main(String[] args) {
new Oeufs().go();
}
void go() {
short s = 7;
System.out.print(doX(s,s) + " ");
System.out.println(doX(7,7));
}
}
|
Quel est le résultat?
- 1 1
- 2 1
- 3 1
- 4 1
- 1 3
- 2 3
- 3 3
- 4 3
2.6. Question 6
Étant donné:
import java.io.*;
class Joueur {
Joueur () { System.out.print("p"); }
}
class JoueurDeCartes extends Joueur implements Serializable {
JoueurDeCartes () { System.out.print("c"); }
public static void main(String[] args) {
JoueurDeCartes c1 = new JoueurDeCartes();
try {
FileOutputStream fos = new FileOutputStream("jeu.txt");
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(c1);
os.close();
FileInputStream fis = new FileInputStream("jeu.txt");
ObjectInputStream is = new ObjectInputStream(fis);
JoueurDeCartes c2 = (JoueurDeCartes) is.readObject();
is.close();
} catch (Exception x ) { }
}
}
|
Quel est le résultat?
- pc
- pcc
- pcp
- pcpc
- Compilation échoue
- Une exception est jetée à l'exécution
2.7. Question 7
Étant donné:
import java.util.regex.*;
class Regex2 {
public static void main(String[] args) {
Pattern p = Pattern.compile(args[0]);
Matcher m = p.matcher(args[1]);
boolean b = false;
while(b = m.find()) {
System.out.print(m.start() + m.group());
}
}
}
|
Et la ligne de commande
Quel est le résultat?
- 234
- 334
- 2334
- 0123456
- 01234456
- 12334567
- Compilation échoue
2.8. Question 8
Étant donné:
bw est une référence à un objet valide de type BufferedWriter
Et le bout de code suivant:
15 BufferedWriter b1 = new BufferedWriter(new File("f"));
16. BufferedWriter b2 = new BufferedWriter(new FileWriter("f1"));
17. BufferedWriter b3 = new BufferedWriter(new PrintWriter("f2"));
18. BufferedWriter b4 = new BufferedWriter(new BufferedWriter(bw));
|
Quel est le résultat?
- Compilation réussie
- Compilation échoue du à une erreur à la ligne 15.
- Compilation échoue du à une erreur à la ligne 16.
- Compilation échoue du à une erreur à la ligne 17.
- Compilation échoue du à une erreur à la ligne 18.
- Compilation échoue du à une erreur sur plusieurs lignes.
2.9. Question 9
En utilisant les fragments de code ci-dessous,
compléter le code suivant pour qu'il compile et qu'il
affiche "40 36 30 28". Note, vous pouvez utiliser un fragment
autant de fois que nécessaire, ou même pas du tout.
| CODE: |
import java.util.*;
class Pantalon { int taille; Pantalon(int s) { taille = s; } }
public class GardeRobe {
List ________ p = new ArrayList ________ ();
class Comp implements Comparator ________ {
public int ________( Pantalon one, Pantalon two) {
return ________ - ________;
}
}
public static void main(String[] args) {
new GardeRobe().go();
}
void go() {
p.add(new Pantalon(30));
p.add(new Pantalon(36));
p.add(new Pantalon(28));
p.add(new Pantalon(40));
Comp c = new Comp();
Collections. ________ ________;
for( ________ x : p)
System.out.print(________ + " ");
}
}
|
| FRAGMENT: |
<Pantalon> <GardeRobe> <Comp> <Comparator>
Pantalon GardeRobe Comp Comparator
compare compareTo sort order
one.size two.size x.size p.size
c.size (p, c) (c, p) sortList
|
2.10. Question 10
Étant donné les trois fichiers sources suivants :
1. package org;
2. public class Robot { }
|
1. package org.ex;
2. public class AnimalDomestique { }
|
1. package org.ex.pourquoi;
2. public class Chien { int foo = 5; }
|
Et ce fichier, incomplet:
public class MaClasse {
Robot r;
AnimalDomestique p;
Chien d;
void go() {
int x = d.foo;
}
}
|
Quelle(s) instruction(s) doit(vent) être rajoutée(s)
à MaClasse pour que cela compile ?
(Choisissez toutes les possibilités.)
- package org;
- import org.*;
- package org.*;
- package org.ex;
- import org.ex.*;
- import org.ex.pourquoi;
- package org.ex.pourquoi;
- package org.ex.pourquoi.Chien;
2.11. Question 11
Étant donné:
1. import java.util.*;
2. public class Fruits {
3. public static void main(String [] args) {
4. Set<Citron> c1 = new TreeSet<Citron>();
5. Set<Orange> o1 = new TreeSet<Orange>();
6. mordre(c1);
7. mordre(o1);
8. }
9.
10. }
11. class Citron { }
12. class Orange extends Citron { }
|
Qu'est-ce qui, inséré en ligne 9, permettra la
compilation ? (Choisissez toutes les possibilités.)
- public static void mordre(Set<?> s) { }
- public static void mordre(Set<Object> s) { }
- public static void mordre(Set<Citron> s) { }
- public static void mordre(Set<? super Citron> s) { }
- public static void mordre(Set<? super Orange> s) { }
- public static void mordre(Set<? extends Citron> s) { }
- Du fait de la présence d'autres erreurs dans le code,
aucune de ces lignes ne permettra la compilation.
3. Réponses
3.1. Réponse 1
D est correct. (objectif 1.1)
3.2. Réponse 2
A et E utilise une syntaxe var-args valide. (objectif 1.1)
3.3. Réponse 3
D est correct. Note: vous ne verrez probablement jamais
autant de choix dans le vrai examen! (objectif 1.3)
3.4. Réponse 4
B, C et D sont corrects. (objectif 2.6)
3.5. Réponse 5
H est correct. (objectif 3.1)
3.6. Réponse 6
C est correct. (objectif 3.3)
3.7. Réponse 7
E est correct. (objectif 3.5)
3.8. Réponse 8
B est correct. (objectif 3.2)
3.9. Réponse 9
Le code correct est :
import java.util.*;
class Pants { int size; Pants(int s) { size = s; } }
public class FoldPants {
List<Pants> p = new ArrayList<Pants>();
class Comp implements Comparator <Pants> {
public int compare(Pants one, Pants two) {
return two.size - one.size;
}
}
public static void main(String[] args) {
new FoldPants().go();
}
void go() {
p.add(new Pants(30));
p.add(new Pants(36));
p.add(new Pants(28));
p.add(new Pants(40));
Comp c = new Comp();
Collections.sort(p, c);
for(Pants x : p)
System.out.print(x.size + " ");
}
}
|
(objectif 6.5)
3.10. Réponse 10
B, E, et G sont requis. (objectif 7.5)
3.11. Réponse 11
A, E, et F sont des utilisations correctes des génériques,
avec des (bounded) jokers. (objectif 6.4)
4. Références


Copyright © 2005 Kathy Sierra & Bert Bates.
Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.