Preguntas de entrevista de Java con respuestas
En las entrevistas de Java se repiten las mismas zonas grises: colecciones, strings, wrappers, operadores y streams. Estas preguntas son de nivel 2, las que tienen trampa, y cada una trae su explicación.
Piensa la respuesta antes de abrirla: la explicación dice por qué fallan las demás opciones. En Streakode tienes 37 preguntas como estas de Java, y un simulacro de 10 preguntas en 15 minutos, sin corrección hasta el final, para ver cómo irías en una entrevista de verdad.
12 preguntas de Java
Temas: Arrays · Bucles · Clases selladas · Colecciones · Condicionales · Operadores · Optional · Pattern matching · Streams · Strings · Switch · Wrappers.
1 · Completa el hueco · nivel 2
Completa para sumar los números y mostrar la media.
int[] nums = {4, 6, 11};int sum = 0;for (int n : nums) { sum ___ n;}System.out.println(sum / nums.___);- +=
- =
- length
- size()
Ver la respuesta
Respuesta: += · length
int[] nums = {4, 6, 11};int sum = 0;for (int n : nums) { sum += n;}System.out.println(sum / nums.length);sum += n acumula; con = solo se quedaría el último número. Un array dice su tamaño con length, sin paréntesis; size() es de las listas.
2 · Elige la respuesta · nivel 2
¿Qué imprime este código?
String out = "";for (int i = 1; i <= 5; i++) { if (i == 3) break; out += i;}System.out.println(out);- A12
- B123
- C1245
- D12345
Ver la respuesta
Respuesta: A. 12
break sale del bucle en cuanto i vale 3, antes de añadirlo. Si fuera continue, solo se saltaría el 3 y saldría 1245.
3 · Completa el hueco · nivel 2
Completa para que solo Circle y Square puedan implementar Shape.
public ___ interface Shape ___ Circle, Square {}- sealed
- permits
- final
- extends
- implements
- non-sealed
Ver la respuesta
Respuesta: sealed · permits
public sealed interface Shape permits Circle, Square {}sealed restringe quién puede heredar y permits enumera los tipos autorizados. Así el compilador sabe que un switch sobre Shape con Circle y Square es exhaustivo.
4 · Elige la respuesta · nivel 2
¿Qué imprime este código?
Set<String> tags = new HashSet<>(List.of("java", "kotlin"));System.out.println(tags.add("java") + " " + tags.size());- Afalse 2
- Btrue 3
- Ctrue 2
- DLanza IllegalArgumentException
Ver la respuesta
Respuesta: A. false 2
Un Set no admite duplicados: add() devuelve false si el elemento ya estaba y el tamaño no cambia.
5 · Completa el hueco · nivel 2
Completa para que imprima Calor si hace más de 25 grados y Fresco si no.
int temp = 30;___ (temp > 25) { System.out.println("Calor");} ___ { System.out.println("Fresco");}- if
- else
- elif
- then
Ver la respuesta
Respuesta: if · else
int temp = 30;if (temp > 25) { System.out.println("Calor");} else { System.out.println("Fresco");}En Java la condición va con if y la alternativa con else. elif es de Python y then no existe en Java.
6 · Elige la respuesta · nivel 2
¿Qué imprime este código?
System.out.println(17 % 5);- A2
- B3
- C3.4
- D12
Ver la respuesta
Respuesta: A. 2
% da el resto de la división entera: 17 entre 5 cabe 3 veces (15) y sobran 2. 3 sería el cociente, 17 / 5.
7 · Elige la respuesta · nivel 2
¿Qué imprime este código?
Optional<String> name = Optional.empty();System.out.println(name.map(String::toUpperCase).orElse("anónimo"));- Aanónimo
- Bnull
- CLanza NoSuchElementException
- DOptional.empty
Ver la respuesta
Respuesta: A. anónimo
Sobre un Optional vacío, map() no ejecuta la función y sigue vacío, así que orElse() devuelve el valor alternativo. No hace falta comprobar isPresent().
8 · Elige la respuesta · nivel 2
¿Qué imprime este código?
record Point(int x, int y) {}Object o = new Point(3, 4);if (o instanceof Point(int x, int y)) { System.out.println(x * y);}- A12
- BNo compila: instanceof no desestructura
- C7
- DPoint[x=3, y=4]
Ver la respuesta
Respuesta: A. 12
Desde Java 21, los patrones de record comprueban el tipo y extraen los componentes en variables en un solo paso.
9 · Elige la respuesta · nivel 2
¿Qué imprime este código?
Stream.of(1, 2, 3) .peek(n -> System.out.print(n + " ")) .filter(n -> n > 1) .findFirst();System.out.println();- A1 2
- B1 2 3
- C2
- DNada: falta una operación terminal
Ver la respuesta
Respuesta: A. 1 2
Los streams procesan los elementos de uno en uno y bajo demanda. findFirst() es terminal y se detiene en cuanto encuentra el 2, así que el 3 nunca pasa por peek().
10 · Elige la respuesta · nivel 2
¿Qué imprime este código?
System.out.println("Total: " + 2 + 3);- ATotal: 23
- BTotal: 5
- CTotal: 2 3
- DNo compila
Ver la respuesta
Respuesta: A. Total: 23
+ se evalúa de izquierda a derecha. "Total: " + 2 ya es un String, así que el 3 se pega detrás como texto. Para sumar primero: "Total: " + (2 + 3).
11 · Elige la respuesta · nivel 2
¿Qué imprime este código?
String day = "SAB";int hours = switch (day) { case "SAB", "DOM" -> 0; default -> { int base = 8; yield base; }};System.out.println(hours);- A0
- B8
- CNo compila: falta break
- DNo compila: yield no existe
Ver la respuesta
Respuesta: A. 0
Un switch expresión devuelve un valor. Un case puede agrupar varias etiquetas separadas por comas y, cuando necesita un bloque, entrega el resultado con yield. Con -> no hay caída entre casos.
12 · Elige la respuesta · nivel 2
¿Qué imprime este código?
Integer a = 127, b = 127;Integer c = 128, d = 128;System.out.println((a == b) + " " + (c == d));- Atrue false
- Btrue true
- Cfalse false
- Dfalse true
Ver la respuesta
Respuesta: A. true false
Java reutiliza los objetos Integer entre -128 y 127, así que a y b son el mismo objeto. 128 queda fuera de esa caché y crea dos objetos distintos. Con objetos, compara siempre con equals().