Developpez.com

Club des développeurs et IT pro
Plus de 4 millions de visiteurs uniques par mois

Questions Factices pour Certification Java SCJP CX310-055

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.

Article lu   fois.

Les trois auteurs

Site personnel

Site personnel

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   
Couverture Livre SCJP 310-055 de Kathy Sierra et Bert Bates
Couverture Livre SCJP 310-055

1. Remarques

  1. 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.
  2. 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).
  3. 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.
  4. 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.
  5. 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]
  6. 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.
  7. 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é:

 
Sélectionnez

enum Cheval {
  PONEY(10),
  // insérer le code ici
  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:

 
Sélectionnez

800 13 

? (Choisissez toutes les possibilités.)

  1. ISLANDAIS(13) { longueur = 800; },
  2. ISLANDAIS(13) { setLonguer(800); },
  3. ISLANDAIS(13) { this.longueur = 800; },
  4. ISLANDAIS(13) { public int getLongueur() { return 800; } },
  5. Aucun du code ci-dessus va produire le résultat demandé.
  6. 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é:

 
Sélectionnez

1. class Aïe {
2.   public static void main(String [] args) {
3.     faitQuelqueChose(1);
4.     faitQuelqueChose(1,2);
5.   }
6.   // insérer le code ici
7. }

Qu'est ce qui, inséré à la ligne 6, va compiler? (Choisissez toutes les possibilités.)

  1. static void faitQuelqueChose(int... doArgs) { }
  2. static void faitQuelqueChose(int[] doArgs) { }
  3. static void faitQuelqueChose(int doArgs...) { }
  4. static void faitQuelqueChose(int... doArgs, int y) { }
  5. static void faitQuelqueChose(int x, int... doArgs) { }
  6. Aucun des bouts de code donnés ci-dessus ne permet la compilation.

2.3. Question 3

Étant donné:

 
Sélectionnez

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?

  1. pre b1 b2 r3 r2 aigle
  2. pre b2 b1 r2 r3 aigle
  3. pre b2 b1 r2 r3 aigle r1 r4
  4. r1 r4 pre b1 b2 r3 r2 aigle
  5. r1 r4 pre b2 b1 r2 r3 aigle
  6. pre r1 r4 b1 b2 r3 r2 aigle
  7. pre r1 r4 b2 b1 r2 r3 aigle
  8. L'ordre d'affichage ne peut être prédit
  9. 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.)

  1. ClassCastException
  2. IllegalStateException
  3. NumberFormatException
  4. IllegalArgumentException
  5. ExceptionInInitializerError

2.5. Question 5

Étant donné:

 
Sélectionnez

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 1
  2. 2 1
  3. 3 1
  4. 4 1
  5. 1 3
  6. 2 3
  7. 3 3
  8. 4 3

2.6. Question 6

Étant donné:

 
Sélectionnez

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?

  1. pc
  2. pcc
  3. pcp
  4. pcpc
  5. Compilation échoue
  6. Une exception est jetée à l'exécution

2.7. Question 7

Étant donné:

 
Sélectionnez

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

 
Sélectionnez

java Regex2 "\d*" ab34ef

Quel est le résultat?

  1. 234
  2. 334
  3. 2334
  4. 0123456
  5. 01234456
  6. 12334567
  7. 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:

 
Sélectionnez

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?

  1. Compilation réussie
  2. Compilation échoue du à une erreur à la ligne 15.
  3. Compilation échoue du à une erreur à la ligne 16.
  4. Compilation échoue du à une erreur à la ligne 17.
  5. Compilation échoue du à une erreur à la ligne 18.
  6. 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:
Sélectionnez

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:
Sélectionnez

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

 
Sélectionnez

1. package org;  
2. public class Robot { }
 
Sélectionnez

1. package org.ex;  
2. public class AnimalDomestique { }
 
Sélectionnez

1. package org.ex.pourquoi;  
2. public class Chien { int foo = 5; }

Et ce fichier, incomplet:

 
Sélectionnez

// insérer le code ici
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.)

  1. package org;
  2. import org.*;
  3. package org.*;
  4. package org.ex;
  5. import org.ex.*;
  6. import org.ex.pourquoi;
  7. package org.ex.pourquoi;
  8. package org.ex.pourquoi.Chien;

2.11. Question 11

Étant donné:

 
Sélectionnez

 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.   // insérer du code ici
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.)

  1. public static void mordre(Set<?> s) { }
  2. public static void mordre(Set<Object> s) { }
  3. public static void mordre(Set<Citron> s) { }
  4. public static void mordre(Set<? super Citron> s) { }
  5. public static void mordre(Set<? super Orange> s) { }
  6. public static void mordre(Set<? extends Citron> s) { }
  7. 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 :

 
Sélectionnez

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

Mes articles:
fr Ma page d'accueil
fr Mon Blog
Liens concernant NetBeans:
fr Tous les cours & tutoriaux NetBeans
fr La FAQ consacrée NetBeans
fr Tous les cours & tutoriaux Java
fr Les blogs en français consacré à NetBeans
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.