RSS

JavaPrepare Test2 – Soluciones y Explicación

15 Ago

Vamos a seguir haciendo exámenes de prueba. Os dejo el segundo examen de JavaPrepare solucionado y con comentarios sobre las opciones incorrectas. Este examen es un poco más corto que el primero, tiene solo 29 preguntas.

Si quereis hacer el examen sin ver las soluciones primero, este es el enlace  Java Prepare Test 2.  Para ver las preguntas, soluciones y comentarios haced click en “Read the rest of this Entry”.

En siguientes posts iremos haciendo las preguntas por temas y acabaremos los recursos de JavaPrepare.

1. Which of the following are Java Keywords? Select the three correct answers:

a) external
b) implement
c) throw
d) void
e) integer
f) private
g) synchronize
h) unsigned

Las correctas son c) d) y f)
a) external no es clave en Java
b) implement no es clave, lo es implements
e) integer no es clave, lo es int
g) synchronize no es clave, lo es synchronized
h) unsigned, no existen los tipos sin signo en Java, creo que es de C++

2. Which of the following are legal definitions of the main method that can be used to execute a class. Select the one correct answer.

a) public void main(String args)
b) public static int main(String args[])
c) public static void main(String args[])
d) static public void MAIN(String args[])
e) public static void main(string args[])
f) public static void main(String *args)

a) Le falta static y el parámetro no es un array de String.
b) main no puede devolver int.
c) Correcto.
d) MAIN es diferente a main y no se considera la función principal a ejecutar.
e) No existe el tipo string, es String.
f) No existen los punteros en Java.

3. Which of these are legal array declarations or definitions? Select the two correct answers.

a) int[] []x[];
b) int *x;
c) int x[5];
d) int[] x = {1,2,3};

b) No existen los punteros en Java.
c) No se puede especificar el tamaño en la declaración de un array.
a) Correcto.
d) Correcto. Se inicializa el array con valores.

4. Name the collection interface used to represent a sequence of numbers in a fixed order.
List. Ver Collections Interfaces.

5. The class Hashtable is used to implement which collection interface. Select the one correct answer.

a) Table
b) List
c) Set
d) SortedSet
e) Map

La opción correcta es e)Map. Ver Interfaz Map en la API, vienen todas las clases que la implementan.

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

class test {
    public static void main (String[] args) {
        int i;
        do{
            i++;
        }while (i<0);
        System.out.println(i);
    }
}

a) The program does not compile as i is not initialized.
b) The program compiles but does not run.
c) The program compiles and runs but does not print anything.
d) The program prints 0.
e) The program prints 1.

a) No compila porque la variable i es local y todas las variables locales necesitan ser inicializadas antes de su uso.

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

class xyz {
    static int i;
    public static void main (String[] args) {
        while (i<0){
           i--;
        }
        System.out.println(i);
    }
}

a) The program does not compile as i is not initialized.
b) The program compiles but does not run.
c) The program compiles and runs but does not print anything.
d) The program prints 0.
e) The program prints 1.

La opción correcta es d). El programa compila y se ejecuta correctamente. La variable i es estática y por ello se inicializa con el valor por defecto de su tipo int, que es cero. Al no ser i menor que cero no se decrementa en el while e imprime 0.

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

class xyz {
    public static void main (String[] args){
       int i, j, k;
       for (i=0; i<3; i++){
           for (j=1; j<4; j++) {
               for (k=2; k<5; k++){
                   if ( (i==j) && (j==k) )
                       System.out.println(i);
               }
           }
       }
    }
}

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

La respuesta correcta es c) 2. La sentencia println solo se ejecuta cuando i es igual a j y cuando j es igual a k, es decir cuando las tres variables tengan el mismo valor.

i va a tomar en el bucle los siguientes valores  0, 1, 2
j va a tomar en el bucle los siguientes valores      1, 2, 3
k va a tomar en el bucle los siguientes valores         2, 3, 4

El unico valor común que tomarán las variables es 2.

9. Using up to four characters what is the Java representation of the number 23 in hex?
23/16 = 1(cociente) + 7(resto)
Por lo que en hexadecimal sería 0x17.

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

class test {
    static boolean check;
    public static void main(String args[]) {
        int i;
        if(check == true)
           i=1;
        else
           i=2;

        if(i=2) i=i+2;
        else i = i + 4;
        System.out.println(i);
    }
}

a) 3
b) 4
c) 5
d) 6
e) The program does not compile because of the statement if(i=2)

La correcta es e) No compila porque se intenta comparar con el operador de asignación.
Si se corrigiera check al ser una variable estática se inicializa con el valor por defecto de su tipo, que es false. Al ser check false, a i se le asigna 2. Al corregir if (i==2) se ejecutaría i = i + 2 e imprimiría 4.

11. Select the one correct answer. The smallest number that can be represented using short primitive type in Java is

a) 0
b) -127
c) -128
d) -16384
e) -32768
f) The smallest number is compiler dependent.

La opción correcta es e)

Los tipos de datos decimales en Java son de menor a mayor byte, short, int, long.
Ocupan 1byte (byte), 2 bytes – 16 bits (short), 4 bytes – 32 bits (int) y 8 bytes – 64 bits (long).
Y los valores van desde – (2 elevado al numero de bits -1) a 2 (elevado al numero de bits -1) menos 1.
Por lo tanto para short el valor mínimo sería -(2 elevado a 15) y el máximo  (2 elevado a 15) -1 = – 32.768 a 32.767

12. Given the following declarations, which of the assignments given in the options below would compile. Select the two correct answers.

int i = 5;
boolean t = true;
float f = 2.3F;
double d = 2.3;

a) t = (boolean) i;
b) f = d;
c) d = i;
d) i = 5;
e) f = 2.8;

a) No compila ya que intenta hacer un casting de int a boolean. En Java un logico nunca podrá interpretarse como un entero. Da “inconvertible types found: int required: boolean”.
b) No compila, en una variable de tipo float no “cabe” una variable double.  Da “posible loss of precision found: double required: float.”
c) Si compila, en un double si “cabe” un int.
d) Sí compila, el literal 5 por defecto es int y se asigna a un int.
e) No compila ya que el literal 2.3 es por defecto double y no “cabe” en un float. Da “possible loss of precision found: double required: float.”

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

public class incr {
    public static void main(String args[]) {
        int i , j;
        i = j = 3;
        int n = 2 * ++i;
        int m = 2 * j++;
        System.out.println(i + " " + j + " " + n + " " + m);
    }
}

a) 4 4 8 6
b) 4 4 8 8
c) 4 4 6 6
d) 4 3 8 6
e) 4 3 8 8
f) 4 4 6 8

El operador de asignación es asociativo de derecha a izquierda, por lo tanto en la línea 4,  j = 3 e i = 3.
En la línea 5 primero se incrementa i y luego se evalua, por lo que n = 2 * 4 = 8.
En la línea 6 primero se evalua j y luego se incrementa, por lo que m = 2 * 3 = 6. Luego j = 4.
En la línea 7, da como resultado 4 4 8 6, la opción a) es la correcta.

14. Given two non-negative integers a and b and a String str, what is the number of characters in the expression str.substring(a,b) . Select the one correct answer.

a) a + b
b) a – b
c) b – a – 1
d) b – a + 1
e) b – a
f) b

Por ejemplo si tenemos la cadena str = “abcdefghi” y los enteros a=3 y b= 5  str.substring(3,5) devolvería la cadena empezando a partir de la posición 3 (no incluido) hasta el caracter 5 (incluido)
str.substring(3,5) sería “de”, 2 caracteres, que sería b – a.
La opción e) es la correcta.

15. What is the result of compiling and running the following program. Select the one correct answer.

class test {
    public static void main(String args[]) {
        char ch;
        String test2 = "abcd";
        String test = new String("abcd");
        if(test.equals(test2)) {
           if(test == test2)
              ch = test.charAt(0);
           else
              ch = test.charAt(1);
        }
       else {
           if(test == test2)
              ch = test.charAt(2);
           else
              ch = test.charAt(3);
       }
       System.out.println(ch);
    }
}

a) ‘a’
b) ‘b’
c) ‘c’
d) ‘d’

Las dos cadenas test y test2 tienen el mismo contenido “abcd” por lo que equals es verdadero. Sin embargo, test se crea en el pool mientras que test2 se crea se encuentra en la pila y tienen diferentes referencias por lo que la igualdad == es falsa. Por eso entra por ch= test.charAt(1) y devuelve ‘b’.

16. What is the result of compiling and running the following program. Select the one correct answer.

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

a) 0
b) 1
c) 2
d) 3
e) 10
f) 20

La condición del bucle es mientras que i<0 y no se cumple en ningún momento ya que i se inicializa en 10.
Por lo tanto j entra en el case 0 y al no haber break entra en el case 1 también, terminando con valor 3.
La opción correcta es d) 3.

17. What is the number displayed when the following program is compiled and run.

class test {
    public static void main(String args[]) {
        test test1 = new test();
        System.out.println(test1.xyz(100));
    }

    public int xyz(int num) {
        if(num == 1) return 1;
        else return(xyz(num-1) + num);
    }
}

Se llama inicialmente a xyz(100) que devolvería xyz(99) + 100,
a su vez xyz(99)  devolvería xyz(98) + 99 + 100,
a su vez xyz(98)  devolvería xyz(97) + 98 + 99 + 100, …
por lo que al final de todas las llamadas recursivas tendríamos 1 + 2 + 3 + … + 98 + 99 + 100.
Devuelve 5050.
La suma de los x primeros numeros se puede calcular como (x* (x+1))/2

18. Which of the following statements are true. Select the one correct answer.

a) Arrays in Java are essentially objects.
b) It is not possible to assign one array to another. Individual elements of array can however be assigned.
c) Array elements are indexed from 1 to size of array.
d) If a method tries to access an array element beyond its range, a compile warning is generated.

a) Correcta.
b) Incorrecta. Se puede asignar un array a otro usando System.arraycopy
c) Incorrecta. Los elementos de un array empiezan en 0.
d) Incorrecta. Se producirá un error en tiempo de ejecución.

19. Which expression can be used to access the last element of an array. Select the one correct answer.

a) array[array.length()]
b) array[array.length() – 1]
c) array[array.length]
d) array[array.length – 1]

Al empezar la numeración de los elementos de un array en 0, la ultima posición es la longitud menos uno.
Para los arrays la longitud es una propiedad, length y no una función como en los String.
Por ello la opción correcta es d).

20. What is the result of compiling and running the following program. Select the one correct answer.

class test {
    public static void main(String args[]) {
       int[] arr = {1,2,3,4};
       call_array(arr[0], arr);
       System.out.println(arr[0] + "," + arr[1]);
    }

    static void call_array(int i, int arr[]) {
       arr[i] = 6;
       i = 5;
    }
}

a) 1, 2
b) 5, 2
c) 1, 6
d) 5, 6

La opción correcta es c). arr[0] sigue siendo 1 y a arr[1] se le asigna 6.

21. Which of the following statements are correct. Select the one correct answer.

a) Each Java file must have exactly one package statement to specify where the class is stored.
b) If a Java file has both import and package statement, the import statement must come before package statement.
c) A Java file has at least one class defined.
d) If a Java file has a package statement, it must be the first statement (except comments).

a) No es obligatorio la sentencia package.
b) Si un fichero java tiene ambas sentencias la primera debe ser package.
c) Un fichero java puede no contener ninguna clase.
d) Correcto.

22. What happens when the following program is compiled and then the command “java check it out” is executed. Select the one correct answer.

class check {
    public static void main(String args[]) {
        System.out.println(args[args.length-2]);
    }
}

a) The program does not compile.
b) The program compiles but generates ArrayIndexOutOfBoundsException exception.
c) The program prints java
d) The program prints check
e) The program prints it
f) The program prints out

En la línea “java check it out” java es el comando para ejecutar, check el fichero y los argumentos son it y out.
Por lo tanto la longitud es 2 y args.length-2 es cero. No hay problema de fuera de índices. Imprime args[0] que corresponde a “it”. Opción e) Correcta.

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

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

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

Entra en la excepción OutOfBounds por querer acceder a i[2]  e imprime 1.
Entra por el bloque finally e imprime 3. Imprime 4.

24. A program needs to store the name, salary, and age of employees in years. Which of the following data types should be used to create the Employee class. Select the three correct answers.

a) char
b) boolean
c) Boolean
d) String
e) int
f) double

String para el nombre, double para el salario e int para la edad.

25. To make a variable defined in a class accessible only to methods defined in the classes in same package, which of the following keyword should be used. Select the one correct answer.

a) By using the keyword package before the variable.
b) By using the keyword private before the variable.
c) By using the keyword protected before the variable.
d) By using the keyword public before the variable.
e) The variable should not be preceded by any of the above mentioned keywords.

e) No hace falta ya que si no se pone nada tendrá el nivel de acceso por defecto que es package.

26. In implementing two classes Employee and Manager, such that each Manager is an Employee, what should be the relationship between these classes. Select the one correct answer.

a) Employee should be the base class of Manager class.
b) Manager should be the base class of Employee class.
c) Manager class should include the Employee class as a data member.
d) Employee class should include Manager class as a data member.
e) The Manager and Employee should not have any relationship.

a) La clase Manager es una clase más especializada que Employee, por eso Employee es la clase base o clase padre y Manager será la clase hija.

27. Select the one most appropriate answer. What is the purpose of method parseInt defined in Integer class.

a) The method converts an integer to a String.
b) The method is used to convert String to an integer, assuming that the String represents an integer.
c) The method is used to convert String to Integer class, assuming that the String represents an integer.
d) The method converts the Integer object to a String.

La opción correcta es b) Si el String representa un entero puede convertirse a int con parseInt.
Ver parseInt en la API

28. What should be done to invoke the run() method on a thread for an object derived from the Thread class. Select the one correct answer.

a) The run() method should be directly invoked on the Object.
b) The start() method should be directly invoked on the Object.
c) The init() method should be directly invoked on the Object.
d) The creation of the object using the new operator would create a new thread and invoke its run() method.

La correcta es b)

29. What is the default priority of a newly created thread.

a) MIN_PRIORITY (which is defined as 1 in the Thread class.)
b) NORM_PRIORITY (which is defined as 5 in the Thread class.)
c) MAX_PRIORITY (which is defined as 10 in the Thread class.)
d) A thread inherits the priority of its parent thread.

La correcta es d)

Anuncios
 
Deja un comentario

Publicado por en 15 agosto, 2011 en Examen, Preguntas

 

Etiquetas: , , ,

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: