Docstoc

Examen Java(1)

Document Sample
Examen Java(1) Powered By Docstoc
					28/11/09

DESS: Examen Java rattrapage

1

Examen Java
Date :

28/11/2009

De : Pascal Molli Durée : 2 heures

1 Exercice:
Quelle est la différence entre l’opérateur de “cast” que l’on peut trouver en “C” et en Java ? En quoi cette différence est-elle fondamentale ?

2 Exercice:
La classe suivante ne doit avoir qu’une seule instance: class BankServer { public void execute(Command c) throws BankException { System.out.println(c+","+BankBase.instance().countObservers()); c.execute(); BankBase.instance().notifies(); } } Transformez cette classe de façon à ce qu’elle ne puisse avoir qu’une seule instance.

3 Exercice:
Voici une implantation du philosophe aux spaghetti. Malheureusement, des erreurs se sont glissées dans ce code. Vous devez les retrouver, les expliquer et les corriger ! Pour vous aider, sachez, qu’il y a 3 points dans le programme posant des problèmes de synchronisation.
package philo; class Philo extends Thread { private static final int thinkingTime=1000; private static final int eatingTime=2000; private Fork fl; // left fork private Fork fr; // right fork private int id; public Philo(int id,Fork fl, Fork fr) { this.id=id; this.fl=fl; this.fr=fr; } private void think() { for (int i=0;i<id*20;i++) { System.out.print(" ");} System.out.println("Philo"+id+" thinking..."); try { sleep(thinkingTime); } catch (InterruptedException e){ e.printStackTrace(); } } private void hungry() { for (int i=0;i<id*20;i++) { System.out.print(" ");} System.out.println("Philo"+id+" Hungry..."); fl.take(); fr.take(); } private void eat() { } public void run() { while(true) { this.think(); this.hungry(); this.eat(); } } } package philo; class Fork { private int id; private boolean locked; public Fork(int id) { this.id=id; locked=false; } public void take() { for (int i=0;i<id*20;i++) { System.out.print(" ");} System.out.println("Philo"+id+" Eating..."); try { sleep(eatingTime); } catch (InterruptedException e){ e.printStackTrace(); } fr.free(); fl.free();

28/11/09

Confidentiel

1

28/11/09

ESIAL3: Examen Java

2

while (locked) { try {wait();} catch(InterruptedException e) { e.printStackTrace(); } } locked=true; } public void free() { locked=false; notify(); // wake up waiting philo... } } package philo; class Main

{ private static final int nbfork = 5; public static void main(String astring[]) { Fork afork[] = new Fork[5]; for (int i = 0; i < 5; i++) afork[i] = new Fork(i); for (int j = 0; j < 5; j++) { Philo philo = new Philo(j, afork[j], afork[(j + 1)%5]); philo.start(); } } }

4 Exercice:
Exe Voici un petit QCM. Quand une question peut avoir une ou plusieurs réponses, elle est marquée avec un (p) sinon par défaut, il ne peut y avoir qu’une réponse.

4.1

Le type dynamique d’une référence (p) :
1. 2. 3. C’est le type de l’objet référencé Le type de la référence à la compilation Le type de la référence à l’exécution

4.2

Lors d’un appel d’une méthode de classe :
Le type dynamique du receveur est utilisé Le type statique du receveur Une méthode de classe ne peut-être appelée qu’en utilisant un nom de classe comme receveur

4.3

L’opérateur « cast » appliqué sur une référence
1. Est vérifié à la compilation 2. Est vérifié à la compilation 3. Est vérifié à la compilation et à l’exécution

4.4

Java est un langage (p) :
1. 2. 3. 4. Dynamique Réflexif Générique Portable

4.5

Pour résoudre la surcharge java utilise :
1. Le type dynamique des paramètres effectifs 2. Le type statique de paramètres effectifs 3. Le nombre de paramètres effectifs

4.6

Lorsqu’une exception est lancée :
1. La machine virtuelle s’arrête 2. La méthode en cours d’exécution s’arrête et le contrôle passe à l’appelant 3. La méthode en cours d’exécution continue et l’exception est propagée à la fin de l’exécution de la méthode

4.7

Dans une méthode de classe, je peux (p)
1. 2. 3. Instancier des variables Accéder aux variables d’instance de la classe Accéder aux variables de classe de la classe

28/11/09

Confidentiel

2

28/11/09

ESIAL3: Examen Java

3

4. 5. 6.

Appeler des méthodes d’instances sans instancier la classe Instancier la classe Utiliser « this »

4.8

Les classes java
1. Sont chargée au démarrage du programme dans la machine virtuelle 2. à la demande, au cours de l’exécution

4.9

Une variable d’instance « private » d’un objet A d’une classe C est accessible (p):
1. de l’objet A 2. d’un objet dont la classe est sous-classe de C 3. d’un objet B de même classe que l’objet A

4.10 On peut définir un constructeur abstrait dans une classe déclarée « final »
1. oui 2. non

4.11 Il y a de l’héritage multiple entre les interfaces
1. oui 2. non

4.12 Une interface peut définir (p) :
1. 2. 3. 4. 5. des méthodes abstraites des variables d’instance des méthodes de classe des méthodes de classe privée des constantes

4.13 Les conversions implicites peuvent être utilisées pour résoudre la surcharge :
1. oui 2. non 3. oui, mais sans « narrowing »

4.14 Une variable « protected » d’une classe A est accessible (p)
1. d’une méthode définie dans une sous- classe de A 2. d’une méthode définie dans une classe B mais dans le même package que A 3. d’une méthode définie dans une classe B mais dans un autre package

4.15 L’ordre de l’exécution d’un constructeur, l’ordre d’exécution est :
1. Super-constructeur, initialisation des variables d’instance, corps du constructeur courant 2. initialisation des variables d’instance, super-constructeur, corps du constructeur 3. Initialisation des variables d’instance, corps du constructeur et super-constructeur.

4.16 En java, il y a (p):
1. 2. 3. 4. Préemption Temps partagé Préemption et temps partagé Préemption et peut-être temps partagé

4.17 Quand on déclare une méthode de classe « synchronized »
1. Un moniteur est posé sur toute instance de la classe 2. Un moniteur est posé sur cette méthode

28/11/09

Confidentiel

3

28/11/09

ESIAL3: Examen Java

4

3. Un moniteur est posé sur l’objet de classe « Class » de cette classe

4.18 Quand un thread t acquiert un moniteur sur un objet A :
1. Aucun autre thread ne s’exécute 2. Tous les autres thread accédant à A sont endormis 3. Tous les autres threads concernés attendent à l’entrée du moniteur ou sont endormis dedans 4. Il n’y a plus de thread à l’intérieur du moniteur

4.19 Une inner class peut être définie (p)
1. dans une classe 2. Dans une méthode 3. Dans une inner classe

4.20 Une classe peut-elle hériter d’une inner classe ?
1. Oui 2. non

4.21 Une inner classe peut-elle hériter d’une classe dont son outer-classe n’hérite pas
1. Oui 2. non

4.22 Un objet inner peut accéder (p)
1. 2. 3. 4. Aux variables private de son outer classe Aux paramètres formels des méthodes Aux paramètres formels d’une méthode si sa classe est déclarée dans cette méthode Aux paramètres formels d’une méthode si sa classe est déclarée dans cette méthode et les paramètres sont « final ».

4.23 Dans le MVC
1. C’est la vue qui vient régulièrement relire les données du modèle 2. Le modèle prévient la vue de tous changements 3. Le contrôleur fait le changement d’état et prévient la vue

4.24 Dans le MVC (p)
1. Il y a plusieurs vue pour 1 modèle 2. Plusieurs contrôleur pour 1 modèle 3. Plusieurs Modèle pour 1 vue.

28/11/09

Confidentiel

4


				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:186
posted:11/29/2009
language:French
pages:4
Jun Wang Jun Wang Dr
About Some of Those documents come from internet for research purpose,if you have the copyrights of one of them,tell me by mail vixychina@gmail.com.Thank you!