Java - Certificación java 11. ¿podéis echarme una mano con estas dudas?

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Certificación java 11. ¿podéis echarme una mano con estas dudas?

Publicado por silver2050 (3 intervenciones) el 08/04/2020 10:00:39
Buenas a todos,

Estoy entrenando par al certificación y he probado a hacer los ejemplos de:

https://www.dumpsbase.com/freedumps/ocp-java-se-11-developer-certification-1z0-815-dumps.html

Pero la verdad es que así por encima no entiendo ninguna de las res puestas de las cuestiones 6,7,9,11,14 y 15.

Si alguno os la estáis preparando también ¿podría echarme una mano?, por favor.

Muchas gracias y saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Certificación java 11. ¿podéis echarme una mano con estas dudas?

Publicado por Kabuto (1381 intervenciones) el 08/04/2020 20:23:19
Hola, te dejo respuestas y explicaciones.
He probado a hacer el test y al hacer "submit" para ver los resultados, para mi sorpresa, casi todas las respuestas que la página dicen ser las correctas, no lo son.... te recomiendo que no te fíes mucho de ese site para evaluar tus conocimientos.
Al menos este paquete de preguntas que has enlazado, las respuestas que dan como buenas, no lo son.

Pregunta 6

Se comparan dos arrays con dos métodos distintos.
mismatch() busca la primera diferencia que pueda ver en los arrays. El primer elemento que no coincide entre ambos arrays es el que está en la posicion 2, así que ese será el resultado que devolverá. Por tanto:
res1 = 2

compare() hace una comparación "lexicográfica", es decir, indica quien es "menor" y quien es "mayor" en base a determinadas reglas según la naturaleza del objeto que estamos comparando.
En este caso, el primer array se considera "menor" porque los dos primeros elementos son iguales, pero el tercero es menor (un 6) que el tercer elemento del otro array (un 8)

compare(), devuelve tres posibles valores: -1 si el primer objeto es menor, 1 si el segundo objeto es menor o valor 0 si ambos objetos son iguales.
En este caso, el primer objeto (el primer array) es considerado "menor", así que el método compare() devolverá -1.
res2 = -1

Así que la respuesta correcta es la B --> 2:-1
Sin embargo, al hacer "submit" en los resultados de la página, indica que la respuesta correcta es la A -> -1:2
Me temo que es un error, la respuesta correcta es la B, no la A. Basta con compilar y ejecutar el código para comprobarlo.


Pregunta 7
Esta pregunta puede ser traicionera.
Primero se ejecuta el método doA() el cuál está dentro de un try catch.
Este método imprime en pantalla el carácter "a".
Y luego un if evalúa la condición false para decidir si lanza una excepción. Bien, la condición false es, obviamente, falsa... por lo tanto no se lanza ninguna excepción.

De momento, en pantalla tenemos el carácter "a".

A continuación se ejecuta el método doB().
Se imprime el carácter "b"
..en pantalla ya tenemos la cadena "ab"....
y luego un if evalúa la condición true para decidir si lanza una excepción.
La condición true es, sin dudas, cierta... es verdadera por lo tanto se lanza la excepción FileNotFoundException.

Bien, aquí es donde viene la traición je je... se lanza la excepción FileNotFoundException, pero el try catch está programado para capturar la excepción IOException.

Son excepciones distintas y cabría pensar que entonces el catch va a ignorar la excepción lanzada por el método doB().
Pero no es así.

En realidad la excepción FileNotFoundException es heredera de IOException (las excepciones también son clases).

Por lo tanto, el catch va a recoger esta excepción y ejecutará su bloque de código.
Lo primero que hace es imprimir "c"...
...en pantalla ya tenemos "abc"...
.. y a continuación ejecuta la sentencia return.

Aquí viene otra pequeña traición. La sentencia return pone fin al programa y se podría pensar que todo acaba aquí y el resultado en pantalla es "abc".

Pero no, aunque termine el programa, el bloque finally a continuación del catch se ha de ejecutar también antes de que termine el programa, así que se imprime el carácter "d".

Y en pantalla tenemos "abcd".

Hay un system.out que imprime una "f", fuera del try catch finally, pero como la sentencia return pone fin al programa, no se ejecuta esta última instrucción.

Así que la respuesta correcta es la E -> abcd
Sin embargo, de nuevo el "submit" dice que la respuesta correcta es la A, que la compilación falla.
Bien, pues yo he ejecutado el código en mi ordenador. Compila y da como resultado lo que había previsto, en pantalla tengo la cadena "abcd"
De nuevo se equivocó quien haya codificado esa página...
Espero que no usen este sistema para evaluar a los alumnos...

Pregunta 9
Hay que adivinar que longitud tendrá finalmente el String que se está construyendo.

Se empieza añadiendo la cadena:
sb.append("HOWDY");

Ahora mismo la longitud es de 5.

A continuación, se inserta un carácter blanco al principio de la cadena.
sb.insert(0,' ');

Como es una inserción, la cadena aumenta en un carácter, así la longitud ahora es 6

Ahora hacemos un reemplazo de caracteres:
sb.replace(3, 5, "LL");
EL primer número indica desde que carácter (incluido) comienza el reemplazo y el segundo número indica hasta que carácter (excluido) termina el reemplazo.
Esto significa que se van a reemplazar los caracteres 3 y 4.
Como el reemplazo consisten en una cadena de dos caracteres, y esa es precisamente la cantidad de caracteres que hemos pedido reemplazar, significa que la longitud de la cadena NO varía.
Sigue siendo longitud 6.

Viene una nueva inserción:
sb.insert(6, "COW");

Insertamos a partir del carácter 6, una cadena de tres caracteres. Nos da un poco igual a partir de donde se inserta, la cuestión es que estamos metiendo tres caracteres más a la cadena, por lo tanto la longitud crece y ahora es de 9.

Por último, se hace un borrado de caracteres:
sb.delete(2, 7);

Se eliminan desde al carácter 2 hasta el 7 (excluido), es decir, quitamos los caracteres 2, 3, 4, 5 y 6. Esto son 5 caracteres que restamos a la longitud, que se queda en 4

Por tanto, la respuesta correcta es la A -> 4
De nuevo, ya da vergüenza ajena, el submit dice que la respuesta correcta es la D, longitud 5.
Pues no, la longitud resultante es 4


Pregunta 11

Este es sencillo, tan solo hay que tener claro la precedencia de los operadores matemáticos.
Primero se computa lo que esté encerrado entre paréntesis.
Luego se computan operaciones de producto y división.
Y por último sumas y restas.

Tenemos:
i = 10;
j = 5;

i += (j * 5 + j) / i - 2


Lo primero es darse cuenta de que no es una simple asignación, es una asignación "incremental". A la variable le vamos a asignar su valor actual, más el resultado de los cálculos. Es decir:
i = i + (j * 5 + j) / i - 2

Sustituyamos la variables por sus valores:
i = 10 + (5 * 5 + 5) / 10 - 2

Primero computamos lo que hay entre paréntesis:
i = 10 + 30 / 10 - 2

A continuación, se computa la división:
i = 10 + 3 - 2

Finalmente, las sumas y restas:
i = 11

Así que la respuesta correcta es la E -> 11
Y adivina que.... pues sí, el submit dice que la respuesta es 3....
En serio compi, no te fíes nada de estos test para aprender....

Pregunta 14

Aquí nos pregunta que ocurre al ejecutar ese código con esta línea de comandos:
java Myclass My Car is red

Bien, esa línea de comandos. La primera palabra java es para pedir a la máquina virtual de Java que ejecute la clase que nombramos a continuación, es decir, que ejecute MyClass.

Las siguientes palabras: My Car is red, se consideran "argumentos" así que son recogidos y almacenados en el array de String llamado args que siempre le indicamos como parámetro al método main de nuestros programas:
1
public static void main(String[] args)

Bien, en args tenemos ahora 4 String:
args[0] = "My"
args[1] = "Car"
args[2] = "is"
args[3] = "red"


Así que si hacemos esta salida por pantalla:
1
System.out.println(args[1] + "--" + args[3] + "--" + args[0]);

Veremos que la respuesta correcta es la A -> Car--red--My
Por supuesto, el submit dice que la respuesta correcta es My–Car–is
Sin comentarios.

Pregunta 15
Esta pregunta es cuestión de herencias y visibilidad.

La pregunta nos dice que dos posibles cambios se podrían hacer para poder hacer un objeto con el constructor new Person()

La clase Person tiene su constructor declarado su modificador de acceso como protected
Esto significa que no es público y no es visible desde otra clase, por eso la otra clase Main no puede hacer un new Person()

Bien, el cambio más evidente es cambiar el modificador de protected a public.
Con eso ya se puede hacer un new Person().
El submit dice que no, que ese cambio no es correcto. Que locura....

En cambio dice que una solución es dejar el constructor sin especificar ningún modificador. Bien, lo he probado, y no, no funciona...

Otro posible cambio menos evidente, es hacer que Main herede de Person.
El modificador protected hace que el constructor, métodos, atributos... no sean públicos para otras clases, pero si abre la puerta a que sean accesibles a clases hijas.

Por tanto, si Main hereda de Person... no podremos hacer un new Person(), pero si podríamos hacer un new Main(), que a su vez automáticamente implica un new Person().
Es decir, podemos construir un objeto Main, que a su vez es también un objeto Person por su relación de herencia.

Bueno, esta vez el submit está de acuerdo conmigo. Lo cuál me hace ya dudar de si no me estaré equivocando, visto lo visto, prefiero no coincidir con él ja ja ja...

En fin, la respuestas serían:
B -> Cambiar el modificador de acceso del constructor de Person a public
C -> Hacer que la clase Main herede de Person, lo cuál permite construir un objeto Main, que lleva implícita la construcción de un Person



Y lo dicho, las preguntas pueden estar bien para poner a prueba lo que sabes, o descubrir lo que deberías saber.
Pero esa página tiene las respuestas mal configuradas, no te fíes de ellas.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Certificación java 11. ¿podéis echarme una mano con estas dudas?

Publicado por silver2050 (3 intervenciones) el 09/04/2020 11:17:21
Muchísimas gracias Kabuto, por tu tiempo y dedicación.

Todas las respuestas que has dado son las que entiendo yo como lógicas, y obviamente cuadran, además muy bien explicadas.

Gracias por la ayuda y saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Certificación java 11. ¿podéis echarme una mano con estas dudas?

Publicado por Álvaro (3 intervenciones) el 03/05/2020 19:36:55
Buenas visto que están mal las respuesta he intentado resolver las cuestiones aunque sea por curiosidad pero hay alguna que no entiendo muy bien, si podéis echarme una mano os lo agradezco:

https://www.dumpsbase.com/freedumps/ocp-java-se-11-developer-certification-1z0-815-dumps.html

Cuestión 8
¿Podría ser la b?

Cuestión 10
Entiendo que es la d porque se valida y se setea en el método set

Cuestión 17
Por descarte diría la c y e

cuestión 18
No la entiendo ya que c,d y e modificarían las variables instancias y solamente hay que elegir 2.


Muchas gracias de antemano y saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar