Test de Java: 24 preguntas para comprobar lo que sabes

¿Cuánto Java sabes de verdad? Estas 24 preguntas repasan las 10 lecciones de nuestro curso de Java: valores y referencias, tipos, el switch moderno, arrays, records, interfaces selladas, colecciones, excepciones, Optional, streams y un proyecto empaquetado. Elige una respuesta en cada pregunta y pulsa Corregir al final: verás tu nota, los aciertos por lección y la explicación de cada respuesta.

No hace falta registrarse y nada se envía a ningún sitio: el test se corrige en tu propio navegador. Todas las respuestas con código se comprobaron compilando y ejecutando el código con Java 25.

Pregunta 1Lección 1: Instalación y primer programa

Con Java 25, ¿qué hace java Hola.java?

Pregunta 2Lección 1: Instalación y primer programa

¿A qué compila javac un programa de Java?

Pregunta 3Lección 2: Valores, referencias y null

¿Qué imprime este código?

int[] x = {1, 2, 3};
int[] y = x;
y[0] = 99;
IO.println(x[0]);
Pregunta 4Lección 2: Valores, referencias y null

¿Qué imprime este código?

String s = "hola";
String t = s;
t = t.toUpperCase();
IO.println(s);
Pregunta 5Lección 3: Tipos, variables y métodos

¿Qué imprime IO.println(7 / 2);?

Pregunta 6Lección 3: Tipos, variables y métodos

¿Qué imprime este código?

int techo = Integer.MAX_VALUE;
IO.println(techo + 1);
Pregunta 7Lección 3: Tipos, variables y métodos

¿Qué imprime este programa?

void reasignar(StringBuilder s) {
    s = new StringBuilder("otra");
}

void main() {
    var sb = new StringBuilder("hola");
    reasignar(sb);
    IO.println(sb);
}
Pregunta 8Lección 4: Control de flujo y arrays

¿Qué valor toma tipo?

int dia = 6;
String tipo = switch (dia) {
    case 6, 7 -> "fin de semana";
    default   -> "laborable";
};
Pregunta 9Lección 4: Control de flujo y arrays

¿Qué imprime este código?

IO.println(new int[]{1, 2} == new int[]{1, 2});
Pregunta 10Lección 4: Control de flujo y arrays

¿Cómo se obtiene el tamaño de un array a?

Pregunta 11Lección 5: Clases, objetos y records

¿Qué imprime este programa?

record Punto(int x, int y) { }

void main() {
    IO.println(new Punto(3, 4).equals(new Punto(3, 4)));
}
Pregunta 12Lección 5: Clases, objetos y records

¿Qué imprime este programa?

class Libro {
    final String titulo;
    Libro(String titulo) { this.titulo = titulo; }
}

void main() {
    IO.println(new Libro("Rayuela").equals(new Libro("Rayuela")));
}
Pregunta 13Lección 6: Herencia, interfaces y sellado

Se añadió Rombo a la interfaz sellada, pero no al switch, que no tiene default. ¿Qué ocurre?

sealed interface Figura permits Circulo, Rect, Rombo {}
record Circulo(double r) implements Figura {}
record Rect(double an, double al) implements Figura {}
record Rombo(double d1, double d2) implements Figura {}

double area(Figura f) {
    return switch (f) {
        case Circulo c -> Math.PI * c.r() * c.r();
        case Rect r    -> r.an() * r.al();
    };
}
Pregunta 14Lección 6: Herencia, interfaces y sellado

¿Para qué sirve la anotación @Override?

Pregunta 15Lección 7: Colecciones y genéricos

¿Qué imprime este código?

var lista = new ArrayList<>(List.of("pan", "uva", "pan"));
lista.remove("pan");
IO.println(lista);
Pregunta 16Lección 7: Colecciones y genéricos

¿Qué imprime este código?

Map<String, Integer> stock = new HashMap<>();
stock.put("pan", 3);
IO.println(stock.get("kiwi"));
Pregunta 17Lección 7: Colecciones y genéricos

¿Qué imprime este programa?

class Mala {
    final String a;
    Mala(String a) { this.a = a; }
}

void main() {
    Map<Mala, String> m = new HashMap<>();
    m.put(new Mala("x"), "valor");
    IO.println(m.get(new Mala("x")));
}
Pregunta 18Lección 8: Excepciones y Optional

¿Cuál de estas excepciones obliga el compilador a capturar o declarar con throws?

Pregunta 19Lección 8: Excepciones y Optional

¿Qué lanza Integer.parseInt(null)?

Pregunta 20Lección 8: Excepciones y Optional

¿Qué diferencia hay entre opcional.orElse(calcular()) y opcional.orElseGet(() -> calcular())?

Pregunta 21Lección 9: Streams y lambdas

¿Qué imprime este código?

List.of(1, 2, 3).stream()
    .filter(n -> { IO.println("visto " + n); return true; });
Pregunta 22Lección 9: Streams y lambdas

¿Qué ocurre al ejecutar esto?

var s = List.of(1, 2, 3).stream();
IO.println(s.count());
IO.println(s.count());
Pregunta 23Lección 10: Un proyecto de verdad

¿Qué hace la opción -d clases en javac -d clases $(find src -name "*.java")?

Pregunta 24Lección 10: Un proyecto de verdad

¿Para qué sirve --main-class en jar --create --file inventario.jar --main-class com.decodigo.inventario.Main -C clases .?

Las preguntas siguen el orden del curso. Si fallas alguna, el enlace de su explicación te lleva a la lección donde se explica con ejemplos. Imagen para redes: código en un monitor, foto de Markus Spiske, Wikimedia Commons, CC0.