RSS

JavaPrepare Fundamentals Questions – Soluciones y Explicación

21 Ago

Empiezo con las cuestiones por temas de la web JavaPrepare. Si quereis realizar el test con tranquilidad sin ver las soluciones bajo cada pregunta, ya sabéis que podéis encontrarlo en JavaPrepare – Language Fundamentals Questions.

Esta primera serie de preguntas se refieren a temas fundamentales del lenguaje como los identificadores, las palabras claves de Java, el rango de los tipos primitivos, los operadores, la estructura de un fichero .java, el paso de argumentos por valor, etcétera …

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

1. Which of these are legal identifiers. Select the three correct answers.
a) number_1
b) number_a
c) $1234
d) -volatile

a) b) c) Correctas.
d) Incorrecta. Los identificadores solo pueden comezar por letra, subrayado ‘_’ o el símbolo ‘$’.

2. Which of these are not legal identifiers. Select the four correct answers.
a) 1alpha
b) _abcd
c) xy+abc
d) transient
e) account-num
f) very_long_name

a) Incorrecta, no puede comenzar por dígito.
b) Correcta
c) Incorrecto, el caracter + no está permitido ya que provocaría conflictos al confundirse con el operador +.
d) No puede ser una palabra clave de Java.
e) Incorrecta, el caracter – no está permitido.
f) Correcta. No hay longitud máxima de caracteres.

3. Which of the following are keywords in Java. Select the two correct answers.
a) friend
b) NULL
c) implement
d) synchronized
e) throws

a) No es palabra clave en Java.
b) No es palabra clave en Java. Si fuera null, en minúsculas, sería un literal más que una palabra clave.
c) No es palabra clave, lo es implements.
d) Sí es palabra clave.
e) Sí es palabra clave.

4. Which of the following are Java keywords. Select the four correct answers.

a) super
b) strictfp
c) void
d) synchronize
e) instanceof

a) b) c) e) Correctas
d) Incorrecta, la palabra clave es synchronized.

5. Which of these are Java keywords. Select the five correct answers
a) TRUE
b) volatile
c) transient
d) native
e) interface
f) then
g) new

a) No es palabra clave. Si fuera en minúsculas, true sería un literal más que una palabra clave.
b) c) d) e) g)
f) No es palabra clave en Java, creo que es de Visual Basic.

6. Using up to four characters, write the Java representation of octal literal 6.

6/8 da 0(cociente) y 6 (resto), sería 06 en octal. El 0 indica que es octal.
Si tuvieramos un número mayor como 47 haríamos:
47/8 daría 5 (cociente) y 7 (resto), sería 057 en octal.

7. Using up to four characters, write the Java representation of integer literal 3 in hexadecimal.

3 en hexadecimal sería 0x3. El 0x indica que es hexadecimal.
Si tuvieramos un número mayor como 58 haríamos:
58/16 daría 3 (cociente) y 10 (resto), sería 0x3A.

8. Using up to four characters, write the Java representation of integer literal 10 in hexadecimal.

0xA. Ya que los valores 10, 11, 12, 13, 14, 15 se traducen como A, B, C, D, E, F

9. What is the minimum value of char type. Select the one correct answer.
a) 0
b) -215
c) -28
d) -215 – 1
e) -216
f) -216 – 1

Un char es un carácter Unicode de 16 bits sin signo. Por lo que el mínimo sería 0  y el máximo 65535 = 2(elevado a 16) -1

10. How many bytes are used to represent the primitive data type int in Java. Select the one correct answer.
a) 2
b) 4
c) 8
d) 1
e) The number of bytes to represent an int is compiler dependent.

El tipo int es de 32 bits, son 4 bytes. Opción b)
Para acordarnos byte(1 byte), short (2 bytes), int (4 bytes), long (8 bytes).

11. What is the legal range of values for a variable declared as a byte. Select the one correct answer.

a) 0 to 256
b) 0 to 255
c) -128 to 127
d) -128 to 128
e) -127 to 128
f) -215 to 215 – 1

Un byte como la misma palabra indica ocupa un byte, 8 bits.
El rango va desde -2(elevado a 7) a 2 (elevado a 7) – 1, es decir de -128 a 127, opción c)Correcta.

12. The width in bits of double primitive type in Java is –. Select the one correct answer.
a) The width of double is platform dependent
b) 64
c) 128
d) 8
e) 4

Un double ocupa 8 bytes, 64 bits, opción b) Correcta.

13. What would happen when the following is compiled and executed. Select the one correct answer.

public class Compare {
    public static void main(String args[]) {
        int x = 10, y;
        if(x < 10) y = 1;
        if(x>= 10) y = 2;
        System.out.println("y is " + y);
    }
}

a) The program compiles and prints y is 0 when executed.
b) The program compiles and prints y is 1 when executed.
c) The program compiles and prints y is 2 when executed.
d) The program does not compile complaining about y not being initialized.
e) The program throws a runtime exception.

La opción correcta es d) Aunque no daría error al ejecutar, el compilador no tiene forma de asegurar que en los bloques if la variable se inicializa correctamente. Sin embargo si la estructura hubiera sido con un if y un else el compilador si se da cuenta de la exclusividad y no da error de compilación.

14. What would happen when the following is compiled and executed. Select the one correct answer.

class example {
    int x;
    int y;
    String name;
    public static void main(String args[]) {
        example pnt = new example();
        System.out.println("pnt is " + pnt.name + " " + pnt.x + " " + pnt.y);
    }
}

a) The program does not compile because x, y and name are not initialized.
b) The program throws a runtime exception as x, y, and name are used before initialization.
c) The program prints pnt is 0 0.
d) The program prints pnt is null 0 0.
e) The program prints pnt is NULL false false

La correcta es d). Como son variables miembro de la clase tanto x, como y , como name se inicializan mediante el constructor por defecto, Como el valor por defecto para int es 0 y para String null, imprime: null 0 0.

15. The initial value of an instance variable of type String that is not explicitly initialized in the program is –. Select the one correct answer.
a) null
b) “”
c) NULL
d) 0
e) The instance variable must be explicitly assigned.

a) null. Todas las variables miembro se inicializan con un valor predeterminado. Si la variable es de un tipo de referencia su valor inicial es null.

16. The initial value of a local variable of type String that is not explicitly initialized and which is defined in a member function of a class. Select the one correct answer.
a) null
b) “”
c) NULL
d) 0
e) The local variable must be explicitly assigned.

La opción correcta es e) Para las variables locales es obligatorio darles un valor inicial, de lo contrario dará error de compilación.

17. Which of the following are legal Java programs. Select the four correct answers.

a)
// The comments come before the package
package pkg;
import java.awt.*;
class C{}

b)
package pkg;
import java.awt.*;
class C{}

c)
package pkg1;
package pkg2;
import java.awt.*;
class C{}

d)
package pkg;
import java.awt.*;

e)
import java.awt.*;
class C{}

f)
import java.awt.*;
package pkg;
class C {}

a) Es correcta. Puede haber comentarios antes de la sentencia package.
b) Es correcta. El orden está bien, sentencia package, sentencia import y declaración de clase.
c) Incorrecta. La sentencia package es opcional y si existe solo se permite una.
d) Correcta. Compila correctamente, aunque no se genera .class al no haber ninguna definición de clase.
e) Correcta. La sentencia package no es obligatoria y la sentencia import debe preceder a la declaración de las clases.
f) Incorrecta. La sentencia package debe preceder a la sentencia import.

18. Which of the following statements are correct. Select the four correct answers.
a) A Java program must have a package statement.
b) A package statement if present must be the first statement of the program (barring any comments).
c) If a Java program defines both a package and import statement, then the import statement must come before the package statement.
d) An empty file is a valid source file.
e) A Java file without any class or interface definitions can also be compiled.
f) If an import statement is present, it must appear before any class or interface definitions.

a) Incorrecta. Es opcional. Si no existe declaración de paquete las clases declaradas pertenecerán al paquete predeterminado.
b) Correcta.
c) Incorrecta. Si ambas sentencias package e import están presentes package debe ir antes.
d) Correcta. Aunque no tenga mucho sentido un archivo vacío es un archivo fuente valido. Compilará sin error pero no generará ningún .class
e) Correcta. Compilará sin error pero no generará ningún .class
f) Correcta. La sentencia import predecerá a las definiciones de clases y de interfaces.

19. What would be the results of compiling and running the following class. Select the one correct answer.

class test {
    public static void main() {
        System.out.println("test");
    }
}

a) The program does not compile as there is no main method defined.
b) The program compiles and runs generating an output of “test”
c) The program compiles and runs but does not generate any output.
d) The program compiles but does not run.

La opción correcta es d) No da error de compilación pero si un error al ejecutar: “java.lang.NoSuchMethodError”

20. Which of these are valid declarations for the main method? Select the one correct answer.
a) public void main();
b) public static void main(String args[]);
c) static public void main(String);
d) public static void main(String );
e) public static int main(String args[]);

a) No es valida. Debe ser static y tener un array de String como parámetro.
b) Correcta.
c) No valida, el parámetro debe ser un array de String.
d) No valida, el parámetro debe ser un array de String.
e) No puede devolver un int, debe ser void.

21. Which of the following are valid declarations for the main method. Select the three correct answers.
a) public static void main(String args[]);
b) public static void main(String []args);
c) final static public void main (String args[]);
d) public static int main(String args[]);
e) public static abstract void main(String args[]);

a) Correcta.
b) Correcta.
c) Correcta. Admite el modificador final.
d) Incorrecto. El tipo de retorno debe ser void.
e) Incorrecto. No puede ser abstract.

22. What happens when the following program is compiled and executed with the command – java test. Select the one correct answer.

class test {
    public static void main(String args[]) {
        if(args.length > 0)
            System.out.println(args.length);
    }
}

a) The program compiles and runs but does not print anything.
b) The program compiles and runs and prints 0
c) The program compiles and runs and prints 1
d) The program compiles and runs and prints 2
e) The program does not compile.

a) Correcta. No imprime nada ya que no se han especificado argumentos al ejecutar. args.length es 0.

23. What is the result of compiling and running this program? Select the one correct answer.

public class test {
    public static void main(String args[]) {
        int i, j;
        int k = 0;
        j = 2;
        k = j = i = 1;
        System.out.println(k);
    }
}

a) The program does not compile as k is being read without being initialized.
b) The program does not compile because of the statement k = j = i = 1;
c) The program compiles and runs printing 0.
d) The program compiles and runs printing 1.
e) The program compiles and runs printing 2.

d) El programa compila e imprime 1 ya que la asociatividad de la asignación es de derecha a izquierda.
i = 1, luego j= 1, y k = 1.

24. What gets printed on the standard output when the class below is compiled and executed by entering “java test lets see what happens”. Select the one correct answer.

public class test {
    public static void main(String args[]) {
        System.out.println(args[0]+" "+args[args.length-1]);
    }
}

a) The program will throw an ArrayIndexOutOfBounds exception.
b) The program will print “java test”
c) The program will print “java happens”;
d) The program will print “test happens”
e) The program will print “lets happens”

La correcta es e) imprime “lets happens”. El array args tiene longitud 4, siendo args[0] = “lets”, args[1]=”see”, args[2]=”what”, args[3] =”happens”.

25. What gets printed on the standard output when the class below is compiled and executed by entering “java test lets see what happens”. Select the one correct answer.

public class test {
    public static void main(String args[]) {
        System.out.println(args[0]+" "+args[args.length]);
    }
 }

a) The program will throw an ArrayIndexOutOfBounds exception.
b) The program will print “java test”
c) The program will print “java happens”;
d) The program will print “test happens”
e) The program will print “lets happens”

a) Lanza ArrayIndexOutOfBoundsException porque al comenzar el indice de los arrays en 0 el ultimo indice valido del array sería args[args.length-1] y no args[length].

26. What all gets printed on the standard output when the class below is compiled and executed by entering “java test lets see what happens”. Select the two correct answers.

public class test {
    public static void main(String args[]) {
        System.out.println(args[0]+" "+args.length);
}
 }

a) java
b) test
c) lets
d) 3
e) 4
f) 5
g) 6

c) y e) Imprime “lets” que es el primer argumento y ” 4″ por ser la longitud de los argumentos.

27. What happens when the following program is compiled and run. Select the one correct answer.

public class example {
    int i = 0;
    public static void main(String args[]) {
        int i = 1;
        i = change_i(i);
        System.out.println(i);
    }
    public static int change_i(int i) {
        i = 2;
        i *= 2;
        return i;
    }
 }

a) The program does not compile.
b) The program prints 0.
c) The program prints 1.
d) The program prints 2.
e) The program prints 4.

28. What happens when the following program is compiled and run. Select the one correct answer.

public class example {
    int i = 0;
    public static void main(String args[]) {
        int i = 1;
        change_i(i);
        System.out.println(i);
    }
    public static void change_i(int i) {
        i = 2;
        i *= 2;
    }
}

a) The program does not compile.
b) The program prints 0.
c) The program prints 1.
d) The program prints 2.
e) The program prints 4.

c) El programa imprime 1. Esto se debe a que Java pasa los argumentos por valor. No se puede cambiar el valor de i=1 definida en main dentro de change_i. Si en lugar de un tipo primitivo hubiera sido un objeto lo que no se puede cambiar es la referencia del objeto, el contenido sí.

29. What happens when the following program is compiled and run. Select the one correct answer.

public class example {
    int i[] = {0};
    public static void main(String args[]) {
        int i[] = {1};
        change_i(i);
        System.out.println(i[0]);
    }
    public static void change_i(int i[]) {
        i[0] = 2;
        i[0] *= 2;
    }
 }

a) The program does not compile.
b) The program prints 0.
c) The program prints 1.
d) The program prints 2.
e) The program prints 4.

e) El programa imprime 4. Al ser un array un tipo de referencia y no un tipo primitivo se pasa la referencia al procedimiento change_i y éste puede cambiar el contenido del objeto.

30. What happens when the following program is compiled and run. Select the one correct answer.

public class example {
    int i[] = {0};
    public static void main(String args[]) {
        int i[] = {1};
        change_i(i);
        System.out.println(i[0]);
    }
    public static void change_i(int i[]) {
        int j[] = {2};
        i = j;
    }
}

a) The program does not compile.
b) The program prints 0.
c) The program prints 1.
d) The program prints 2.
e) The program prints 4.

c) El programa imprime 1. Como hemos dicho antes cuando un tipo de referencia, un objeto como un array, se pasa como argumento se pasa su referencia y ésta no se podrá modificar. Dentro de change_i se asigna a i la referencia de j pero al volver al main i sigue manteniendo su referencia anterior.

Anuncios
 
1 comentario

Publicado por en 21 agosto, 2011 en Examen, Preguntas

 

Etiquetas: , , ,

Una respuesta a “JavaPrepare Fundamentals Questions – Soluciones y Explicación

  1. Nendrel

    2 septiembre, 2013 at 8:42 pm

    Buenas,

    Dejo por aquí si a alguien le interesa la respuesta de la pregunta 27.

    e) The program prints 4.

    La explicación tiene que ver con el término shadowing de variables. Esto es: cuando hay variables locales o parámetros y variables de instancia, las variables de instancia se “ensombrecen” (en su lugar se usan las locales/parámetros) si usamos el nombre de la variable sin la palabra clave this.

    Saludos!

     

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: