Estaba pasando por preguntas que todo buen desarrollador de .Net debería poder responder y estaba muy impresionado con el contenido y el enfoque de esta pregunta, por lo que, con el mismo espíritu, hago esta pregunta para el Desarrollador Java / Java EE.
¿Qué preguntas cree que debería ser capaz de responder un buen programador Java / Java EE?
Estoy marcando esta pregunta como wiki de comunidad, ya que no es específica del usuario y tiene como objetivo servir a la comunidad de programación en general.
Esperamos respuestas sorprendentes.
EDITAR : Responda las preguntas también, como se sugiere en los comentarios, para que las personas también puedan aprender algo nuevo sobre el idioma.
java
jakarta-ee
Rachel
fuente
fuente
Respuestas:
¿Cuál es la relación entre hashCode () y equals ()? ¿Cuál es el significado de estos métodos? ¿Cuáles son los requisitos para implementarlos?
fuente
¿Cuál es la diferencia entre Set, Map y List?
Todavía estoy sorprendido de cuántas personas no conocen esta en una entrevista telefónica.
fuente
La mayoría de las personas responde "no", porque saben que Java no tiene herencia múltiple. Pero una interfaz aún puede extender múltiples interfaces (pero una clase no puede extender varias clases). Esto no conduce al problema del diamante.
Si la respuesta es "no", el entrevistador debe preguntar "¿por qué estaría prohibido?". Entonces empiezas a pensar en ello y debes darte cuenta de que no hay ningún problema.
Entonces aprendiste algo (por ti mismo) en la entrevista y le mostraste al entrevistador que puedes razonar sobre clases, objetos, herencia, polimorfismo, etc. En realidad, es mucho mejor que un candidato que sabe la respuesta de memoria pero no sabe entender porqué
fuente
Uso de la palabra clave final en llamadas a métodos. Por ejemplo, ¿por qué la prueba del método en el código siguiente no da ningún error de compilación a pesar de usar el calificador final para el parámetro del método?
fuente
final
palabra clave se aplica alName
objeto, no alname
campo de claseName
n
se declara como final, lo que significa que no se puede reasignar en eltest
cuerpo del método. No causa un error porque el métodotest
no intenta reasignar el parámetro, simplemente establece una propiedad en el parámetro ...n = new Name("test");
causaría un error de compilación ...Uno seguro es la comparación de la cadena. Diferencia entre
fuente
Pregunta capciosa: ¿Qué tipos de parámetros se pasan por referencia en Java?
Es sorprendente cuántas personas siguen repitiendo el mantra "las primitivas pasan por valor, los objetos pasan por referencia" mantra.
fuente
Dijiste "Bueno", "Desarrollador". Aquí están mis 2 centavos también .. :)
Para J2EE:
Puedo pensar en muchos, muchos más, pero esto funcionará por ahora :)
fuente
¿Cuál es la diferencia entre String, StringBuffer y StringBuilder?
fuente
"¿Qué es un descriptor de despliegue?"
Si el candidato se estremece involuntariamente, tiene experiencia trabajando con EJB anteriores a 3.0.
fuente
Muchas preguntas y entrevistas están disponibles en http://www.techinterviews.com/interview-questions/java y realmente no veo valor en copiar / pegar una selección de ellas.
No, depende de usted crear su propia compilación de cosas que considera importantes. Personalmente, procedo siempre en dos pasos: primero algunas preguntas para tener una idea básica de la experiencia y las habilidades, luego una situación de resolución de problemas. De hecho, no estoy convencido de que poder responder cualquier pregunta conocida lo convierta en un solucionador de problemas desconocido bueno o malo . Por lo tanto, prefiero pedirles a las personas que resuelvan un problema determinado, que les den algunos requisitos y que escriban un código (pero no en papel). Les doy algo de tiempo para que vuelvan y comprueben cómo lo hicieron, su estilo de codificación, cómo usaron las API sugeridas, etc.
Dicho todo esto, mi pregunta favorita es "¿qué no te gusta de Java?" (en el espíritu de este ). Realmente es una excelente pregunta, le brinda una retroalimentación inmediata sobre cuánto un candidato ha utilizado Java y ha explorado su API y si es religioso o no (como escribió el OP).
Actualización: según lo sugerido por CPerkins, una mejor redacción para la pregunta sugerida anteriormente podría ser "¿Qué es lo que más le gustaría ver cambiado en Java?". Y de hecho, prefiero de esta manera.
fuente
¿Qué es 'System', 'out', 'println' en System.out.println? ¿Qué sucede cuando llamas a 'poner' en HashMap?
fuente
fuente
new
o^
o>>
,<<
y>>>
). Si pudiera cambiar otra cosa, sería agregar una verdadera semántica de llamada por referencia. Una tercera cosa sería agregarunsigned
tipos integrales.fuente
Si está contratando graduados con Java "experiencia", una pregunta simple como Escribir un código que hará que se arroje una NullPointerException puede distinguir qué candidatos han usado Java recientemente y no se detuvieron cuando terminaron su unidad / curso.
fuente
¿Qué se imprimirá?
Respuesta : CoolReturn + 1
Un poco más difícil:
Respuesta : CoolReturn
fuente
¿Cuál es la diferencia entre una clase abstracta y una interfaz? ¿Cuándo usarías cada uno de ellos?
Muchos desarrolladores de Java no saben esto, le pregunté a la mayoría de las personas en mi curso de informática en la universidad y la gran mayoría no pudo responder.
fuente
Preguntas simples como,
Aunque estos son muy básicos, muchos desarrolladores no conocen las respuestas. Sugiero que se hagan antes de las consultas relacionadas con el código.
fuente
Las 5 preguntas más frecuentes de J2EE / JEE
La lista de preguntas de middleware J2EE / JEE que he enfrentado es excepcionalmente larga, pero aquí están las 5 principales que me han preguntado y han llevado a buenas discusiones:
Esta pregunta generalmente lleva a varias discusiones interesantes sobre mensajes de envenenamiento, colas de error, etc.
Esta pregunta generalmente me permite discutir en términos de cuándo usar suscriptores duraderos, cuándo usar colas, etc.
Esto lleva a discusiones maravillosas sobre la carga diferida, la rehidratación, etc. Incluso ha llevado a comparar y contrastar JPA con Entity beans. Me ha resultado útil estar preparado y ser claro en los conceptos.
Cualquier solución, desde un simple servidor web basado en sofisticadas soluciones SOAP / REST, y cualquier otra en el medio, debería ser lo suficientemente buena. Además, según el entrevistador, a veces conduce a discusiones muy interesantes sobre temas como algunas ideas de diseño: WSDL primero, estilo doc, intermediarios SOAP, etc. -RPC, o SOAP1.2 sobre SOAP1.1, cuyas respuestas generalmente se basan en cuánto recuerdo.
Esta pregunta se plantea de muchas maneras, comenzando desde el patrón del Localizador de servicio hasta las
javax.naming.Context
preguntas.Otra pregunta difícil que encuentro problemática, pero que he enfrentado muchas veces es, ¿cómo se empaquetan las bibliotecas dependientes en un archivo?
o Visibilidad de varias clases en un archivo incluido.
Si la discusión no conduce a la jerarquía del cargador de clases de diferentes servidores de aplicaciones, archivos de recursos, etc., es mejor renunciar y seguir adelante.
Las 5 preguntas principales de Java:
Esta es la madre de todas las preguntas. Una vez que pueda aterrizar efectivamente al entrevistador en esta área, y si está preparado, el resto de la entrevista generalmente se queda aquí. Asegúrese de saber
Set
,List
,Map
, y la importancia deObject.equals()
yObject.hashCode()
en cada implementación de estas interfaces.Estas son buenas si el entrevistador tiene una mente abierta. Si el entrevistador ya tiene una solución específica en mente, y la suya no coincide con la suya, está prácticamente condenado. Es mejor estar de acuerdo con la respuesta "Entiendo que otras soluciones son posibles".
Esta es una pregunta segura con muchos entrevistadores. Por mucho que odie esto, es mejor estar preparado. Al menos recordar algunos con los que he trabajado y liderar la discusión en otra dirección, esquiva y resuelve el problema de manera amplia y efectiva.
Una y otra vez me han pedido que señale un patrón de GoF en la API de Java. Mejor prepárate para este.
fuente
Diferencia entre un servidor web y un contenedor web
fuente
¿Qué es lo que más te gusta / menos de Java y por qué?
fuente
¿Por qué anularía el método toString ()?
fuente
Una pregunta más pura de Java:
¿Cuál es la diferencia entre dormir y esperar? No mucha gente realmente comprende cómo funciona la espera.
¿Cómo necesita manejar las interrupciones interrumpidas?
fuente
Esta es la pregunta que enfrenté en mi entrevista.
¿Por qué el método main en Java se llama public static void main (String [] args)?
Responder:
1. main () debe declararse público porque JVM lo invoca cada vez que comienza la ejecución del programa. JVM no pertenece a nuestro paquete de programas.
Para acceder a main fuera del paquete, tenemos que declararlo como público. Si lo declaramos como algo que no sea público, muestra un Error de tiempo de ejecución pero no un error de tiempo de compilación
2. main () debe declararse como estático porque si un método se declara como estático, entonces podemos llamar a ese método fuera de la clase usando ClassName.methodName ();
La JVM primero cargará la clase de prueba, verificará los argumentos de la línea de comandos y llamará al método principal como Test.main ();
3. main () debe declararse como void main () porque JVM no espera ningún valor de main (). Por lo tanto, debe declararse como void.
Si se proporciona otro tipo de retorno, es un RunTimeError, es decir; NoSuchMethodFoundError.
4. main () debe tener argumentos de cadena como matrices porque JVM llama al método principal al pasar el argumento de la línea de comandos. Como se almacenan en un objeto de matriz de cadena, se pasa como argumento a main ().
fuente
public static void main(String... args)
si está tan inclinado :-) Tiene la misma firma que[]
¿Cuál es la diferencia entre J2SE y J2EE (o JSE y JEE)?
Un desarrollador debe poder señalar que la edición empresarial es básicamente una definición de interfaz (es decir, una especificación) que los proveedores pueden implementar. Mientras que la edición estándar es una implementación en sí misma
fuente
¿Cómo
volatile
afecta la optimización del código por compilador?fuente
¿Qué tal un bean de sesión? Describa algunas diferencias entre beans de sesión sin estado y con estado.
fuente
Escriba un programa para aceptar dos enteros y envíe el mayor de dos números a un archivo en la ubicación que elija. Ahora describe lo que hace cada declaración.
Es posible profundizar bastante a partir de la importancia de la declaración de importación, hasta la terminación anormal
fuente
Núcleo: 1. ¿Qué son las excepciones marcadas y no marcadas? 2. Al agregar una nueva excepción en el código, ¿qué tipo (marcado / sin marcar) usar cuándo?
Servlet: 1. ¿Cuál es la diferencia entre response.sendRedirect () y request.forward ()?
fuente
¿Cómo se
threads
trabaja? ¿Qué essynchronized
? Si hay dossynchronized
métodos en una clase, ¿pueden ser ejecutados simultáneamente por dos hilos? Te sorprenderá escuchar a muchas personas responder que sí . Luego, todas las preguntas relacionadas con hilos, por ejemplo , punto muerto , hambre , etc.fuente
thread
está ejecutando el método, ningún otrothread
puede obtener el bloqueo.Una cosa que muchos programadores de Java no saben es que las cadenas son inmutables, ¡así que use StringBuilder o StringBuffer!
fuente
s += "a" + "b" + "c"
en unStringbuilder.append(...)
escenario. Pero no optimizará unfor
bucle. El código en esta respuesta terminará creando un total de 201 Strings, 100 StringBuilders y (dependiendo de la implementación) 300char[]
s diferentes dentro de esos StringBuilders, y un estimado de 425k + caracteres. Cambiarlo para usar un StringBuilder directamente lo reducirá a 1 String, 1 StringBuilder y 13-15char[]
s internos usando solo ~ 8k caracteres como debería.