Original article: Review these 50 questions to crack your Java programming interview

Una lista con preguntas frecuentes de Java en entrevistas de trabajo para programadores.

¡Hola todos! En los últimos años, he estado compartiendo muchas preguntas y debates sobre entrevistas de Java individualmente. Muchos de mis lectores me han pedido que las reúna para poder tenerlas en un mismo lugar. Este post es el resultado de ello.

Este artículo contiene más de 50 preguntas de entrevistas de Java que cubren todos los temas importantes, como los fundamentos de Core Java, Java Collection Framework , Java Multithreading and Concurrency , Java IO , JDBC , JVM Internals , Problemas de codificación , Programación orientada a objetos , etc.

Las preguntas también están extraídas de varias entrevistas y no son, en modo alguno, muy difíciles. Es posible que ya las hayas visto en tu teléfono o en la ronda de entrevistas cara a cara.

Las preguntas también son muy útiles para repasar temas importantes como hilos o subprocesos múltiples y colecciones. También he compartido algunos recursos útiles para seguir aprendiendo y mejorando, como The Complete Java MasterClass para repasar y llenar los vacíos en tus habilidades de Java.

Entonces... ¿Qué estamos esperando? Aquí está la lista de algunas de las preguntas de Java más frecuentes en entrevistas para desarrolladores de Java principiantes y experimentados.

Más de 50 preguntas de entrevista de Java para programadores experimentados de 2 a 3 años

Pues... sin perder más tiempo, aquí está mi lista de algunas preguntas de entrevista de Core Java más frecuentes para programadores principiantes. Esta lista se enfoca en principiantes y desarrolladores menos experimentados, con 2 o 3 años de experiencia en Java.

1) ¿Cómo consigue Java la independencia de la plataforma? (respuesta)

pista: bytecode y Java Virtual Machine

2) ¿Qué es el ClassLoaderen Java? (respuesta)

pista: parte de JVM que carga bytecodes para clases. Puedes escribir el tuyo propio.

3) ¿Escribir un programa Java para comprobar si un número es par o impar? (respuesta)

pista: puedes usar el operador bit a bit, como AND bit a bit, recuerda que, los números pares tienen un cero al final en formato binario y los impares acaban en 1.

4) ¿Diferencia entre ArrayListy HashSeten Java? (respuesta)

pista: todas las diferencias entre Listy Setson aplicables aquí, por ejemplo, ordenamiento, duplicados, búsqueda aleatoria, etc. Consulta Fundamentos de Java: colecciones de Richard Warburton para obtener más información sobre ArrayList, HashSet y otras colecciones importantes en Java.

ueOwMAd5GBdw4blCOpEBpOdMOtcs-et6nPYA

5) ¿Qué es el bloqueo de doble verificación en Singleton? (respuesta)

pista: verifica dos veces si las instancias están inicializadas o no, primero sin bloqueo y segundo con bloqueo.

6) ¿Cómo se crea Singleton seguro para subprocesos en Java? (respuesta)

pista: de muchas maneras, como usar Enum o usar un patrón de bloqueo verificado dos veces así cómo usar una clase estática anidada.

7) ¿Cuándo usar la variable volátil en Java? (respuesta)

pista: cuando necesitas indicar a la JVM que una variable puede ser modificada por múltiples subprocesos y dar una pista a la JVM para que no almacene en caché su valor.

8) ¿Cuándo usar una variable transitoria en Java? (respuesta)

pista: cuando quieras hacer que una variable no sea serializable en una clase que implemente la interfaz Serializable. En otras palabras, puedes usarla para una variable cuyo valor no quieras guardar. Consulta The Complete Java MasterClass para obtener información sobre las variables transitorias en Java.

9) ¿Diferencia entre la variable transitoria y volátil en Java?  (respuesta)

pista: totalmente diferente, una se usa en el contexto de la serialización mientras que la otra se usa en concurrencia.

10) ¿Diferencia entre serializable y externalizable en Java? (respuesta)

pista: externalizable da más control sobre el proceso de serialización.

11) ¿Podemos sobreescribir un método privado en Java? (respuesta)

pista: No, porque no está visible en la subclase, que es requisito principal para sobreescribir un método en Java.

12) ¿Diferencia entre Hashtable y HashMapen Java? (respuesta)
pista: varias pero la más importante es que Hashtable está sincronizada, mientras que HashMapno lo está. También es heredada y lenta en comparación con HashMap.

13) ¿Diferencia entre List y Set en Java? (respuesta)

pista: Listestá ordenada y permite duplicacidad. Setestá desordenado y no permite elementos duplicados.

14) Diferencia entre ArrayList y Vectoren Java (respuesta)

pista: muchas, pero lo más importante es que ArrayList no está sincronizada y es rápida, mientras que Vector está sincronizada y es lenta. También es una clase heredada como Hashtable.

15) ¿Diferencia entre Hashtabley ConcurrentHashMapen Java? (respuesta)

pista: más escalable. Consulte Fundamentos de Java: Colecciones de Richard Warburton para obtener más información.

16) ¿Cómo consigue ConcurrentHashMap escalabilidad? (respuesta)

pista: dividiendo el mapa en segmentos y solo bloqueando durante la operación de escritura.

17) ¿Qué dos métodos sobreescribir para que Objectse use como Keyen HashMap? (respuesta)

pista: equals y hashcode

18) ¿Diferencia entre esperar y dormir en Java? ( respuesta )

pista: el método wait() libera el bloqueo o monitoriza, mientras que sleep() no lo hace.

19) ¿Diferencia entre notify y notifyAllen Java? (respuesta)

pista: notify notifica que un subproceso aleatorio está esperando el bloqueo mientras notifyAll informa a todos los subprocesos que esperan un monitor. Si estás seguro de que solo hay un subproceso en espera, usa notify, sinó notifyAlles preferible. Consulta el minicurso de conceptos básicos de creación de subprocesos impartido por el campeón de Java Heinz Kabutz para obtener más información sobre los conceptos básicos de creación de subprocesos.

20) ¿Por qué anula el código hash, junto con equals()Java? (respuesta)

pista: para cumplir con la función de equals y hashcode, que se requiere si planeas almacenar un objeto en clases de colección, por ejemplo, HashMapo ArrayList.

21) ¿Qué representa el factor de carga de HashMap? (respuesta)

pista: el umbral que activa el cambio de tamaño HashMapes generalmente 0,75, lo que significa que HashMap cambia de tamaño si está lleno en un 75 por ciento.

22) ¿Diferencia entre ArrayList y LinkedListen Java? (respuesta)

pista: la misma que una matriz y una lista vinculada, una permite la búsqueda aleatoria mientras que la otra no. La inserción y la eliminación son fáciles en la lista vinculada, pero la búsqueda es fácil en una matriz. Consulta Fundamentos de Java: Colecciones , el curso de Richard Warburton sobre Pluralsight, para obtener más información sobre la estructura de datos de colección esencial en Java.

23) ¿Diferencia entre CountDownLatchy CyclicBarrieren Java? (respuesta)

pista: puedes reutilizar CyclicBarrierdespués de que se rompa la barrera, pero no puedes reutilizar CountDownLatchdespués de que el conteo llegue a cero.

24) ¿Cuándo usar Runnable vs Threaden Java? (respuesta)

pista: siempre

25) ¿Cuál es el significado de que Enum sea seguro para tipos en Java? (respuesta)

pista: significa que no se puede asignar una instancia de diferente tipo Enum a una variable Enum. por ejemplo, si tienes una variable como DiaDeLaSemana, entonces no puedes asignarle al día un valor desde una enumeración DiaDelMes.

26) ¿Cómo funciona Autoboxing of Integer en Java? (respuesta)

pista: Usando el método valueOf() en Java.

27) ¿Diferencia entre PATHy Classpath en Java? (respuesta)

pista: PATHlo utiliza el sistema operativo, mientras que Classpath lo utiliza JVM para localizar archivos binarios de Java, por ejemplo, archivos JAR o archivos de clase. Consulta Fundamentos de Java: la plataforma principal para obtener más información acerca de PATH, Classpath, y otras variables de entorno de Java.

io-lPE67oMG1oBh204LvPm61t7kAcLFvp-B6

28) ¿Diferencia entre sobrecarga y anulación de métodos en Java? (respuesta)

pista: la sobreescritura ocurre en la subclase mientras que la sobrecarga ocurre en la misma clase. Además, la sobreescritura es una actividad en tiempo de ejecución, mientras que la sobrecarga se resuelve en tiempo de compilación.

29) ¿Cómo evitar que una clase se subclasifique en Java? (respuesta)

pista: simplemente haciendo que tu constructor sea privado

30) ¿Cómo restringir una clase para que no sea utilizada por el cliente? (respuesta)

pista: haciendo que el constructor sea privado o lanzando una excepción desde el constructor

31) ¿Diferencia entre StringBuildery StringBufferen Java? (respuesta)

pista: StringBuilderno está sincronizado mientras que StringBufferestá sincronizado.

32) ¿Diferencia entre polimorfismo y herencia en Java? (respuesta)

pista: la herencia permite la reutilización del código y construye la relación entre clases, lo cual es requerido por el polimorfismo, que proporciona un comportamiento dinámico. Consulta Fundamentos de Java: diseño orientado a objetos para obtener más información sobre las funciones de programación orientada a objetos.

33) ¿Podemos sobreescribir un método estático en Java? (respuesta)

pista: No, porque la sobreescritura se resuelve en tiempo de ejecución mientras que la llamada al método estático se resuelve en tiempo de compilación.

34) ¿Podemos acceder al método privado en Java? (respuesta)

pista: sí, en la misma clase pero no fuera de la clase

35) ¿Diferencia entre interfaz y clase abstracta en Java? (respuesta)

pista: desde Java 8 , la diferencia es borrosa. Sin embargo, una clase Java aún puede implementar múltiples interfaces pero solo puede extender una clase.

36) ¿Diferencia entre el analizador DOM y SAX en Java? (respuesta)

pista: DOM carga todo el archivo XML en la memoria mientras que SAX no lo hace. Es un analizador basado en eventos y se puede usar para analizar un archivo grande, DOM es rápido y es preferible para archivos pequeños.

37) ¿Diferencia entre la palabra clave throw y throws en Java? (respuesta)

pista: throws declara qué excepción puede lanzar un método en caso de error, pero la palabra clave throw en realidad arroja una excepción. Consulta Conceptos básicos de Java: manejo de excepciones para obtener más información sobre el manejo de excepciones en Java.

QSqKD-b97Dr36kViV1eTdvqNVNgdZRp52D7n

38) ¿Diferencia entre iteradores a prueba de fallos y rápidos en Java? (respuesta)

pista: a prueba de fallos no arroja ConcurrentModificationException mientras que fail-fast lo hace cada vez que detecta un cambio externo en la colección subyacente mientras itera sobre ella.

39) ¿Diferencia entre iterador y enumeración en Java? (respuesta)

pista: Iterator también proporciona la capacidad de eliminar un elemento mientras itera, sin embargo Enumeration no lo permite.

40) ¿Qué es IdentityHashMap en Java? (respuesta)

pista: Un Map, que utiliza el operador de igualdad== para verificar la igualdad en lugar del método equals().

41) ¿Qué es el String pool en Java? (respuesta)

pista: un grupo de String literales. Recuerda que se movió al heap desde el perm gen space en JDK 7.

42) ¿Puede una clase Serializable contener un campo no serializable en Java? (respuesta)

pista: Sí, pero debe ser estático o transitorio.

43) ¿Diferencia entre this y super en Java? (respuesta)

pista: this se refiere a la instancia actual, mientras que super se refiere a una instancia de la superclase.

44) ¿Diferencia entre Comparatory Comparableen Java? (respuesta)

pista: Comparatordefine el orden personalizado mientras Comparabledefine el orden natural de los objetos, por ejemplo, el orden alfabético para String. Consulta The Complete Java MasterClass para obtener más información sobre la clasificación en Java.

DOCGFtdTMhjj3faRAiQ69ZSTxf2pffyroFfv

45) ¿Diferencia entre java.util.Date y java.sql.Date en Java? (respuesta)

pista: la primera contiene tanto la fecha como la hora, mientras que la segunda contiene sólo  parte de la fecha.

46) ¿Por qué los métodos esperar y notificar se declaran en la claseObject en Java? (respuesta)

pista: porque requieren un bloqueo que solo está disponible para un Object.

47) ¿Por qué Java no admite herencias múltiples? (respuesta)

pista: No es compatible debido a una mala experiencia con C++, pero con Java 8, en cierto sentido sí lo es; sólo la herencia múltiple deType no son compatibles con Java ahora.

48) ¿Diferencia entre Excepción marcada y no marcada en Java? (respuesta)

pista: en caso de ser checked, debes manejar la excepción usando el bloque catch, mientras que en caso de no ser checked, depende del programador; no dará error al compilar.

49) ¿Diferencia entre error y excepción en Java? (respuesta)

pista: estoy cansado de escribir por favor comprueba la respuesta

50) ¿Diferencia entre la condición de Race y el Deadlock en Java? (respuesta)

pista: ambos son errores que ocurren en una aplicación concurrente, uno ocurre debido a la programación de hilos, threads o subprocesos mientras que el otro ocurre debido a una codificación deficiente. Consulta Multithreading and Parallel Computing in Java (Cómputo en paralelo y subprocesos múltiples en Java) para obtener más información sobre Deadlocks, condiciones de Race y otros problemas de subprocesos múltiples (multithreading).

Notas de cierre

Gracias, Llegaste al final del artículo… ¡Buena suerte con tu entrevista de programación! Ciertamente no será fácil, pero siguiendo esta hoja de ruta y esta guía, estarás un paso más cerca de convertirte en un ingeniero de DevOps .

Recursos adicionales (en inglés)

P.D. si necesitas algunos recursos GRATUITOS para aprender Java, puedes consultar esta lista de cursos gratuitos de Java para comenzar tu preparación.

P.S.S. no he proporcionado la respuesta a las preguntas de la entrevista compartidas en la imagen "¿Cuántos objetos String se crean en el código?" ¿Podrías adivinar y explicar?