Java – Nivel 3 – Test 8
Tests similares
Respuestas:
1. ¿Qué imprimirá el siguiente código?
int x = 5;
System.out.println((x++ + ++x) + (–x – x–));
- Respuesta Correcta:
3 - Explicación:
- (x++ + ++x):
- x++: primero usa 555, luego incrementa x=6x = 6x=6.
- ++x: incrementa primero x=7x = 7x=7 y luego lo usa.
- Resultado: 5+7=125 + 7 = 125+7=12.
- (–x – x–):
- –x: decrementa x=6x = 6x=6 y lo usa.
- x–: usa 666, luego decrementa x=5x = 5x=5.
- Resultado: 6−6=06 – 6 = 06−6=0.
- 12+0=312 + 0 = 312+0=3.
- (x++ + ++x):
2. ¿Qué hace el método dropWhile() en un Stream?
- Respuesta Correcta:
Elimina elementos mientras la condición sea verdadera - Explicación:
- dropWhile() omite los elementos al inicio del stream que cumplen con la condición especificada. Cuando encuentra un elemento que no cumple, deja de omitir y procesa el resto del stream.
3. ¿Cuál es la salida del siguiente código?
String str = «Java»;
System.out.println(str.chars().mapToObj(ch -> (char)(ch + 1)).collect(Collectors.joining()));
- Respuesta Correcta:
Kbwb - Explicación:
- str.chars() convierte el string en un stream de enteros representando los códigos Unicode de cada carácter.
- (char)(ch + 1) desplaza cada carácter al siguiente en la tabla Unicode:
- J→KJ \rightarrow KJ→K, a→ba \rightarrow ba→b, v→wv \rightarrow wv→w, a→ba \rightarrow ba→b.
- Collectors.joining() concatena los caracteres: Kbwb.
4. ¿Cuál es el resultado de la siguiente expresión?
Stream.of(«a», «bb», «ccc»).collect(Collectors.toMap(String::length, Function.identity(), (s1, s2) -> s1 + s2));
- Respuesta Correcta:
{1=a, 2=bb, 3=ccc} - Explicación:
- String::length utiliza la longitud como clave del mapa.
- Function.identity() usa la cadena original como valor.
- No hay claves duplicadas, por lo que no es necesario resolver conflictos con la función (s1, s2) -> s1 + s2.
- Resultado: un mapa con las claves 1,2,31, 2, 31,2,3 y los valores correspondientes.
5. ¿Cuál es la salida del siguiente código?
List numbers = Arrays.asList(1, 2, 3, 4, 5);
Optional result = numbers.stream()
.filter(n -> n % 2 == 0)
.reduce((a, b) -> a + b);
System.out.println(result.orElse(0));
- Respuesta Correcta:
6 - Explicación:
- El filtro n -> n % 2 == 0 selecciona los números pares: 2,42, 42,4.
- reduce((a, b) -> a + b) suma los números pares: 2+4=62 + 4 = 62+4=6.
- Como el Optional contiene un valor, orElse(0) no se utiliza.
6. ¿Cuál es el resultado de la siguiente operación?
(~5 & 6) ^ (4 | 3)
- Respuesta Correcta:
7 - Explicación:
- 5~5 5: complemento bit a bit de 5=01015 = 01015=0101, da …1010…1010…1010 (en complemento a dos).
- ~5 & 6: …1010&0110=0010=2…1010 \& 0110 = 0010 = 2…1010&0110=0010=2.
- 4∣34 | 34∣3: 0100∣0011=0111=70100 | 0011 = 0111 = 70100∣0011=0111=7.
- 272 ^ 727: 0010⊕0111=0111=70010 \oplus 0111 = 0111 = 70010⊕0111=0111=7.
7. ¿Qué interfaz funcional se utiliza para representar una operación que acepta un objeto de un tipo y produce un resultado de otro tipo?
- Respuesta Correcta:
Function - Explicación:
- Function<T, R> define una operación que toma un valor de tipo T y devuelve un resultado de tipo R.
8. ¿Qué método se usa para crear una vista sincronizada de un Set en Java?
- Respuesta Correcta:
Collections.synchronizedSet() - Explicación:
- Este método devuelve una vista sincronizada de un Set, permitiendo acceso seguro en entornos multi-hilo.
9. ¿Cuál es el resultado de Math.hypot(3, 4) + Math.signum(-2.5)?
- Respuesta Correcta:
5 - Explicación:
- Math.hypot(3, 4) calcula la hipotenusa de un triángulo con lados 333 y 444: 32+42=5\sqrt{3^2 + 4^2} = 532+42=5.
- Math.signum(-2.5) devuelve el signo de −2.5-2.5−2.5: −1-1−1.
- 5+(−1)=45 + (-1) = 45+(−1)=4.
10. ¿Qué hace el método putIfAbsent() en un Map?
- Respuesta Correcta:
Inserta un valor solo si la clave no existe - Explicación:
- putIfAbsent() verifica si la clave ya está presente en el mapa. Si no lo está, agrega el par clave-valor; de lo contrario, no realiza cambios.