P
prepair.app
Comenzar entrevista →
EnglishУкраїнськаРусскийDeutsch

Junior Java BackendPreguntas de entrevista Java backend

Junior · sin experiencia / menos de 1 año

Las entrevistas de Java backend cubren la semántica central del lenguaje, colecciones, concurrencia, Spring, y cómo razonas sobre la JVM. Aquí están las preguntas más frecuentes, cada una con una respuesta modelo. Junior: teoría básica, definiciones y casos prácticos simples.

Pruébalo — sin cuenta necesaria
Preparando tu pregunta…

Temas para prepararte

Java core y OOP
Collections Framework
Concurrencia e hilos
Spring Boot y Spring Data
JVM, GC y memoria
SQL e Hibernate

10 preguntas de nivel Junior con respuestas

1

¿Cuál es la diferencia entre == y equals() para objetos?

Respuesta

== compara referencias — si dos variables apuntan al mismo objeto en memoria. equals() compara contenido, si la clase lo sobreescribe; el Object.equals por defecto recae en ==. Por eso comparar dos Strings construidos en runtime con == devuelve false mientras equals() devuelve true, y es el tropiezo más común en entrevistas de Java.

2

¿Cuál es la diferencia entre una interface y una clase abstracta?

Respuesta

Una clase abstracta puede tener estado y constructores y describe qué es algo; una clase puede extender solo una. Una interface describe qué puede hacer algo y una clase puede implementar muchas. Desde Java 8 las interfaces pueden llevar métodos default, así que la regla práctica es: estado compartido significa clase abstracta, capacidad compartida significa interface.

3

¿Qué es el autoboxing y dónde muerde?

Respuesta

Autoboxing es el compilador convirtiendo automáticamente entre primitivos y sus wrappers. Muerde en dos lugares: comparar wrappers con == funciona por accidente para valores pequeños por la caché de Integer entre -128 y 127 y luego deja de funcionar silenciosamente, y hacer unboxing de un Integer null lanza NullPointerException en una línea que parece aritmética normal.

4

Explica final, finally y finalize.

Respuesta

No están relacionados a pesar de los nombres. final hace una variable no reasignable, un método no sobreescribible, o una clase no extensible. finally es el bloque que corre haya o no una excepción lanzada, usado para limpieza. finalize era un método que el garbage collector podía llamar antes de recuperar un objeto; era poco confiable y está deprecado — usa try-with-resources en su lugar.

5

¿Cuál es la diferencia entre ArrayList y LinkedList?

Respuesta

ArrayList envuelve un array redimensionable: el acceso por índice es O(1), pero insertar en el medio desplaza todo lo que sigue. LinkedList es una lista doblemente enlazada: insertar en un nodo conocido es O(1), pero llegar al índice n cuesta n pasos y cada elemento carga overhead de puntero. En la práctica ArrayList gana casi siempre, porque la localidad de caché vence al big-O en hardware real.

6

¿Qué significa realmente la palabra clave static?

Respuesta

Un miembro static pertenece a la clase y no a ninguna instancia, así que existe una sola vez sin importar cuántos objetos crees y se puede usar sin uno. La consecuencia que la gente olvida es que un campo static es estado mutable compartido en toda la aplicación — conveniente para constantes, fuente de bugs difíciles para cualquier cosa que cambie.

7

¿Cuál es la diferencia entre excepciones checked y unchecked?

Respuesta

Las excepciones checked extienden Exception y el compilador te obliga a capturarlas o declararlas; describen condiciones de las que un caller puede razonablemente recuperarse, como un archivo faltante. Las unchecked extienden RuntimeException y señalan errores de programación — una referencia null, un argumento incorrecto. Usa unchecked para bugs, y checked con moderación, porque forzar a cada caller a manejar algo usualmente produce bloques catch vacíos.

8

¿Cuál es el contrato entre `equals()` y `hashCode()`?

Respuesta

Si dos objetos son iguales deben devolver el mismo hash code; lo inverso no es requerido. Rómpelo y un HashMap deja de funcionar — pones un objeto, lo buscas con uno igual, y obtienes null, porque la búsqueda fue a otro bucket. Por eso sobreescribir uno sin el otro es un bug, no una cuestión de estilo.

9

¿Por qué `String` es inmutable en Java?

Respuesta

Porque se comparte. Los literales viven en el string pool y una instancia puede ser referenciada desde muchos lugares, así que un string mutable dejaría que un poseedor cambiara el valor de otro. La inmutabilidad también hace a los strings thread-safe sin sincronización, permite cachear el hash code, y los mantiene seguros para usar en class loading y parámetros de conexión donde un cambio tardío sería un agujero de seguridad.

10

¿Puedes sobreescribir un método static?

Respuesta

No — solo puedes ocultarlo. El overriding se resuelve en runtime desde el tipo del objeto, mientras que un método static se resuelve en tiempo de compilación desde el tipo de la referencia. Así que una subclase que declara la misma firma static no reemplaza a la del padre; cuál corre depende del tipo declarado, no del objeto real, que es exactamente por qué llamar a un static a través de una referencia de instancia se desaconseja.

🦎

Leer respuestas no es suficiente

En una entrevista real hablas bajo presión. Cam hace estas mismas preguntas, evalúa cada respuesta y muestra exactamente qué mejorar.

Practicar entrevista de Junior Java Backend →
Gratis · 3 entrevistas al mes

Otros niveles — Java Backend

Middle Java BackendSenior Java BackendTodas las preguntas de Java Backend

Otras especializaciones

🔍Junior Manual QA🤖Junior QA Automation🐍Junior Python Backend🐘Junior PHP Backend🦫Junior Go Backend🟢Junior Node.js Backend💎Junior Ruby on Rails🔷Junior C++🟨Junior JavaScript⚛️Junior React Frontend