Preguntas de Entrevista - Java

01. ¿Cuál es la diferencia entre una interfaz y una clase abstracta?

02. ¿Cuál es el propósito del garbage collection en Java, y cuándo se utiliza?

03. Describe la sincronización con respecto a multithreading.

04. Explica una manera diferente de utilizar un hilo.

05. ¿Qué es el paso por referencia y valor passby?

06. ¿Qué es un HashMap y mapa?

07. Diferencia entre HashMap y Hashtable

08. Diferencia entre Array y ArrayList

09. Diferencia entre Swing y AWT

10. ¿Cuál es la diferencia entre un constructor y un método?

11. ¿Qué es un iterador?

12. Especifica la importancia de los modificadores públicos, privados y protegidos, modificadores predeterminados, por separado y en combinación, y el efecto del estado de las relaciones de paquetes sobre los elementos declarados calificados por esos modificadores.

13. ¿Qué es una clase abstracta?

14. ¿Qué es static en Java?

15. ¿Para que sirve final?

16. ¿Se puede reemplazar un método privado o estático en Java?

17. ¿Java soporta la herencia múltiple?

18. ¿Qué ocurrirá si ponemos un objeto clave en un HashMap que ya existe?

19. ¿Si un método lanza NullPointerException en la superclase, podemos reemplazarlo con un método que arroje RuntimeException?

20. ¿Cuál es la diferencia entre CyclicBarrier y CountDownLatch en Java?

21. ¿Cuál es la diferencia entre StringBuffer y StringBuilder en Java?

22. ¿Se puede acceder a las variables no estáticas en un contexto estático?

23. ¿Cómo se hereda una clase java?
Se hereda con la palabra reservada extends. La primera clase que extiende una clase abstracta tiene o bien que implementar todos los métodos abstractos o ser declarada abstracta.

24. ¿Cómo se implementa una interface?
Se implementa una interface con la palabra reservada implements.

25. ¿Un atributo (miembro) privado de una clase puede ser heredado?
No

26. ¿Puede ser una clase abstracta a su vez estática?
No

27. ¿Puede ser un constructor estático?
No, como tampoco pueden ser finales ni abstractos

28. ¿Puede un método recibir un conjunto indefinido de parametros?
Si, usando el conocido var-args. Hay que definir el tipo de datos que se va a recibir. Un ejemplo es  pintar(int... x).

29. ¿Es lo mismo marcar como protected un atributo o dejarlo por defecto (sin ningun modificador)?
No.Un atributo por defecto solo puede ser accedido por un objeto de su mismo package. Pero un componente protected puede ser accedido desde una clases heredada aunque no se encuentre en el mismo package.

30. ¿Cuantos modificadores de acceso a clase existen?
Existen 3 : public, protected y private.

31. ¿Qué diferencias hay entre  java.util.Date y java.sql.Date?
La diferencia principal es que java.util.Date representa "fecha y hora" almacenado hasta los milisegundos. Sin embargo, java.sql.Date sólo almacena el valor de datos que se requiere para el tipo DATE SQL.

32. ¿Cuál es la diferencia entre String, StringBuffer and String Builder?
* String es inmutable (es siempre la misma instancia)
* StringBuffer está sincronizado mientras
* StringBuilder no lo está.

33. ¿Cuál es la diferencia entre equals, CompareTo y  ‘==’?
* equals() compara que los valores de dos objetos son iguales.  Es decir, si creamos dos números iguales, equals() nos devolvera true.
* ''==" nos compara si los dos objetos que comparamos son la misma instancia.
* CompareTo() es como el equals() pero nos devuelve un valor, en función de un objeto que lo compara llamado Comparator().

34. ¿Generics se analizan en compilación o en ejecución?
En compilación.

35. ¿Cual es la diferencia entre Serializable and Externalizable?
Cuando una clase implementa la interfaz serializable, la JVM serializa y deserializa. Con al interface Extenalizable, es necesa implementar readExternal()  y writeExternal(). Esto es devido a que en las primeras implementaciones de la JVM, la serialización era muy lenta.

36. ¿Cuál es la diferencia entre clase abstracta e interfaz?
* La interfaz es una clase abstracta pura, significa que todos los métodos de la interfaz son abstractos, mientras que en la clase abstracta podemos tener métodos no abstractos. Al ser métodos abstractos, no pueden ser declarados finales.
* Todos los métodos de una interfaz son públicos y abstractos por defecto (de hecho no es una buena practica el escribir public o abstract), mientras que la clase abstracta puede tener métodos con otro modificador.
* Todas las variables miembro en la interfaz son finales, mientras que la clase abstracta puede tener  variables no finales.
* Una interfaz se debe implementar el uso de implementos, mientras que una clase abstracta debe heredarse mediante extends. Una clase Java puede implementar varias interfaces, pero sólo puede extender una clase abstracta.
* La razón de ser de una clase abstracta es ser extendida, pero puede tener métodos que no sean abstractos (implementaciones concretas).
* Todas las variables definidas en una interfaz son publicas, estaticas y finales. Es decir, en un interfaz solo se declaran constantes.
* Un interfaz no puede extender (heredar) otro objeto que no sea un interface y no puede implementar otro interfaz o clase.

37. ¿Puedo tener una clase abstracta sin ningún método abstracto ?
Si, se puede tener una clase abstracta sin métodos abstractos.

38. ¿Cuál es la diferencia entre excepción y error?
Conceptualmente,un usuario puede recuperarse de una excepción en tiempo de ejecución, pero no de un error.

39. ¿Cuál es la diferencia entre ClassNotFoundException y NoClassDefFoundError?
ClassNotFoundException se produce cuando la clase se carga mediante uno de los métodos siguientes:

* Clase creada mendiante class.forName() .
*  El método findSystemClass en la clase ClassLoader .
*  En el método loadClass de la clase ClassLoader .

Considerando que, NoClassDefFoundError se encuentra, cuando la JVM está tratando de cargar la clase como parte de una llamada a un método normal o como parte de la creación de una nueva instancia .

40. ¿Cómo puedo no serializar un miembro de un objeto que que quiero serializar?
Definiendo el atributo como transient. Tampoco serializa los marcados como volatile o transient

41. ¿Cuándo se inicializan las variables estáticas?
Cuando se carga la clase. Las variables estáticas no se eliminan de la memoria cuando pasa el recolector de basura (GC)

42. ¿System.gc and Runtime.gc() se ejecutan automáticamente?
No. De hecho se suele aconsejar no utilizarlo más que en casos muy puntuales.

43. ¿Cual es la diferencia entre checked y unchecked exceptions?
Las checked exceptions tienen que ser obligatoriamente y tienen que: o bien ser capturadas por el programa usando la clausa try-catch ó relanzadas usando throws .

44. ¿Puede escribirse un try sin un cacth?
Sí, siempre cuando haya entonces un bloque finally

45. ¿Puede ser un constructor estático?
No, nunca.

46. ¿Los constructores se heredan?
No.

47. ¿Qué es un variable volatile?
Es una variable que no se puede sincronizar, es decir, que puede ser accedida siempre por otros hilos de ejecución.

48. ¿Como puede evitar que varios valores accedan a un método, clase..?
Mediante el uso de la palabra clave synchronized.

49. ¿Qué es JNI?
JNI(Java Native Interface) nos sive para llamar a funciones escritas en un lenguaje diferente a java.

50. ¿Qué significa ACID?
* Atomicidad: es la propiedad que asegura que,ante varias operaciones, se ejecutan todas ó ninguna, pero que no se queda a medias
* Consistencia: Integridad. Nos asegura que sólo se ejecutan aquellas operaciones que no van a romper la integridad de la base de datos..
* Aislamiento: Cada operación de la base de datos es única que asegura que una operación no puede afectar a otras..
* Durabilidad: es la propiedad que asegura que una vez realizada la operación, ésta persistirá se podrá acceder posteriormente.

fuente: http://es.wikipedia.org/wiki/ACID

51. ¿Cuales son los principios SOLID ?
S – Single responsibility principle (SRP): La idea de que los objetos se debe hacer una cosa y sólo una cosa. Es decir agrupar toda la funcionalidad que está realiza una función en el mismo objeto.

O – Open/closed principle (OCP): Esta idea es que las clases pueden ser extendidas, pero no modificadarse. Es decir, la clase se gestiona así misma

L – Liskov substitution principle (LSP): LSP establece que la subclase de un objeto puede ser utilizado en lugar de la superclase sin cambiar cosas como lo que hace el programa, si compila…

I – Interface segregation principle (ISP): ISP dicta que las interfaces deben tener como poca funcionalidad en ellos como sea posible.

D – Dependency inversion principle (DIP): el principio de inversión de dependencia Nos permite abstraernos de los detalles de implementación de bajo nivel, reduciendo el acoplamiento.

52. ¿Qué tipos de diagramas UML existen?
1. Diagrama de casos de uso
2. Diagrama de clases
3. Diagrama de estados
4. Diagrama de secuencias
5. Diagrama de actividades
6. Diagrama de colaboraciones
7. Diagrama de componentes
8. Diagrama de distribución


Referencias.

01 - 22. http://www.codejobs.biz/es/blog/2013/01/20/preguntas-de-una-entrevista-de-trabajo-para-java, 05-09-2013, 01:30.
23 - 52. http://www.aninki.net/joomla/index.php/26-Entrevistas%20de%20trabajo/90-90-entrevistas-trabajo-java, 05-09-2013, 02:47.

Comentarios

Entradas populares de este blog

Tabla de Códigos de los caracteres ANSI.

Como conectar Java a MySQL con Eclipse.

Como conectar Java a PostgreSQL con Eclipse.