RSS

JavaPrepare Test1 – Soluciones y Explicación

10 Ago

Mucho más importante que la teoría a la hora de prepararnos al examen debe ser la práctica. Asi que he pensado que ya es hora de empezar a hacer los exámenes de prueba que he estado encontrando aunque no haya terminado con los temas.

Y ya que me ponía a hacerlo, he dejado las respuestas correctas y la explicación de las incorrectas. El nivel es más bajo que el examen real pero viene bien para repasar y para aprender cosillas nuevas.

Si quereis hacer el examen sin ver las soluciones primero, este es el enlace: Java Prepare Test

Para ver las preguntas, soluciones y comentarios haced click en “Read the rest of this Entry”

Poquito a poco iré haciendo exámenes más difíciles.

1. Which declaration of the main method below would allow a class to be started as a standalone program. Select the one correct answer.

1.public static int main(char args[])
2.public static void main(String args[])
3.public static void MAIN(String args[])
4.public static void main(String args)
5.public static void main(char args[])

1. Incorrecta por devolver int y tener como parámetro un array de carácter.
3. Incorrecta por nombrarla mal el procedimiento. MAIN es diferente a main, ya que Java es caseSensitive.
4. El parámetro debe ser un array y no un String.
5. El parámetro debe ser un array de String y no de char.
2. Correcta.

Apunte: El método main siempre será estático. El array de String no tiene por qué llamarse args.
public static void main (String cadenas[]) sería válido.

2. What all gets printed when the following code is compiled and run? Select the three correct answers.

public class xyz {
  public static void main (String[] args){
   for(int i = 0; i < 2; i++) {
     for(int j = 2; j>= 0; j--) {
        if(i == j) break;
        System.out.println("i=" + i + " j="+j);
      }
    }
  }
}

1. i=0 j=0
2. i=0 j=1
3. i=0 j=2
4. i=1 j=0
5. i=1 j=1
6. i=1 j=2
7. i=2 j=0
8. i=2 j=1
9. i=2 j=2

Aquí solamente hace falta seguir la traza de la ejecución.
Para i= 0, j toma los valores 2, y 1, en 0 se sale del bucle más interno.
Para i= 1, j toma el valor 2, en 1 se sale del bucle más interno.

Las correctas serían las opciones 3 (i=0, j=2), 2 (i=0, j=1), y 6 (i=1, j=2).

3. What gets printed when the following code is compiled and run with the following command: java test 2
Select the one correct answer.

public class test {
   public static void main(String args[]) {
      Integer intObj=Integer.valueOf(args[args.length-1]);
      int i = intObj.intValue();
      if(args.length > 1)
          System.out.println(i);
      if(args.length > 0)
          System.out.println(i - 1);
      else
          System.out.println(i - 2);
   }
}

1. test
2. test -1
3. 0
4. 1
5. 2

Con el comando java test 2, estamos ejecutando la clase test y pasándole como argumento el número 2.
Como pasamos un único argumento, el array args[] debe tener longitud 1.
En intObj (un Integer) guardamos el valor de args[args.length-1], que será args[0], lo cual es válido y sería 2.
Ese valor lo vuelve a hacer int y lo guarda en la variable i.
Como la longitud de args es >0, imprime (i-1) = 1.
La opción correcta es la 4.

4. In Java technology what expression can be used to represent number of elements in an array named arr ?
arr.length

5. How would the number 5 be represented in hex using up-to four characters.
Cinco sería 0x5

6. Which of the following is a Java keyword. Select the four correct answers.

1. extern
2. synchronized
3. volatile
4. friend
5. friendly
6. transient
7. this
8. then

Los correctos son: 2(synchronized), 3(volatile), 6(transient), 7(this)
Incorrectos: 1(extern, creo que se usa en c, c#), 4(friend, creo que es c++), 5(friendly, inventada), 8(then,visualbasic)

7. Is the following statement true or false? The constructor of a class must not have a return type.
1. true
2. false

La correcta es 1. Los constructores no pueden tener un tipo de retorno.

8. What is the number of bytes used by Java primitive long. Select the one correct answer.
1. The number of bytes is compiler dependent.
2. 2
3. 4
4. 8
5. 64

Nos dicen el número de bytes no bits. El long tiene un tamaño de 64 bits = 8 bytes. La correcta es la opción 4.

9. What is returned when the method substring(2,4) is invoked on the string “example”? Include the answer in quotes as the result is of type String.

Al principio dije “ampl” pero no, eso es el substring de sql server…
La respuesta correcta es “am”. Substring(2,4) significa a partir de la posición 2 hasta la 4.

10. Which of the following is correct? Select the two correct answers.

1. The native keyword indicates that the method is implemented in another language like C/C++
2. The only statements that can appear before an import statement in a Java file are comments.
3. The method definitions inside interfaces are public and abstract. They cannot be private or protected.
4. A class constructor may have public or protected keyword before them, nothing else.

Las correctas son la 1 y la 3.
La número 2 es incorrecta porque antes de los imports también puede aparecer la declaración de paquete.
La número 4 es incorrecta porque un constructor puede ser también privado.

11. What is the result of evaluating the expression 14 ^ 23. Select the one correct answer.
1. 25
2. 37
3. 6
4. 31
5. 17
6. 9
7. 24

Bueno, pues esta la he tenido que mirar porque no había visto los operadores todavía. Es un operador de bits que corresponde al Exclusive Or, que devuelve verdadero solo cuando un bit es cero y el otro bit es uno.

Entonces pasamos los números 14 y 23 a binario.
Sería:
01110  (14)
10111  (23)
———-
11001 (25)
La opción correcta es la 1.

12. Which of the following are true. Select the one correct answers.
1. && operator is used for short-circuited logical AND.
2. ~ operator is the bit-wise XOR operator.
3. | operator is used to perform bitwise OR and also short-circuited logical OR.
4. The unsigned right shift operator in Java is >>.

Viendo el tema de los operadores con calma, la correcta es la 1.
Los operadores ~, &, ^ y | corresponden a las operaciones NOT(complemento), AND, XOR y OR a nivel de bit (bitwise). Los operadores && (AND) y || (OR) evalúan expresiones lógicas en cortocircuito.
El operador >> realiza un desplazamiento a la derecha con signo o aritmético.
El operador >>> realiza un desplazamiento a la derecha sin signo o lógico.
El operador << realiza un desplazamiento a la izquierda con signo.
El operador <<< realiza un desplazamiento a la izquierda con signo.

13. Name the access modifier which when used with a method, makes it available to all the classes in the same package and to all the subclasses of the class.

Protected.

14. Which of the following is true. Select the two correct answers.
1. A class that is abstract may not be instantiated.
2. The final keyword indicates that the body of a method is to be found elsewhere. The code is written in non-Java language, typically in C/C++.
3. A static variable indicates there is only one copy of that variable.
4. A method defined as private indicates that it is accessible to all other classes in the same package.

Las correctas son 1 y 3.
La palabra clave que indica que el cuerpo de un metodo se encuentra en otro lugar es abstract y la palabra clave que indica que el código no es Java, es native.
Un método definido como privado sólo puede utilizarse en la misma clase donde se define.

15. What all gets printed when the following program is compiled and run. Select the two correct answers.

public class test {
public static void main(String args[]) {
int i, j=1;
i = (j>1)?2:1;
switch(i) {
case 0: System.out.println(0); break;
case 1: System.out.println(1);
case 2: System.out.println(2); break;
case 3: System.out.println(3); break;
}
}
 }

a. 0
b. 1
c. 2
d. 3

Las opciones correctas son b y c. Es decir, devuelve 1 y 2.
Al no ser j>1 i recibe el valor 1. Con este valor entra en el case correspondiente y se imprime 1. Al no tener break pasa al case siguiente e imprime en pantalla 2.

16. What all gets printed when the following program is compiled and run. Select the one correct answer.

public class test {
    public static void main(String args[]) {
        int i=0, j=2;
        do {
            i=++i;
            j--;
        } while(j>0);
        System.out.println(i);
    }
 }

a. 0
b. 1
c. 2
d. The program does not compile because of statement “i=++i;”

La correcta es la opción c) i vale 2

17. What all gets printed when the following gets compiled and run. Select the three correct answers.

public class test {
    public static void main(String args[]) {
         int i=1, j=1;
         try {
             i++;
             j--;
             if(i/j > 1)
                i++;
         }
         catch(ArithmeticException e) {
             System.out.println(0);
         }
         catch(ArrayIndexOutOfBoundsException e) {
             System.out.println(1);
         }
         catch(Exception e) {
             System.out.println(2);
         }
         finally {
             System.out.println(3);
         }
         System.out.println(4);
    }
 }

a. 0
b. 1
c. 2
d. 3
e. 4

La ejecución devolverá 0, 3, y 4. Al incrementarse i a 2 y j a 0 la division i/j provoca la ArithmeticExcepción y se imprime en pantalla el 0. Después se ejecuta la cláusula finally, imprimiento un 3 y posteriormente la impresión del 4.

Si no se hubiera puesto sentencias try, catch y finally saltaría la ArithmeticException en ” if(i/j > 1) ” y no seguiría ejecutando.
18. What all gets printed when the following gets compiled and run. Select the two correct answers.

public class test {
    public static void main(String args[]) {
        int i=1, j=1;
        try {
            i++;
            j--;
            if(i == j)
              i++;
        }
        catch(ArithmeticException e) {
             System.out.println(0);
        }
        catch(ArrayIndexOutOfBoundsException e) {
             System.out.println(1);
        }
        catch(Exception e) {
             System.out.println(2);
        }
        finally {
             System.out.println(3);
        }
        System.out.println(4);
    }
 }

a. 0
b. 1
c. 2
d. 3
e. 4

Al no producirse ninguna excepción se ejecuta el finally e imprime 3 y la sentencia final e i mprime 4. Es decir, las opciones correctas son d) y e).

19. What all gets printed when the following gets compiled and run. Select the two correct answers.

public class test {
    public static void main(String args[]) {
        String s1 = "abc";
        String s2 = "abc";
        if(s1 == s2)
           System.out.println(1);
        else
           System.out.println(2);
        if(s1.equals(s2))
           System.out.println(3);
        else
           System.out.println(4);
     }
 }

a. 1
b. 2
c. 3
d. 4

Las opciones correctas son a) y c). Es decir que tanto el operador == como el equals considera que las cadenas son iguales.

20. What all gets printed when the following gets compiled and run. Select the two correct answers.

public class test {
public static void main(String args[]) {
String s1 = "abc";
String s2 = new String("abc");

if(s1 == s2)
System.out.println(1);
else
System.out.println(2);

if(s1.equals(s2))
System.out.println(3);
else
System.out.println(4);
}
 }

a. 1
b. 2
c. 3
d. 4

En esta ocasión las opciones correctas son b) al no ser iguales con el operador == y c) al ser iguales con el operador equals.

Ver aclaración String literals http://www.coderanch.com/t/410967/java/java/String-abc-String-new-String

21. Which of the following are legal array declarations. Select the three correct answers.
a. int i[5][];
b. int i[][];
c. int []i[];
d. int [5][5];
e. int[][]a;

Las correctas son b) c) y e). El resto son incorrectas ya que no se puede especificar tamaño en la declaración.


22. What is the range of values that can be specified for an int. Select the one correct answer.

  1. The range of values is compiler dependent.
  2. -231 to 231 – 1
  3. -231-1 to 231
  4. -215 to 215 – 1
  5. -215-1 to 215

La correcta es la 2. Desde -231 to 231 – 1.

23. How can you ensure that the memory allocated by an object is freed. Select the one correct answer

  1. By invoking the free method on the object.
  2. By calling system.gc() method.
  3. By setting all references to the object to new values (say null).
  4. Garbage collection cannot be forced. The programmer cannot force the JVM to free the memory used by an object.

La correcta es la 4. No se puede forzar la ejecución del recolector de basura.

24. What gets printed when the following code is compiled and run. Select the one correct answer.

public class test {
    public static void main(String args[]) {
        int i = 1;
        do {
            i--;
        } while (i > 2);
        System.out.println(i);
    }
 }

1. 0
2. 1
3. 2
4. -1

Devuelve cero. La sentencia i–; hace que i se decremente en uno.

25. Which of these is a legal definition of a method named m assuming it throws IOException, and returns void. Also assume that the method does not take any arguments. Select the one correct answer.

  1. void m() throws IOException{}
  2. void m() throw IOException{}
  3. void m(void) throws IOException{}
  4. m() throws IOException{}
  5. void m() {} throws IOException

La correcta es la 1).
En la 2) no es correcto que sea throw.
En la 3) no puede tener void como argumento
En la 4) no declara void como tipo de retorno.
En la 5) las llaves deben estar al final.

26. Which of the following are legal identifier names in Java. Select the two correct answers.

    1. %abcd
    2. $abcd
    3. 1abcd
    4. package
    5. _a_long_name

Legales son ii), v)
i) Incorrecto no puede comenzar por %.
iii) Incorrecto no puede comenzar con dígito.
iv) Es una palabra clave y no puede utilizarse como identificador.

27. At what stage in the following method does the object initially referenced by s becomes available for garbage collection. Select the one correct answer.

void method X(){
    String r = new String("abc");
    String s = new String("abc");
    r = r + 1; //1
    r = null;  //2
    s = s + r; //3
} //4

a) Antes de la sentencia etiquetada con 1.
b) Antes de la sentencia etiquetada con 2.
c) Antes de la sentencia etiquetada con 3.
d) Antes de la sentencia etiquetada con 4.
e) Nunca.

La opción correcta es la d) y he tenido que buscar por qué ya que yo estaba pensando en el objeto (s+r) y que este no sería elegible para el recolector de basura hasta que no se hubiera terminado el método (que sería cuando el gc podría estar seguro de que esa referencia local no se iba a usar más)

La explicación es la siguiente:
Nos están pidiendo cuándo el objeto inicialmente referenciado por s sería elegible por el gc. El objeto inicialmente referenciado por s es el String “abc”. En la sentencia //3 se crea un nuevo objeto String “abcnull” (s+r) y se asigna a s. Como resultado “abc” ya no está referenciado por nadie y es elegible tan pronto como la sentencia //3 se complete.

28. Assuming the declaration String s = new String(“xyz”);
Which of the following statements would compile. Select the one correct answer.

a) s = 2 * s;
b) int i = s[0];
c) s = s + s;
d) s = s >> 2;
e) None of the above.

La correcta es la c), que concatena de nuevo la cadena y queda “xyzxyz”.
a) No es correcta porque no se puede utilizar el operador * entre un entero y un String.
b) No es correcto porque un String no es un array.
d) No se puede utilizar un desplazamiento con un String.

29. Which of the following statements related to Garbage Collection are correct.
Select the two correct answers.

a) It is possible for a program to free memory at a given time.
b) Garbage Collection feature of Java ensures that the program never runs out of memory.
c) It is possible for a program to make an object available for Garbage Collection.
d) The finalize method of an object is invoked before garbage collection is performed on the object.

Las respuestas correctas son c) y d).
a) Es incorrecta porque no se puede liberar la memoria en el momento que se quiera.
b) Es incorrecta porque no asegura que te puedas quedar sin memoria.
c) Es correcta porque es posible hacer elegible un objeto dejandolo sin referencias.
d) Es correcta.

30. If a base class has a method defined as void method() { }
Which of the following are legal prototypes in a derived class of this class.
Select the two correct answers.

a) void method() { }
b) int method() { return 0;}
c) void method(int i) { }
d) private void method() { }

a) Correcta
b) No es correcto un override que solo cambie el tipo de retorno.
c) Correcto, cambia la lista de parámetros.
d) No es correcto, no se puede hacer menor la visibilidad del metodo sobrescrito en la subclase.

31. In which all cases does an exception gets generated. Select the two correct answers.

int i = 0, j = 1;
a) if((i == 0) || (j/i == 1))
b) if((i == 0) | (j/i == 1))
c) if((i != 0) && (j/i == 1))
d) if((i != 0) & (j/i == 1))

Las excepciones se producen en las sentencias b) y d) ya que estos operadores no son perezosos y evaluan obligatoriamente la segunda expresión aunque ya no fuera necesario.

En a) No se produce excepción. Como la primera parte (i==0) ya es cierta, || no evalua la segunda (j/i== 1) que sería la que daría ArithmeticException divide by zero.

En c) No se produce excepción. Como la primera parte (i!=0) ya es falsa, && no evalua la segunda (j/i==1) que sería la que daría ArithmeticException divide by zero.

32. Which of the following statements are true. Select the two correct answers.

a) The wait method defined in the Thread class, can be used to convert a thread from Running state to
Waiting state.
b) The wait(), notify(), and notifyAll() methods must be executed in synchronized code.
c) The notify() and notifyAll() methods can be used to signal and move waiting threads to ready-to-run state.
d) The Thread class is an abstract class.

a) Incorrecta. El metodo wait() se define en la Object class y no en la Thread class.
d) Incorrecta Thread no es una clase abstracta.
Correctas b) y c).

33. Which keyword when applied on a method indicates that only one thread should execute the method at a time. Select the one correct answer.

a) transient
b) volatile
c) synchronized
d) native
e) static
f) final

La correcta es c)

34. What is the name of the Collection interface used to represent elements in a sequence (in a particular order). Select the one correct answer.

a) Collection
b) Set
c) List
d) Map

La correcta es c) List.

35. Which of these classes implement the Collection interface SortedMap. Select the one correct answers.

a) HashMap
b) HashTable
c) TreeMap
d) HashSet
e) TreeSet
f) Vector

La correcta es c) TreeMap.

36. Which of the following are true about interfaces. Select the two correct answers.

a) Methods declared in interfaces are implicitly private.
b) Variables declared in interfaces are implicitly public, static, and final.
c) An interface can extend any number of interfaces.
d) The keyword implements indicate that an interface inherits from another.

a) Los métodos en las interfaces son implícitamente public y abstract.
b) y c) Correctas.
d) La palabra clave implements indica que la clase implementa la interfaz que indica.

37. Assume that class A extends class B, which extends class C. Also all the three classes implement the method test(). How can a method in a class A invoke the test() method defined in class C (without creating a new instance of class C). Select the one correct answer.

a) test();
b) super.test();
c) super.super.test();
d) ::test();
e) C.test();
f) It is not possible to invoke test() method defined in C from a method in A.

La correcta es f) No es posible llamar al método en la superclase si no se está en la clase inmediatemente inferior.

38. What is the return type of method round(double d) defined in Math class

Long.

39. What gets written on the screen when the following program is compiled and run. Select the one right answer.

public class test {
    public static void main (String[] args) {
        int i;
        float f = 2.3f;
        double d = 2.7;
        i = ((int)Math.ceil(f)) * ((int)Math.round(d));
        System.out.println(i);
    }
}

El resultado es 3.0 * 3 = 9. Math.ceil nos da el entero mayor mas cercano (devuelve un float)  y Math.round redondea al entero más próximo (devuelve un int).

Más funciones de java.lang.math en el API de Java

40. Is the following statement true or false. As the toString method is defined in the Object class, System.out.println can be used to print any object.

a) true
b) false

Verdadero.

41. Which of these classes defined in java.io and used for file-handling are abstract. Select the two correct answers.

a) InputStream
b) PrintStream
c) Reader
d) FileInputStream
e) FileWriter

a) y c) Son abstractas

42. Name the collection interface used to represent collections that maintain unique elements.

Set.

En el Summary Study Guide de K&B viene bastante claro:

Basic Collections Flavours:
Lists: List of things
Sets: Unique things
Maps: Things with an unique ID
Queues: Things arranged in the order in which they are to be processed

43. What is the result of compiling and running the following program.

public class Test {
public static void main (String[] args){
    String str1 = "abc";
    String str2 = "def";
    String str3 = str1.concat(str2);

    str1.concat(str2);
    System.out.println(str1);
  }
}

a) abc
b) def
c) abcabc
d) abcdef
e) defabc
f) abcdefdef

La correcta es a) “abc” porque concat no modifica el objeto que lo llama.

44. Select the one correct answer. The number of characters in an object of a class String is given by

a) The member variable called size
b) The member variable called length
c) The method size() returns the number of characters
d) The method length() returns the number of characters.

La correcta es d) method length().

45. Select the one correct answer. Which method defined in Integer class can be used to convert an Integer object to primitive int type.

a) valueOf
b) intValue
c) getInt
d) getInteger

La correcta es b) intValue

46. Name the return type of method hashCode() defined in Object class, which is used to get the unique hash value of an Object.

int.

47. Which of the following are correct. Select the one correct answer.

a) An import statement, if defined, must always be the first non-comment statement of the file.
b) Private members are accessible to all classes in the same package.
c) An abstract class can be declared as final.
d) Local variables cannot be declared as static

a) La sentencia import será la primera solo si no hay ninguna sentencia package.
b) Los miembros privados solo son accesibles dentro de la clase.
c) Una clase abstracta no puede ser final, ya que entonces no podría extenderse.
La unica correcta es d)

48. Name the keyword that makes a variable belong to a class, rather than being defined for each instance of the class. Select the one correct answer.

a) static
b) final
c) abstract
d) native
e) volatile
f) transient

La correcta es a) Static. Hace que solo haya una copia de ese miembro en lugar de una por cada instancia de la clase.

49. Which of these are core interfaces in the collection framework. Select the one correct answer.

a) Tree
b) Stack
c) Queue
d) Array
e) LinkedList
f) Map

La correcta es c) Queue y f) Map. Ver Core Collections Interfaces.

50. Which of these statements are true. Select the two correct answers.

a) For each try block there must be at least one catch block defined.
b) A try block may be followed by any number of finally blocks.
c) A try block must be followed by at least one finally or catch block.
d) If both catch and finally blocks are defined, catch block must precede the finally block.

Las correctas son c) y d)

Anuncios
 
1 comentario

Publicado por en 10 agosto, 2011 en Examen, Preguntas

 

Etiquetas: , , , ,

Una respuesta a “JavaPrepare Test1 – Soluciones y Explicación

  1. Nendrel

    29 agosto, 2013 at 6:03 pm

    Buenas,
    Un apunte: En la pregunta 39, el round que se invoca es el que utiliza como parámetro un double. Entonces lo que se devuelve es un long en lugar de un int. Luego se convierte a int con el casting.

    Un saludo!

     

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: