PARTICIPANTE: EMPRESA: FECHA: Examen de Diagnóstico Programador Java Instrucciones: Lea cada pregunta cuidadosamente y marque la(s) respuesta(s) que sean correctas. 1) Dada la siguiente clase: 1. class ArrayCopy3{ 2. public static void main( String [] args) { 3. int [][] z1 = new int [][] {{1,2,3}, {4,5,6}}; 4. for (int j= 0;j<3; j++) { 5. System.out.println(" "); 6. for(int k= 0;k<2; k++) { 7. System.out.print(" z1 "+ j +" "+ k +" = " + z1[j][k]); 8. } 9. } 10. } 11. } Cual seria el resultado al ejecutarla?: A La compilación falla B Una excepción es lanzada en tiempo de ejecución C z1 0 0 = 1 z1 0 1 = 2 z1 0 2 = 3 z1 1 0 = 4 z1 1 1 = 5 z1 1 2 = 6 D z1 0 0 = 1 z1 0 1 = 3 z1 0 2 = 5 z1 1 0 = 2 z1 1 1 = 4 z1 1 2 = 6 2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase? A B C D E final public private protected default access 3) Si tenemos el siguiente código: 1. class Foo { 2. Foo(String s) {System.out.print(s); } 3. } 4. class Bar extends Foo { } 5. class Test132 { 6. public static void main(String [] args) { 7. new Foo("Foo"); 8. new Bar(); 9. System.out.print(" done"); 10. } 11. } Cual sería el resultado al ejecutarlo? A B C D Foo Foo done Compilation fails Foo, followed by an exception 4) Revise la clase y responda la siguiente pregunta: 1. public class Test { 2. _____ doMath ( long lo, short sh) { 3. return (int) sh / (lo * 10); 4. } 5. } Cual es el valor válido más pequeño que podría regresar el método doMath? A B C D E F int byte long float short double 5) Cual seria el resultado de ejecutar el siguiente código, suponiendo que se encuentra dentro de un método main? 1. for (int x = 3; x > 0; x--) { 2. switch (x - 1) { 3. 0: System.out.print("foo "); 4. 1: System.out.print("bar "); 5. 2: System.out.print("baz "); 6. 3: System.out.print("foo "); 7. } 8. } A B C D E F 6) baz bar foo foo baz bar foo baz foo bar baz foo foo bar baz foo Compilation fails there is no output An exception is thrown at runtime Si tenemos el siguiente código: 1. class ForSequence { 2. static int count = 0; 3. public static void main(String [] args) { 4 int x = 1; 5. for ( test('1'); test('2') && (x < = 2); test('3') ) { 6. x++; 7. test('4'); 8. } 9. System.out.println(" count = " + count); 10. } 11. static boolean test(char num) { 12. System.out.print(" "+num); 13. count++; 14. return true; 15. } 16. } Cual sería el resultado al ejecutarlo? A B C D E F 1 2 3 4 count = 4 1 2 3 4 1 2 3 4 count = 8 1 4 2 3 1 4 2 3 count = 8 1 2 4 3 2 4 3 2 count = 8 1 2 3 4 2 3 4 2 count = 8 Compilation fails 7) Si tenemos el siguiente código: 1. class Exc1 extends Exception{ } 2. class Exc2 extends Exception { } 3. 4. public class Test { 5. static void a() throws Exc1 { 6. try { 7. System.out.print("Try "); 8. } 9. catch(Exc1 e) { 10. System.out.print("Catch "); 11. } 12. finally { 13. System.out.println("Finally "); 14. } 15. } 16. 17. static void b() throws Exc1, Exc2 { 18. throw new Exc2(); 19. } 20. 21. public static void main (String args[]) { 22. try { 23. a(); 24. b(); 25. } catch(Exc1 e) { 26. System.out.println("Caught1 "); 27. } 28. catch(Exc2 ex) { 29. System.out.print("Caught2" ); 30. } 31. } 32. } Cual sería el resultado al ejecutarlo? A B C D E Try Try Finally Try Caught2 Try Finally Caught2 Compilation fails 8) Si tenemos el siguiente código: 12. public int convertString(String s) { 13. assert isANum(s); 14. int x = Integer.parseInt(s); 15. assert(x>12); 16. return x; 17.} 18. private boolean isANum(String s) { 19. assert (!(s.equals("one"))); 20. try { 21. int x = Integer.parseInt(s); 22. assert (x > 1); 23. } catch(NumberFormatException ex) { 24. return false; 25. } 26. return true; 27. } Cual línea es una violación al uso apropiado del mecanismo de afirmaciones (assertions)?. A B C D línea 13 línea 15 línea 19 línea 22 9) Como se puede destruir un objeto? A B C D E F Nulificado todas las referencias al objeto Llamar a Runtime.getRuntime().gc Asignando null a todas las referencias del objeto. Llamar a x.remove() , donde x es el nombre del objeto. Llamar a x.finalize() , donde x es el nombre del objeto. Solo el colector de basura del sistema puede destruir un objeto. 10) Si tenemos el siguiente código: 7. Dog [] da = new Dog[2]; 8. Dog clover = new Dog(); 9. da[1] = clover; 10. clover = null; 11. da[1] = da[0]; 12. Dog spot = new Dog(); Cuando es el objeto “clover” elegible por el colector de basura? A B C D Después de la línea 9 Después de la línea 10 Después de la línea 11 Nunca en este código 11) Dada la interface: 1. public interface TestInterface { 2. long pig = 42; 3. } Cuales tres producen el mismo resultado que el dado por la línea 2? (Elija tres.) A B C D E F final long pig = 42; abstract long pig = 42; transient long pig = 42; public static long pig = 42; protected static long pig = 42; public static final long pig = 42; 12) Dada la invocación en la línea de comando: java ClassX foo bar baz Como son los argumentos inicialmente manejados? A B C D E Un String referido por args Un String - "foo bar baz" Tres elementos en un arreglo con números de índices del 0 al 2. Tres elementos en un arreglo con números de índices del 1 al 3. Tres arreglos de caracteres conteniendo - f,o,o - b,a,r - b,a,z 13) Cual lista contiene solo palabras reservadas del lenguaje de programación Java? A B C D E throws, loop, break, assert, do declare, switch, byte, void, if final, continue, volatile, import, float transient, volatile, virtual, strictfp, class instanceof, super, overrides, const, doAnswer: 14) Si tenemos el siguiente código: 1. class ShortIvar { 2. static short [ ] x = new short[3]; 3. public static void main(String [ ] args) { 4. x[1] = 7; 5. for (int y= 0;y<3; y++) { 6. System.out.print(" " + x[y]); 7. } 8. } 9. } Cual sería el resultado al ejecutarlo? A B C D E F 000 700 070 012 Compilation fails An exception is thrown at runtime 15) Si tenemos el siguiente código: 10. Vector v = new Vector(); 11. StringBuffer sb = new StringBuffer(); 12. class MyList extends ArrayList{}; 13. System.out.println( (v instanceof Vector) && 14. (sb instanceof Object) && 15. (new MyList() instanceof ArrayList) ); 16. Cual sería el resultado al ejecutarlo? A B C D E F true null false La compilación falla El código corre sin salida Una excepción es lanzada en tiempo de ejecución 16) Cual seria el resultado de ejecutar el siguiente código, suponiendo que se encuentra dentro de un método main? 10. int[] arr1 = new int[1]; 11. int[] arr2 = new int[1]; 12. arr1[0] = arr2[0] = 1; 13. System.out.println( "Arreglo 1 es igual al arreglo 2 - " + arr1.equals( arr2 ) ); A B C D E F Arreglo 1 es igual al arreglo 2 Arreglo 1 es igual al arreglo 2 - true Arreglo 1 es igual al arreglo 2 - null Arreglo 1 es igual al arreglo 2 - false La compilación falla Una excepción es lanzada en tiempo de ejecución 17) Dados los siguientes métodos: 10. boolean b1() { 11. System.out.print("b1"); return true; 12. } 13. boolean b2() { 14. System.out.print("b2"); return false; 15. } 16. 17. public void logicalOpsTest () { 18. System.out.println( ( b1() | b2() ) && ( b2() && b1() ) ); 19. } Cual sería el resultado al llamar al método logicalOpsTest? A B C D E F b1b2b2true b1b2b2false Compilation fails b1b2b2b1true b1b2b2b1false Una excepción es lanzada en tiempo de ejecución 18) Que sucede con el siguiente código: 10. abstract class X { 11. public final void op(){} 12. abstract final void op(); 13. void op( String s ){} 14. abstract synchronized void op(int i) throws Exception; 15. abstract private void op( String a, int i ); 16. } Cuales son verdaderas? (Elija tres.) A B C D E F La línea 10 is incompilable La línea 11 is incompilable La línea 12 is incompilable La línea 13 is incompilable La línea 14 is incompilable La línea 15 is incompilable 19) Dada la siguiente interface: 1. interface Omega {} 2. class Gamma {} 3. class Epsilon extends Gamma implements Omega {} 4. 5. class Main { 6. public static void main( String[] args ) { 7. Gamma g = new Epsilon(); 8. Omega o = (Omega)g; 9. } 10.} Que podría pasar? A B C La compilación fallará Una excepción es lanzada en tiempo de ejecución El código corre sin producir salida 20) Si una clase tiene el siguiente código y se ejecuta. 1. public static void main( String[ ] args ) { 2. class Widget extends java.lang.Thread { 3. Widget() { 4. this.start(); 5. } 6. } 7. 8. for ( int i= 0;i<10; i++ ) { 9. new Widget(); 10. } 11. } Cuales dos instrucciones son verdaderas ?. A B C D E La compilación falla. El programa nunca termina. Una excepción es lanzada en tiempo de ejecución. Diez threads independientes son creados. El programa termina después que el décimo thread es creado.