Java – Nivel 3 – Test 7
Tests similares
Respuestas:
1. ¿Cuál es el resultado de Math.nextUp(1.0) – Math.nextDown(1.0)?
- Respuesta Correcta:
Un número muy pequeño - Explicación:
- Math.nextUp(1.0) devuelve el siguiente número representable mayor que 1.0.
- Math.nextDown(1.0) devuelve el siguiente número representable menor que 1.0.
- La diferencia entre estos valores es un número extremadamente pequeño cercano a 10−1610^{-16}10−16, dependiendo de la precisión del tipo double.
2. ¿Qué interfaz funcional se utiliza para representar una operación que acepta dos argumentos del mismo tipo y devuelve un resultado del mismo tipo?
- Respuesta Correcta:
BinaryOperator - Explicación:
- BinaryOperator<T> es una especialización de BiFunction<T, T, T> en la que los argumentos y el resultado tienen el mismo tipo.
3. ¿Cuál es la salida del siguiente código?
String str = «Hello»;
System.out.println(str.codePoints().mapToObj(cp -> String.format(«U+%04X», cp)).collect(Collectors.joining(«, «)));
- Respuesta Correcta:
U+0048, U+0065, U+006C, U+006C, U+006F - Explicación:
- str.codePoints() convierte el string en un stream de códigos Unicode.
- Cada código se formatea como un valor hexadecimal usando String.format(«U+%04X», cp).
- Collectors.joining(«, «) concatena los valores separados por comas.
4. ¿Qué imprimirá el siguiente código?
int a = 5, b = 7;
System.out.println((a & b) + (a | b));
- Respuesta Correcta:
12 - Explicación:
- a & b realiza un «AND» bit a bit: 5=01015 = 01015=0101, 7=01117 = 01117=0111, resultado: 0101=50101 = 50101=5.
- a∣ba | ba∣b realiza un «OR» bit a bit: 0101∣0111=0111=70101 | 0111 = 0111 = 70101∣0111=0111=7.
- 5+7=125 + 7 = 125+7=12.
5. ¿Qué método se usa para crear una copia defensiva de un ArrayList en Java?
- Respuesta Correcta:
new ArrayList(originalList) - Explicación:
- Al pasar originalList como argumento al constructor de ArrayList, se crea una copia independiente de la lista original.
6. ¿Qué hace el método merge() en un Map?
- Respuesta Correcta:
Fusiona valores asociados con la misma clave - Explicación:
- Si una clave ya está presente, merge() permite fusionar el valor existente con uno nuevo utilizando una función de combinación.
7. ¿Qué hace el método takeWhile() en un Stream?
- Respuesta Correcta:
Toma elementos mientras la condición sea verdadera - Explicación:
- takeWhile() toma los elementos del stream en orden hasta que la condición especificada devuelva false. Luego detiene el procesamiento.
8. ¿Cuál es la salida del siguiente código?
List<String> words = Arrays.asList(«Java», «is», «fun»);
String result = words.stream()
.collect(Collectors.joining(«_», «Start_», «_End»));
System.out.println(result);
- Respuesta Correcta:
Start_Java_is_fun_End - Explicación:
- Collectors.joining(«_», «Start_», «_End») concatena los elementos con _ entre ellos, añadiendo Start_ al inicio y _End al final.
9. ¿Cuál es el resultado de Integer.highestOneBit(25) + Integer.lowestOneBit(18)?
- Respuesta Correcta:
24 - Explicación:
- Integer.highestOneBit(25) devuelve el bit más significativo activado en el número 25=1100125 = 1100125=11001, que es 16=2416 = 2^416=24.
- Integer.lowestOneBit(18) devuelve el bit menos significativo activado en 18=1001018 = 1001018=10010, que es 2=212 = 2^12=21.
- 16+2=2416 + 2 = 2416+2=24.
10. ¿Cuál es el resultado de la siguiente expresión?
IntStream.rangeClosed(1, 10).boxed().collect(Collectors.groupingBy(i -> i % 3, Collectors.counting()))
- Respuesta Correcta:
{0=3, 1=4, 2=3} - Explicación:
- Los números del 111 al 101010 se agrupan por el residuo de su división entre 333:
- Residuo 000: 3,6,93, 6, 93,6,9 → 333 elementos.
- Residuo 111: 1,4,7,101, 4, 7, 101,4,7,10 → 444 elementos.
- Residuo 222: 2,5,82, 5, 82,5,8 → 333 elementos.
- Los números del 111 al 101010 se agrupan por el residuo de su división entre 333: