Si alguna vez se ha preparado para una entrevista para el puesto de programador Java o ha realizado algún examen (no necesariamente de programación) para obtener un certificado, lo más probable es que ya haya notado que las preguntas que hacen son muy específicas. Muchos de ellos te hacen pensar en la arquitectura del idioma, algunos están diseñados para un conocimiento profundo. También los hay que se parecen más a acertijos o se refieren a matices que son muy difíciles de sentir sin práctica. En este artículo, el desarrollador Saraans Singh proporciona varias de estas preguntas sobre Java. Con respuestas, por supuesto. 1. ¿Qué sucede si coloca una declaración return o System.exit() en un bloque try/catch? Esta es una pregunta de "puesta al día" muy popular en Java. El truco es que muchos programadores creen que el bloque
finally
se ejecutará de todos modos. Esta pregunta desafía este concepto al colocar una declaración return
en un bloque try/catch
o llamar desde un bloque try/catch
de declaración System.exit ()
. La respuesta a esta complicada pregunta: el bloque finally
se ejecutará cuando se coloque una declaración return
en un bloque try/catch
, y no se ejecutará cuando se llame desde un bloque try/catch
de declaración System.exit ()
. 2. ¿Java admite herencia múltiple? Esta es una pregunta muy complicada. Los entrevistadores suelen decir: si C++ puede soportar la herencia múltiple directa, ¿por qué no puede hacerlo Java? La respuesta es un poco más complicada de lo que parece, ya que Java admite herencia de tipos múltiples, porque una interfaz en él puede extender otras interfaces. Pero el lenguaje Java no admite la herencia múltiple de implementaciones. 3. En el caso de que un método arroje una excepción NullPointerException
en la clase principal, ¿puede ser anulada por el método que arroja RuntimeException
? Otra pregunta complicada relacionada con los conceptos de sobrecarga y anulación. Respuesta: Puede generar de forma segura una excepción de clase principal en un método anulado NullPointerException – RuntimeException
, pero no puede hacer lo mismo con una excepción de tipo marcada Exception
. 4. ¿Cómo garantizar que los subprocesos puedan acceder a los recursos sin interbloqueos? N
N
Si no eres muy bueno escribiendo código multiproceso, esta pregunta te resultará realmente complicada. Puede ser un desafío incluso para un programador experimentado que no haya lidiado con puntos muertos y condiciones de carrera. El truco aquí está en el orden: el punto muerto se puede evitar liberando recursos en el orden inverso al que fueron adquiridos. 5. ¿Cuál es la diferencia entre clases StringBuffer
y StringBuilder
en el lenguaje Java? Una pregunta clásica sobre el lenguaje Java, considerada complicada por algunos desarrolladores y muy sencilla por otros. La clase StringBuilder
se introdujo en JDK 1.5 y la única diferencia entre ellos es que los métodos de la clase StringBuffer
, por ejemplo, length()
o capacity()
, append()
están sincronizados, mientras que los métodos correspondientes de la clase StringBuilder
no. Debido a esta diferencia fundamental, la concatenación de cadenas StringBuilder
es más rápida con StringBuffer
. De hecho, StringBuffer
no se recomienda su uso, ya que en el 99% de los casos de uso, la concatenación de cadenas se realiza en el mismo hilo. 6. ¿Qué devuelve la expresión 1.0/0.0? ¿Lanzará una excepción o provocará un error de compilación? Otra pregunta complicada sobre la clase Double
. Aunque los desarrolladores de Java conocen el tipo de datos simple double y la clase , cuando realizan operaciones de punto flotante , Double
no prestan suficiente atención a Double.INFINITY
, y a las reglas que gobiernan los cálculos aritméticos asociados con ellos. La respuesta a esta pregunta es simple: no se lanzará ninguna excepción , se devolverá el valor . 7. ¿Qué sucede si intentas insertar un objeto clave en un objeto clave que ya existe en él? Esta pregunta capciosa es parte de otra pregunta frecuente: ¿cómo funcionan en Java? es un tema popular para preguntas confusas y complicadas sobre el lenguaje Java. La respuesta es que si intenta reinsertar una clave , reemplazará la anterior porque la clase no permite claves duplicadas. Y la misma clave significa el mismo código hash, por lo que terminará en el mismo lugar en el segmento hash. Basado en materiales de QuoraNaN
-0.0
ArithmeticException
Double.INFINITY
HashMap
HashMap
HashMap
HashMap
HashMap
GO TO FULL VERSION