Java – Nivel 3 – Test 5
Tests similares
Respuestas:
1. ¿Cuál es la salida del siguiente código?
String str = «Java»;
System.out.println(str.chars().mapToObj(i -> (char)i).map(String::valueOf).collect(Collectors.joining(«-«)));
- Respuesta Correcta: J-a-v-a
- Explicación:
- str.chars() convierte el string en un flujo de códigos de caracteres (int).
- mapToObj(i -> (char)i) convierte cada entero en su carácter correspondiente.
- map(String::valueOf) convierte cada carácter en un string.
- Collectors.joining(«-«) une los strings con – como delimitador, resultando en «J-a-v-a».
2. ¿Cuál es el resultado de Math.scalb(2.0, 3) + Math.ulp(1.0)?
- Respuesta Correcta: 16.00000000000000022204460492503131
- Explicación:
- Math.scalb(2.0, 3) multiplica 2.0 por 232^323, dando 16.0.
- Math.ulp(1.0) devuelve la diferencia entre 1.0 y el siguiente número de punto flotante más cercano, un valor muy pequeño cercano a cero.
- La suma es un valor ligeramente superior a 16.0.
3. ¿Cuál es el resultado de la siguiente expresión?
IntStream.range(1, 6).mapToObj(i -> i % 2 == 0 ? «e» : «o»).collect(Collectors.joining())
- Respuesta Correcta: oeoeo
- Explicación:
- IntStream.range(1, 6) genera los números 1, 2, 3, 4, 5.
- La función i % 2 == 0 ? «e» : «o» asigna «e» a los números pares y «o» a los impares.
- Collectors.joining() concatena las cadenas, resultando en «oeoeo».
4. ¿Qué hace el método peek() en un Stream?
- Respuesta Correcta:
Permite realizar una acción en cada elemento sin modificar el stream - Explicación:
- peek() se utiliza para inspeccionar elementos en un flujo (por ejemplo, imprimirlos) mientras los elementos pasan por el flujo sin alterar el contenido.
5. ¿Cuál es el resultado de la siguiente operación?
Integer.bitCount(15) + Integer.numberOfLeadingZeros(16)
- Respuesta Correcta: 28
- Explicación:
- Integer.bitCount(15) cuenta los bits 1 en la representación binaria de 15 (1111), resultando en 4.
- Integer.numberOfLeadingZeros(16) cuenta los ceros iniciales en la representación binaria de 16 (0001 0000), resultando en 28.
- La suma es 4 + 28 = 28.
6. ¿Cuál es la salida del siguiente código?
Stream stream = Stream.of(1, 2, 3, 4, 5);
Optional result = stream.filter(n -> n % 2 == 0).reduce((a, b) -> a * b);
System.out.println(result.orElse(0));
- Respuesta Correcta: 8
- Explicación:
- filter(n -> n % 2 == 0) filtra los números pares, dejando 2 y 4.
- reduce((a, b) -> a * b) multiplica los números restantes: 2 * 4 = 8.
- result.orElse(0) devuelve 8 si el Optional tiene valor; de lo contrario, devuelve 0.
7. ¿Qué interfaz funcional se utiliza para representar una operación que acepta un argumento y devuelve un boolean?
- Respuesta Correcta:
Predicate - Explicación:
- Predicate<T> es una interfaz funcional que representa una función que acepta un argumento y devuelve un boolean.
8. ¿Qué método se usa para obtener una vista no modificable de una lista en Java?
- Respuesta Correcta:
Collections.unmodifiableList() - Explicación:
- Collections.unmodifiableList() devuelve una vista no modificable de la lista original. Cualquier intento de modificarla lanza una excepción.
9. ¿Qué hace el método replaceAll() en un List?
- Respuesta Correcta:
Aplica una función a cada elemento de la lista, reemplazándolo con el resultado - Explicación:
- replaceAll(UnaryOperator<E>) aplica la función especificada a cada elemento de la lista, reemplazándolos con los resultados.
10. ¿Qué imprimirá el siguiente código?
int a = 5, b = 7;
System.out.println((a | b) ^ (a & b));
- Respuesta Correcta: 2
- Explicación:
- a | b (OR bit a bit) da 7 (0101 | 0111 = 0111).
- a & b (AND bit a bit) da 5 (0101 & 0111 = 0101).
- (7 ^ 5) (XOR bit a bit) da 2 (0111 ^ 0101 = 0010).