tutorial que jakarta español java java-ee

que - java ee vs java se



Preguntas que cada buen desarrollador Java/Java EE debería ser capaz de responder? (30)

Estaba repasando Cuestiones que todo buen desarrollador de .Net debería poder responder y estaba muy impresionado con el contenido y el enfoque de esta pregunta, y por eso, con el mismo espíritu, hago esta pregunta para Java / Java EE Developer.

¿Qué preguntas cree que un buen programador de Java / Java EE podría responder?

Estoy marcando esta pregunta como wiki de la comunidad, ya que no es específico del usuario y su objetivo es servir a la comunidad de programación en general.

Esperando respuestas sorprendentes.

EDITAR : Por favor, responda las preguntas también, como se sugiere en los comentarios, para que las personas también puedan aprender algo nuevo sobre el idioma.


¿Puede una interfaz extender múltiples interfaces?

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 múltiples clases). Esto no conduce al problema del diamante.

Si la respuesta es "no", el entrevistador debería preguntar "¿por qué estaría prohibido?". Entonces empiezas a pensar en ello y debes darte cuenta de que no hay problema con eso.

Así que aprendiste algo (por ti mismo) en la entrevista y le demostraste 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 lo hace entender porqué


Las 5 preguntas principales 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 se me han preguntado, y han dado lugar a buenas discusiones:

  1. ¿Qué sucede cuando un MDB encuentra una excepción que no puede manejar?
    Esta pregunta generalmente conduce a varias discusiones interesantes sobre mensajes tóxicos, colas de errores, etc.,
  2. Dado un tema de JMS, y algunos consumidores en diferentes JVM, preguntas sobre varios escenarios con y sin consumidores duraderos.
    Esta pregunta usualmente me permite discutir en términos de cuándo usar suscriptores duraderos, cuándo usar colas, etc.
  3. Si se encuentra atascado en una situación en la que acceder a un contenido POBRE de Hibernate / JPA genera excepciones, ¿cómo lo resolvería uno?
    Esto lleva a discusiones maravillosas sobre la carga difusa, la rehidratación, etc., incluso ha llevado a comparar y contrastar JPA con beans de Entity. Me ha parecido útil estar preparado y tener conceptos claros.
  4. ¿Cómo se podría proporcionar un servicio web simple?
    Cualquier solución desde un simple servidor web basado en sofisticadas soluciones SOAP / REST, y cualquiera entre ellas, debería ser lo suficientemente buena. Además, en función del entrevistador, a veces conduce a discusiones muy interesantes sobre temas como algunas ideas de diseño: WSDL primero, estilo doc., Intermediarios SOAP, etc., que pueden llevar a preguntas tales como la inclusión de mejoras en JAX-WS sobre JAX -RPC, o SOAP1.2 sobre SOAP1.1, respuestas a las cuales generalmente se basan en cuánto recuerdo.
  5. Inyección de recursos JEE 5
    Esta pregunta se plantea de muchas maneras, desde el patrón de Localizador de servicios hasta las preguntas de javax.naming.Context .

Otra pregunta difícil que me resulta problemática, pero que he enfrentado muchas veces es, ¿cómo se empacan las bibliotecas dependientes en un archivo?
o Visibilidad de varias clases en un archivo agrupado.
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 continuar.

Las 5 principales preguntas principales de Java:

  1. Preguntas sobre java.util.collections
    Esta es la madre de todas las preguntas. Una vez que puede ubicar efectivamente al entrevistador en esta área, y si está preparado, el resto de la entrevista generalmente se queda aquí. Asegúrese de conocer Set , List , Map y la importancia de Object.equals() y Object.hashCode() en cada implementación de estas interfaces.
  2. Preguntas de refactorización
    Estos son buenos 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á condenado al fracaso. Lo mejor es aceptar la respuesta "Entiendo que otras soluciones son posibles".
  3. Preguntas sobre multi-threading en JDK5, comparando con versiones JDK anteriores , he encontrado que es mejor estar preparado con clases de paquete java.util.concurrent . El libro de Doug Lea tiene la mayoría de las respuestas.
  4. ¿Qué hay de nuevo en JDK1.6 / JDK1.7 ...?
    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 dirigir la discusión en otra dirección, esquiva y resuelve en gran medida y con eficacia el problema.
  5. Patrones en la API de Java
    Una y otra vez me pidieron que señalara un patrón GoF en la API de Java. Mejor prepárate para esto.

  1. Explica los diversos modificadores de acceso utilizados en Java. He tenido muchas personas que luchan con esto, especialmente el acceso predeterminado.
  2. Si pudieras cambiar una cosa sobre el lenguaje o la plataforma Java, ¿cuál sería? Los buenos desarrolladores tendrán una respuesta aquí, mientras que aquellos que no están realmente interesados ​​en el desarrollo probablemente no les importe.
  3. Si su CV dice algo así como que usan EJB2.1, pregunte acerca de EJB3 para ver lo que saben sobre él. Los mejores desarrolladores se mantendrán actualizados con los últimos desarrollos, incluso si no usan las versiones más nuevas.

"¿Qué es un descriptor de implementación?"

Si el candidato se estremece involuntariamente, tiene experiencia trabajando con EJB previos a la 3.0.


¿Cómo afecta la volatile optimización del código por compilador?


¿Cómo funcionan los threads ? ¿Qué está synchronized ? Si hay dos métodos synchronized en una clase, pueden ejecutarse simultáneamente por dos hilos. Te sorprenderá escuchar que muchas personas responden que . Luego, toda la pregunta relacionada con el hilo, por ejemplo, punto muerto , inanición , etc.


¿Cuál es la diferencia entre J2SE y J2EE (o JSE y JEE)?

Un desarrollador debería ser capaz de señalar que la edición empresarial es básicamente una definición de interfaz (es decir, una especificación) que pueden implementar los proveedores. Considerando que la edición estándar es una implementación en sí misma


¿Cuál es la diferencia entre Set, Map y List?

Todavía estoy sorprendido de cuántas personas no conocen este en una entrevista telefónica.


¿Cuál es la diferencia entre String, StringBuffer y StringBuilder?


¿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 sobre mi curso de informática en la universidad y la gran mayoría no pudo responderlo.


¿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?


¿Por qué anularías el método toString ()?


¿Qué es ''System'', ''out'', ''println'' en System.out.println? ¿Qué sucede cuando llamas ''poner'' en HashMap?


¿Qué es lo que más / menos te gusta de Java y por qué?


¿Qué hay de lo que es un bean de sesión y describir algunas diferencias entre los beans de sesión stateless y stateful.


Diferencia entre un servidor web y un contenedor web


Escribe un programa para aceptar dos enteros y saca el mayor de dos números a un archivo en la ubicación que elijas. Ahora describe lo que hace cada afirmación.

Es posible profundizar bastante desde el significado de la declaración de importación, hasta la terminación anormal


Esta es la pregunta que enfrenté en mi entrevista.

¿Por qué el método principal en Java se llama como public static void main (String [] args)?

Responder:

1. main () debe declararse público porque JVM lo invoca siempre que se inicie la ejecución del programa. JVM no pertenece a nuestro paquete de programa.

Para acceder al contenido principal fuera del paquete, debemos declararlo como público. Si lo declaramos como cualquier cosa 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, podemos llamar a ese método fuera de la clase utilizando ClassName.methodName ();

class Sample { static void fun() { System.out.println("Hello"); } } class Test { public static void main(String[] args) { Sample.fun(); } }

La JVM primero cargará la clase de prueba y comprobará los argumentos de la línea de comando 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 devolución, se trata de un RunTimeError, es decir; NoSuchMethodFoundError.

4. main () debe tener Argumentos de cadena como matrices porque JVM llama al método principal pasando el argumento de la línea de comando. Como se almacenan en un objeto de matriz de cadenas, se pasa como un argumento a main ().


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 ti crear tu propia compilación de las cosas que crees que son importantes. Personalmente, procedo siempre en dos pasos: primero unas pocas preguntas para obtener una idea básica de la experiencia y habilidades, luego una situación de resolución de problemas. De hecho, no estoy convencido de que ser capaz de responder cualquier pregunta conocida te haga un buen o malo solucionador de problemas desconocido . Por lo tanto, prefiero pedirle a las personas que resuelvan un problema determinado, darles algunos requisitos y pedirles que escriban el código (pero no en el papel). Les doy un poco de tiempo para que vuelvan y miren cómo lo hicieron, su estilo de codificación, cómo usaron las API sugeridas, etc.

Habiendo dicho todo eso, mi pregunta favorita es "¿qué no te gusta de Java?" (en el espíritu de este ) Es realmente una pregunta excelente, te da una retroalimentación inmediata sobre cuánto ha usado un candidato Java y ha explorado su API y si es solo 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é le gustaría ver modificado en Java?". Y de hecho, prefiero de esta manera.


Núcleo: 1. ¿Qué son las excepciones marcadas y desmarcadas? 2. Al agregar una nueva excepción en el código, ¿qué tipo (marcado / desmarcado) usar cuando?

Servlet: 1. ¿Cuál es la diferencia entre response.sendRedirect () y request.forward ()?


Pregunta engañosa: ¿Qué tipos de parámetros se pasan por referencia en Java?

Es asombroso cuántas personas aún repiten como loros el mantra "los primitivos son pasados ​​por valor, los objetos son pasados ​​por referencia".


Preguntas simples como,

  • ¿Qué es JRE y JDK?
  • ¿Por qué java reclama interoperabilidad?

Aunque estos son muy básicos, muchos desarrolladores no conocen las respuestas. Sugiero que se les pregunte antes de las consultas relacionadas con el código.


Si está contratando graduados con "experiencia" de Java, una pregunta simple como Escribir código que hará que se genere una excepción NullPointerException puede distinguir qué candidatos utilizaron Java recientemente y no se detuvo cuando terminaron su unidad / curso.


Una cosa que muchos programadores de Java no saben es que las cadenas son inmutables, ¡así que use StringBuilder o StringBuffer!

String s = ""; for(int i = 0; i < 100; i++) { s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint"; }


Una pregunta Java más pura:

¿Cuál es la diferencia entre dormir y esperar? No muchas personas realmente entienden cómo funciona la espera.

¿Cómo necesitas manejar InterruptedExceptions?


Una segura es la comparación de la cuerda. Diferencia entre

Cadena helloWorld = "Hola mundo";
helloWorld == "Hola mundo";
"Hello World" .equals (helloWorld);


Usted dijo "Bueno", "Desarrollador". Aquí están mis 2 centavos también ... :)

  • ¿Qué significa una "excepción comprobada"?
  • ¿Cuál es mejor usar y cuándo: Afirmaciones o excepciones para manejar condiciones inesperadas?
  • ¿Por qué la clase String es final? (¿o no es así?;))
  • son los métodos wait, notify y notify all en la clase Object?
  • ¿Por qué la clase Thread no es definitiva? ¿Por qué extendería Thread, alguna vez?
  • Por qué hay dos clases de fecha; uno en el paquete java.util y otro en java.sql?
  • ¿Qué sucede si se lanza una excepción en el bloque finally? ¿El resto finalmente se ejecuta o no?
  • ¿Hay un recolector de basura bien, pero entonces la pérdida de memoria está totalmente ausente en las aplicaciones Java? Si no, ¿cómo?

Para J2EE:

  • ¿Es bueno tener instancias / variables estáticas en un servlet? Por qué no? Entonces, ¿dónde almacena "estado"?
  • continuando con la pregunta anterior: ¿qué y dónde es un "estado" para una aplicación (web)?
  • ¿Qué sucede si comencé a crear / cerrar conexiones de bases de datos en "JSP"?
  • ¿Cuáles son las formas de manejar las excepciones JSP? ¿trata de atraparlo? Hmmm ... ¿hay algo más?

Puedo pensar que muchos, muchos, muchos más de ellos, pero esto va a hacer por ahora :)


¿Qué se imprimirá?

public void testFinally(){ System.out.println(setOne().toString()); } protected StringBuilder setOne(){ StringBuilder builder=new StringBuilder(); try{ builder.append("Cool"); return builder.append("Return"); }finally{ builder.append("+1"); } }

Respuesta : CoolReturn + 1

Un poco mas dificil

public void testFinally(){ System.out.println(setOne().toString()); } protected StringBuilder setOne(){ StringBuilder builder=new StringBuilder(); try{ builder.append("Cool"); return builder.append("Return"); }finally{ builder=null; /* ;) */ } }

Respuesta : CoolReturn


Uso de la palabra clave final en las llamadas a métodos. Por ejemplo, ¿por qué la prueba de 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 de método?

class Name { private String name; public Name (String s) { this.name = s; } public void setName(String s) { this.name = s; } } private void test (final Name n) { n.setName("test"); }


  • ¿Cuál es el contrato general cuando se anula el igual?
  • ¿Es mejor la opción preferir listas o matrices?
  • ¿Cuáles son las convenciones de nomenclatura generalmente aceptadas?
  • ¿Cómo funciona la serialización?
  • ¿Cómo implementar Comparable?
  • ¿Cuáles son las ventajas de utilizar las declaraciones preparadas de JDBC?
  • ¿Qué es Java EE?
  • ¿Qué es un contenedor y qué servicios ofrece?