giovedì 7 novembre 2013

Q43

Given:
public enum Direction { NORTH, EAST, SOUTH, WEST }
Which statement will iterate through Direction?


A.
for (Direction d : Direction.values()){
             // }

B.
   for (Direction d : Direction.asList()){
             // }

C.
   for (Direction d : Direction.iterator()){
             // }

D.
   for (Direction d : Direction.asArray()){
             // }

 

Risposta A

Riferimenti :

Q42

What are two differences between Callable and Runnable?

A.
A callable can return a value when executing, but a Runnable cannot.

B.
A callable can be executed by a ExecutorService, but a Runnable cannot.

C.
A Callable can be passed to a Thread, but a Runnable cannot.

D.
A callable can throw an Exception when executing, but a Runnable cannot.

 

La risposta è A e D.
Infatti sebbene Runnable e Callable siano simili Runnable non restituisce un risultato e non può throware una checked exception.

Riferimenti:

mercoledì 6 novembre 2013

Q41

Which three are true?

A.
A setAutoCommit (False) method invocation starts a transaction context.

B.
An instance of savepoint represents a point in the current transaction context.

C.
A rollback () method invocation rolls a transaction back to the last savepoint.

D.
A rollback () method invocation releases any database locks currently held by this connection object.

E.
After calling rollback (mysavepoint), you must close the savepoint object by calling mySavepoint.close() .

Risposta A,B e D.

La C è sbagliata perché se si usa un rollback senza passargli un punto di salvataggio si rollbecca l’intera transazione e non fino all’ultimo punto di salvataggio.

La E non è vera perché non serve affatto chiudere il punto di salvataggio.

Q40

Given:

   String s = new String("3");
   System.out.print(1 + 2 + s + 4 + 5);

What is the result?

A.
12345

B.
3345

C.
1239

D.
339
E.
Compilation fails.



La risposta è B.


L’operatore + effettua una somma se ha in ingresso due numeri mentre effettua una concatenazione se ha in ingresso almeno una Stringa. Inoltre per operatori che hanno stessa priorità, come ovviamente è per uno stesso operatore, la precedenza parte da sinistra. Quindi si ha :
 
Quindi essendo s uguale a "3" si ottiene 3345

 

Q39

Which two properly implement a Singleton pattern?

A.
class Singleton {
     private static Singleton instance;

     private Singleton() {
     }

     public static synchronized Singleton getInstance() {
          if (instance == null) {
                instance = new Singleton();
          }
          return instance;
     }
}

 

B.
class Singleton {
     private static Singleton instance = new Singleton();
 

     protected Singleton() {
     }

     public static Singleton getInstance() {
          return instance;
     }
}


C.
class Singleton {
     Singleton() {
     }

     private static class SingletonHolder {
          private static final Singleton INSTANCE = new Singleton();
     }

     public static Singleton getInstance() {
          return SingletonHolder.INSTANCE;
     }
}


D.
enum Singleton {
     INSTANCE;
}


La risposta è A e D

Il singleton rappresenta un tipo particolare di classe che garantisce che soltanto un’unica istanza della classe stessa possa essere creata all’interno di un programma.
Per ottenere questo comportamento è necessario avvalersi del modificatore di accesso private anche per il costruttore della classe (cosa che generalmente non viene mai praticata in una classe standard) ed utilizzare un metodo statico che consenta di accedere all’unica istanza della classe.
In generale, la scelta del singleton viene effettuata in tutti quei casi in cui è necessario che venga utilizzata una sola istanza di una classe.
Ciò consente di:
  • Avere un accesso controllato all’unica istanza della classe
  • Avere uno spazio di nomi ridotto
  • Evitare la dichiarazione di variabili globali
  • Assicurarsi di avere un basso numero di oggetti utilizzati in condivisione grazie al fatto che viene impedita la creazione di nuove istanze ogni volta che si voglia utilizzare la stessa classe.
Un altro approccio è quello di usare un enumeratore.

Questo approccio sfrutta il fatto che le costanti enum sono costruite la prima volta che si utilizza una classe.


A.
Questo codice realizza un Singleton pattern.


B.
Il modificatore del costruttore è protected e quindi non si realizza il Singleton pattern.

C.
Il modificatore del costruttore è default e quindi non si realizza il Singleton pattern.

D.
Questo codice realizza un Singleton pattern utilizzando ENUM.

 Riferimenti:

Q38


Given the code fragment:

public class Employee {
String name;
transient String companyName;
}

 

import java.io.Serializable;

public class Manager extends Employee implements Serializable {

     String mgrId;

     public static void main(String s[]) throws Exception {

          Manager mgr = new Manager();

     }

}





What is the result?

A.
M001, ,

B.
M001, null, null

C.
M001, Sam,

D.
M001, Sam, null

E.
M001, Sam, ABC Inc

F.
Compilation fails

G.
A NullPointerException is thrown at Runtime

La risposta non c'è perché la domanda è probabilmente incompleta.

Q37

Select four examples that initialize a NumberFormat reference using a factory.

A.
NumberFormat nf1 = new DecimalFormat(); NO

B.
NumberFormat nf2 = new DecimalFormat(“0.00″) ; NO

C.
NumberFormat nf3 = NumberFormat.getInstance();

D.
NumberFormat nf4 = NumberFormat.getIntegerInstance();

E.
NumberFormat nf5= DecimalFormat.getNumberInstance ();

F.
NumberFormat nf6 = Number Format.getCurrencyInstance () ;
 

Risposta C,D,E ed F

Il modello di progettazione Metodo Factory (Factory Method design pattern) è un modo per incapsulare la creazione di oggetti. Senza un metodo factory (fabbrica) si deve chiamare direttamente il costruttore di una classe :

Pippo x = new Pippo();

come nelle risposte A e B.

invece col Factory Method design pattern si crea dentro la classe un metodo factory :

Pippo x Pippo.creazione();

            

Tutti i costruttori vengono messi come privati in modo da non essere accessibili all’esterno della classe, mentre il metodo factory viene messe static in modo da poter essere chiamato anche senza un’istanza della classe.

NumberFormat ha un molti metodi factory :

public static final NumberFormat getInstance()
public static NumberFormat getInstance(Locale inLocale)
 

public static final NumberFormat getNumberInstance()
public static NumberFormat getNumberInstance(Locale inLocale)

public static final NumberFormat getIntegerInstance()
public static NumberFormat getIntegerInstance(Locale inLocale)

public static final NumberFormat getCurrencyInstance()
public static NumberFormat getCurrencyInstance(Locale inLocale)

public static final NumberFormat getPercentInstance()
public static NumberFormat getPercentInstance(Locale inLocale)


utilizzati nelle risposte C,D,E ed F.

Riferimenti:
http://java.boot.by/ocpjp7-upgrade/ch02s04.html