Preguntas y respuestas: Java

Repasa Java: aquí tienes una selección de preguntas de todos los niveles, con respuesta y explicación. Para ponerte a prueba sin ver las respuestas, juega a los quizzes.

Jugar a los quizzes de Java

Fácil

¿Qué informático diseñó el lenguaje Java en Sun Microsystems?

Respuesta : James Gosling

James Gosling diseñó Java en Sun Microsystems; el lenguaje se anunció en 1995.

¿Qué componente carga y ejecuta el bytecode de Java en una máquina?

Respuesta : La máquina virtual de Java (JVM)

La JVM lee el bytecode y lo ejecuta, lo que permite que el mismo programa funcione en varios sistemas operativos.

¿Qué comando del JDK compila un archivo fuente .java a bytecode?

Respuesta : javac

javac produce archivos .class que contienen el bytecode; después, el comando java ejecuta ese bytecode en la JVM.

¿Qué tipo primitivo de Java solo puede tomar los valores true y false?

Respuesta : boolean

«boolean» es el tipo primitivo de los valores lógicos; «bool» no es una palabra clave de Java.

¿De qué tipo es el valor 'A', escrito entre comillas simples, en Java?

Respuesta : char

Entre comillas simples, un valor es un carácter: el tipo char codifica un carácter en 16 bits (UTF-16).

¿Qué afirmación sobre el JDK y el JRE es correcta?

Respuesta : El JDK contiene las herramientas de desarrollo, el JRE solo sirve para ejecutar

El JDK reúne las herramientas para desarrollar (entre ellas javac); el JRE solo contiene lo necesario para ejecutar un programa Java.

¿Qué método de la clase String devuelve su número de caracteres?

Respuesta : length()

El método length() devuelve el número de caracteres de una String; size() es el método de las colecciones, como List.

Con el código int[] t = new int[5]; ¿cuál es el último índice válido del array t?

Respuesta : 4

Los índices empiezan en 0: un array de cinco casillas tiene los índices 0, 1, 2, 3 y 4.

Medio

¿Qué palabra clave indica que una clase hereda de otra clase en Java?

Respuesta : extends

extends vincula una subclase con su superclase, de la que toma los miembros accesibles.

¿Qué modificador hace que un atributo solo sea accesible desde el código de su propia clase?

Respuesta : private

private restringe el acceso a la clase que declara el atributo; es un pilar de la encapsulación, con métodos de acceso si hacen falta.

¿Cuál es la particularidad sintáctica de un constructor de Java?

Respuesta : Lleva el nombre exacto de la clase y no tiene tipo de retorno

Un constructor lleva el nombre de su clase y no tiene tipo de retorno; new lo invoca para inicializar el objeto al crearlo.

¿A quién pertenece un atributo declarado con la palabra clave static?

Respuesta : A la propia clase, compartido por todos sus objetos

Un atributo static existe una sola vez para la clase: lo comparten todos los objetos y se usa sin crear un objeto.

¿Cómo declara una clase que proporciona el código de los métodos de una interfaz?

Respuesta : Con la palabra clave implements

Una clase que implementa una interfaz lo indica con implements y debe escribir el código de cada método abstracto de la interfaz.

¿Qué bloque asociado a try se ejecuta después del try, haya o no una excepción lanzada?

Respuesta : finally

finally se ejecuta después del try y de un eventual catch, lance o no una excepción (salvo parada brusca de la JVM).

¿Qué interfaz de colección nunca acepta dos elementos iguales según equals?

Respuesta : Set

Un Set no conserva los duplicados: add devuelve false si el elemento ya está presente. HashSet es una implementación habitual.

En Map<String, Integer>, ¿a qué corresponde el tipo String?

Respuesta : Al tipo de las claves

El primer parámetro de Map designa el tipo de las claves, y el segundo el de los valores asociados.

Difícil

¿En qué zona de memoria coloca la JVM los objetos creados con new?

Respuesta : El montículo (heap)

Los objetos viven en el montículo (heap), compartido entre hilos; la pila de cada hilo guarda las variables locales y las referencias a esos objetos.

¿Qué hace el recolector de basura (garbage collector) de la JVM?

Respuesta : Libera la memoria de los objetos que han quedado inaccesibles

El recolector de basura libera la memoria de los objetos que ya no son accesibles desde el programa; no gestiona archivos ni bytecode.

¿Qué hace el método concat sobre una String en Java?

Respuesta : No modifica la original y devuelve el resultado en una String

Una String es inmutable: ningún método modifica su contenido; devuelven el resultado en forma de String (aquí, la concatenación).

¿Cuál es el efecto principal de la palabra clave synchronized en un método de instancia?

Respuesta : Solo un hilo a la vez puede ejecutar los métodos sincronizados de este objeto

Cada objeto tiene un cerrojo: un hilo debe obtenerlo para entrar en un método sincronizado, lo que evita los accesos concurrentes.

¿Qué modificador garantiza que un hilo lea el último valor escrito en un campo por otro hilo?

Respuesta : volatile

volatile asegura la visibilidad de las escrituras entre hilos, pero no hace atómica una operación compuesta como x++.

¿Cuál es el papel principal de un ExecutorService?

Respuesta : Gestionar un pool de hilos y enviarle tareas

Un ExecutorService separa el envío de tareas de la creación de hilos, y reutiliza los hilos de un pool.

¿Qué es una interfaz funcional en Java?

Respuesta : Una interfaz que declara exactamente un método abstracto

Una lambda puede implementar una interfaz funcional; la anotación @FunctionalInterface es opcional, pero el compilador verifica la regla si está presente.

¿En qué año salió la versión Java 8, que introduce las lambdas y la API Stream?

Respuesta : 2014

Java 8 salió en marzo de 2014; también trajo Optional y las interfaces funcionales del paquete java.util.function.

Temas relacionados

Jugar a los quizzes de Java