Cuestionario

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 59

Preguntas entrevista Java

Programación orientada a objetos


● Java es un lenguaje de programación de computadora que es concurrente, basado
en clases y orientado a objetos. Las ventajas del desarrollo de software orientado a
objetos se muestran a continuación:
● Desarrollo modular del código, lo que permite un mantenimiento y una modificación
fáciles.
● Reutilización de código.

● Mejora de la fiabilidad y flexibilidad del código.

● Mayor comprensión del código.

● La programación orientada a objetos contiene muchas características importantes,


como encapsulación, herencia, polimorfismo y abstracción. Analizamos cada
característica por separado en las siguientes secciones. 2
Polimorfismo
● El polimorfismo es la capacidad de los
lenguajes de programación para presentar la
misma interfaz para diferentes tipos de datos
subyacentes. Un tipo polimórfico es un tipo
cuyas operaciones también se pueden aplicar a
valores de otro tipo.

3
Herencia
● La herencia proporciona a un objeto la
capacidad de adquirir los campos y métodos de
otra clase, llamada clase base. La herencia
proporciona la posibilidad de volver a usar el
código y se puede usar para agregar
características adicionales a una clase
existente, sin modificarla.
4
Abstracción
● La abstracción es el proceso de separar ideas de instancias
específicas y así desarrollar clases en términos de su propia
funcionalidad, en lugar de sus detalles de implementación.
Java admite la creación y existencia de clases abstractas que
exponen interfaces, sin incluir la implementación real de todos
los métodos. La técnica de abstracción tiene como objetivo
separar los detalles de implementación de una clase de su
comportamiento.

5
Diferencias entre Abstraccion y
Encapsulacion
● La abstracción y la encapsulación son conceptos
complementarios. Por un lado, la abstracción se centra en el
comportamiento de un objeto. Por otro lado, la encapsulación
se enfoca en la implementación del comportamiento de un
objeto. La encapsulación generalmente se logra al ocultar
información sobre el estado interno de un objeto y, por lo tanto,
puede verse como una estrategia utilizada para proporcionar
abstracción
6
Preguntas generales sobre Java
¿Qué es JVM? ¿Por qué Java se llama el "Lenguaje de
Programación Independiente de Plataforma"?

● Una máquina virtual Java (JVM) es una máquina virtual de


proceso que puede ejecutar bytecode de Java. Cada archivo
fuente de Java se compila en un archivo de bytecodes, que es
ejecutado por la JVM. Java fue diseñado para permitir que se
construyan programas de aplicación que se podrían ejecutar en
cualquier plataforma, sin tener que ser reescritos o
recompilados por el programador para cada plataforma por
separado. Una máquina virtual Java lo hace posible, ya que
conoce las longitudes de instrucción específicas y otras
particularidades de la plataforma de hardware subyacente.
8
¿Cuál es la diferencia entre JDK y JRE?

● Máquina (JVM) donde se ejecutan sus programas Java.


También incluye complementos de navegador para la ejecución
de applets. El Java Development Kit (JDK) es el Kit de
desarrollo de software completo para Java, que incluye el JRE,
los compiladores y las herramientas (como JavaDoc y Java
Debugger), para que el usuario pueda desarrollar, compilar y
ejecutar aplicaciones Java.

9
¿Qué significa la palabra clave "static"? ¿Puedes
sobreescribir el método private o static en Java?

● clave static denota que se puede acceder a una variable o


método miembro, sin necesidad de una instanciación de la
clase a la que pertenece. Un usuario no puede anular los
métodos estáticos en Java , ya que la sobreescritura de
método se basa en el enlace dinámico en tiempo de ejecución
y los métodos estáticos están enlazados estáticamente en
tiempo de compilación. Un método estático no está asociado
con ninguna instancia de una clase, por lo que el concepto no
es aplicable.

10
¿Se puede acceder a variables no estáticas en
contexto estático?
● Una variable estática en Java pertenece a su clase y su valor
permanece igual para todas sus instancias. Una variable
estática se inicializa cuando la clase es cargada por la JVM. Si
su código intenta acceder a una variable no estática, sin
ninguna instancia, el compilador se quejará, porque esas
variables aún no se han creado y no están asociadas a ninguna
instancia

11
¿Cuáles son los tipos de datos compatibles con Java? ¿Qué es Autoboxing and Unboxing?
● datos primitivos compatibles con el lenguaje de programación Java son:

● byte

● short

● int

● long

● float

● double

● boolean

● char

● Autoboxing es la conversión automática hecha por el compilador Java entre los tipos primitivos y sus
correspondientes object wrapper classes. Por ejemplo, el compilador convierte un int a an Integer, un double
a a Double, y así sucesivamente. Si la conversión se realiza de otra manera, se llama a esta operación
unboxing.
12
¿Qué es la sobreescritura y
sobrecarga de metodos en Java?
● La sobrecarga de métodos en Java ocurre cuando dos o más
métodos en la misma clase tienen exactamente el mismo
nombre, pero diferentes parámetros. Por otro lado, la
sobreescritura de métodos se define como el caso cuando una
clase secundaria redefine el mismo método que una clase
principal. Los métodos reemplazados deben tener el mismo
nombre, lista de argumentos y tipo de devolución. El método
principal puede no limitar el acceso del método que anula.

13
¿Qué es un Constructor, Constructor
Overloading en Java y Copy-Constructor?
● Un constructor se invoca cuando se crea un nuevo objeto. Cada clase tiene un
constructor . En caso de que el programador no proporcione un constructor para una
clase, el compilador de Java (Javac) crea un constructor predeterminado para esa
clase. La sobrecarga del constructor es similar a la sobrecarga de métodos en Java.
Se pueden crear diferentes constructores para una sola clase. Cada constructor
debe tener su propia lista de parámetros únicos. Finalmente, Java admite
constructores de copia como C ++, pero la diferencia radica en el hecho de que Java
no crea un constructor de copia predeterminado si no escribe el suyo propio.

14
¿Admite Java una herencia múltiple?
● No, Java no admite herencia múltiple. Cada clase puede extenderse solo en una
clase, pero puede implementar más de una interfaz.

● https://www.javacodegeeks.com/2014/04/abstract-class-versus-interface-in-the-jdk-8-
era.html

15
¿Cuál es la diferencia entre una
interfaz y una clase abstracta?
● interfaces y clases abstractas. Ambas implementaciones comparten algunas
características comunes, pero difieren en las siguientes características:
● Todos los métodos en una interfaz son implícitamente abstractos. Por otro lado, una
clase abstracta puede contener métodos abstractos y no abstractos.
● Una clase puede implementar un número de Interfaces, pero puede extender solo
una clase abstracta.
● Para que una clase implemente una interfaz, debe implementar todos sus métodos
declarados. Sin embargo, una clase puede no implementar todos los métodos
declarados de una clase abstracta. Aunque, en este caso, la subclase también debe
declararse como abstracta.

16
● Las clases abstractas pueden implementar interfaces sin siquiera proporcionar la
implementación de métodos de interfaz.
● Las variables declaradas en una interfaz Java son predeterminadas por defecto. Una
clase abstracta puede contener variables no finales.
● Los miembros de una interfaz Java son públicos por defecto. Un miembro de una
clase abstracta puede ser privado, protegido o público.
● Una interfaz es absolutamente abstracta y no puede ser instanciada. Una clase
abstracta tampoco puede crearse una instancia, pero puede invocarse si contiene un
método principal.

17
¿Qué es paso por referencia y paso
por valor?
● Cuando un objeto se pasa por valor, esto significa que se pasa
una copia del objeto. Por lo tanto, incluso si se realizan
cambios en ese objeto, no afecta el valor original. Cuando un
objeto se pasa por referencia, esto significa que el objeto real
no se pasa, sino que se pasa una referencia del objeto. Por lo
tanto, cualquier cambio realizado por el método externo,
también se refleja en todos los lugares.

18
Hilos en Java(Java Threads)
¿Cuál es la diferencia entre procesos e hilos?

● Un proceso es una ejecución de un programa,


mientras que a Thread es una secuencia de
ejecución única dentro de un proceso. Un
proceso puede contener múltiples hilos. Un
Thread a veces se le llama un proceso liviano.

20
Explicar diferentes formas de crear un hilo.
¿Cuál preferirías y por qué?
● Hay tres formas que se pueden utilizar para crear Threads:
○ Una clase puede extender la clase Thread.

○ Una clase puede implementar la interfaz Runnable.

○ Una aplicación puede usar el framework Executor, para crear un grupo de


subprocesos.
● La interfaz Runnable es preferida, ya que no requiere un objeto para heredar la clase
Thread. En caso de que el diseño de su aplicación requiera herencia múltiple, solo
las interfaces pueden ayudarlo. Además, el grupo de subprocesos es muy eficiente y
puede implementarse y usarse con mucha facilidad.

21
Explica los estados de hilos disponibles en un nivel
alto
● Durante su ejecución, un hilo puede residir en uno de los siguientes states:
● NEW: El hilo está listo para ejecutarse, pero no necesariamente comienza a ejecutarse
inmediatamente.
● RUNNABLE: La máquina virtual Java (JVM) está ejecutando activamente el código del
subproceso.
● BLOCKED: El subproceso está bloqueado mientras espera un bloqueo de monitor.

● WAITING: El subproceso espera que otro subproceso realice una acción particular.

● TIMED_WAITING: El subproceso espera que otro subproceso realice una acción


particular hasta un tiempo de espera especificado.
● TERMINATED: El hilo ha terminado su ejecución.
22
¿Cuál es la diferencia entre un método
synchronized y un bloque synchronized?
● En la programación de Java, cada objeto tiene
un bloqueo. Un hilo puede adquirir el bloqueo
de un objeto utilizando la palabra clave
synchronized. La palabra clave synchronized
se puede aplicar en un nivel de método
(bloqueo de grano grueso) o en un nivel de
código bloqueado (bloqueo de grano fino).
23
¿Cómo ocurre la sincronización de hilo dentro de un
monitor? ¿Qué niveles de sincronización puedes aplicar?
● La JVM usa bloqueos junto con monitores. Un
monitor es básicamente un guardián que vigila una
secuencia de código sincronizado y se asegura de
que solo un hilo a la vez ejecute un fragmento de
código sincronizado. Cada monitor está asociado
con una referencia de objeto. El hilo no puede
ejecutar el código hasta que obtenga el bloqueo.

24
¿Qué es un punto muerto(deadlock)?
● Una condición que ocurre cuando dos procesos
están esperando el uno al otro para completar,
antes de continuar. El resultado es que ambos
procesos esperan infinitamente.

● https://www.javacodegeeks.com/2013/01/java-deadlock-example-how-to-analyze-de
adlock-situation.html

25
¿Cómo se asegura de que N threads puedan acceder a
N recursos sin interbloqueo(deadlock)?
● Una forma muy simple de evitar el dealock al
utilizar N threads es imponer un orden en los
bloqueos y forzar a cada subproceso a seguir
ese orden. Por lo tanto, si todos los
subprocesos bloquean y desbloquean los
mutex en el mismo orden, no pueden surgir
interbloqueos
26
Java Collections
¿Cuáles son las interfaces básicas de Java
Collections Framework?
● Java Collections Framework proporciona un conjunto bien diseñado de interfaces y
clases que admiten operaciones en colecciones de objetos. Las interfaces más básicas
que residen en el marco de colecciones de Java son:
○ Collection, que representa un grupo de objetos conocidos como sus elementos.
○ Set, que es una colección que no puede contener elementos duplicados.

○ List, que es una colección ordenada y puede contener elementos duplicados.

○ Map, que es un objeto que asigna claves a valores y no puede contener claves
duplicadas.

28
¿Por qué Collection no extiende las interfaces
Cloneable y Serializable?
● La interfaz Collection especifica grupos de objetos conocidos
como elementos. Cada implementación concreta de Collection
puede elegir su propia forma de cómo mantener y ordenar sus
elementos. Algunas colecciones permiten claves duplicadas,
mientras que otras colecciones no lo hacen. La semántica y las
implicaciones de la clonación o la serialización entran en juego
cuando se trata de implementaciones reales. Por lo tanto, las
implementaciones concretas de las colecciones deben decidir
cómo se pueden clonar o serializar.

29
¿Qué es un iterador?
● La interfaz Iterator proporciona una cantidad de
métodos que pueden iterar sobre cualquier
Collection. Cada Java Collection contiene el
método iterator que devuelve una instancia
Iterator. Los iteradores son capaces de
eliminar elementos de la colección subyacente
durante la iteración.
30
¿Qué diferencias existen entre Iterator y
ListIterator?
● Las diferencias de estos elementos se enumeran a continuación:

● Se puede usar un iterator para recorrer las colecciones Set y List, mientras que
ListIterator se puede usar para iterar solo sobre las Lists.
● El Iterator puede recorrer una colección solo en la dirección de avance, mientras
que ListIterator puede atravesar a List en ambas direcciones.
● El ListIterator implementa la interfaz Iterator y contiene funcionalidad adicional, tal
como la adición de un elemento, en sustitución de un elemento, conseguir la
posición de índice para los elementos anteriores y siguientes, etc.

31
¿Cuál es la diferencia entre fail-fast
y fail-safe?
● La propiedad fail-safe de los iterator funciona con el clon de
la colección subyacente y, por lo tanto, no se ve afectada por
ninguna modificación en la colección.
● Todas las clases de colección en el paquete java.util son
fail-fast, mientras que las clases de colección en
java.util.concurrent son fail-safe. Los fail-fast iterator lanzan
una Excepcion ConcurrentModificationException, mientras
que el iterator fail-safe nunca arroja una excepción

32
¿Cómo funciona HashMap en Java?
● Un HashMap en Java almacena pares clave-valor . El HashMap requiere una
función hash y utiliza los metodos hashCode y equals, con el fin de poner y
recuperar elementos desde y hacia la colección respectivamente. Cuando se invoca
el método put, HashMap calcula el valor hash de la clave y almacena el par en el
índice apropiado dentro de la colección. Si la clave existe, su valor se actualiza con
el nuevo valor. Algunas características importantes de a HashMap son su capacidad,
su factor de carga y el redimensionamiento del umbral.

● https://www.javacodegeeks.com/2014/03/how-hashmap-works-in-java.html

33
¿Cuál es la importancia de los métodos
hashCode() y equals()?
● En Java, un HashMap utiliza los métodos hashCode() y equals() para determinar el
índice del par clave-valor y para detectar duplicados. Más específicamente, el
metodo hashCode() se usa para determinar dónde se almacenará la clave
especificada. Dado que las diferentes claves pueden producir el mismo valor hash,
el metodo equals() para determinar si la clave especificada realmente existe en la
colección o no. Por lo tanto, la implementación de ambos métodos es crucial para la
precisión y eficiencia del HashMap.

34
¿Qué diferencias existen entre HashMap y
Hashtable?
● Tanto la clase HashMap como la clase Hashtable implementan la interfaz Map y, por lo tanto, tienen
características muy similares. Sin embargo, difieren en las siguientes características:

● Un HashMap permite la existencia de claves y valores nulos, mientras que Hashtable no permite ni claves
nulas, ni valores nulos.

● Un Hashtable está sincronizado, mientras que a HashMap no. Por lo tanto, HashMap se prefiere en entornos
de un solo subproceso(single-threaded), mientras que a Hashtable es adecuado para entornos de múltiples
subprocesos(multi-threaded).

● Un HashMap proporciona su conjunto de claves y una aplicación Java puede iterar sobre ellas. Por lo tanto,
a HashMap es fail-fast. Por otro lado, a Hashtable proporciona una Enumeration de sus claves.

● La clase Hashtable se considera una clase legacy.

35
¿Cuál es la diferencia entre Array y ArrayList? ¿Cuándo
usarás Array sobre ArrayList?
● Las clases Array y ArrayList difieren en las siguientes características:

● Arrays puede contener primitivos u objetos, mientras que una ArrayListpuede


contener solo objetos.
● Arrays tiene tamaño fijo, mientras que an ArrayListes dinámico.
● Un ArrayList proporciona más métodos y características, tales como addAll,
removeAll, iterator, etc.
● Para obtener una lista de tipos de datos primitivos, las colecciones usan el
autoboxing para reducir el esfuerzo de codificación. Sin embargo, este enfoque los
hace más lentos cuando se trabaja en tipos de datos primitivos de tamaño fijo.
36
¿Cuál es la diferencia entre ArrayList y
LinkedList?
● Tanto la clase ArrayList como la clase LinkedList implementan la interfaz List, pero difieren en las
siguientes características:

● Un ArrayList es una estructura de datos basada en índice respaldada por un Array. Proporciona acceso
aleatorio a sus elementos con un rendimiento igual a O(1). Por otro lado, un LinkedList almacena sus datos
como una lista de elementos y cada elemento está vinculado a su elemento anterior y siguiente. En este
caso, la operación de búsqueda de un elemento tiene un tiempo de ejecución igual a O(n).

● Las operaciones de inserción, adición y eliminación de un elemento son más rápidas en LinkedList
comparación con un ArrayList, porque no hay necesidad de cambiar el tamaño de una matriz o actualizar el
índice cuando se agrega un elemento en una posición arbitraria dentro de la colección.

● Un LinkedList consume más memoria que an ArrayList, porque cada nodo en un LinkedList almacena dos
referencias, una para su elemento anterior y otra para su próximo elemento.

● https://www.javacodegeeks.com/2013/12/arraylist-vs-linkedlist.html 37
¿Qué es la interfaz Comparable y
Comparator? Enumera sus diferencias.
● Java proporciona la interfaz Comparable, que contiene solo un método, llamado
compareTo(). Este método compara dos objetos para imponer un orden entre ellos.
Específicamente, devuelve un entero negativo, cero o un entero positivo para indicar
que el objeto de entrada es menor, igual o mayor que el objeto existente. Java
proporciona la interfaz Comparator, que contiene dos métodos, llamado compare()
y equals(). El primer método compara sus dos argumentos de entrada e impone un
orden entre ellos. Devuelve un entero negativo, cero o un entero positivo para indicar
que el primer argumento es menor, igual o mayor que el segundo. El segundo
método requiere un objeto como parámetro y tiene como objetivo decidir si el objeto
de entrada es igual al comparador. El método devuelve verdadero, solo si el objeto
especificado también es un comparador e impone el mismo orden que el
comparador.

38
¿Qué es Java Priority Queue?
● El PriorityQueuees una cola ilimitada, basada en el priority heap y sus elementos
están ordenados en su orden natural. En el momento de su creación, podemos
proporcionar un Comparator que es responsable de ordenar los elementos del
PriorityQueue. una PriorityQueue no permite valores nulos , esos objetos que no
proporcionan un orden natural o aquellos objetos que no tienen ningún Comparator
asociado. Finalmente, Java PriorityQueue no es thread-safe y requiere tiempo
O(log(n)) para sus operaciones de enqueing y dequeing.

39
¿Qué sabe acerca de la notación de la Big-O y puede
dar algunos ejemplos con respecto a las diferentes
estructuras de datos
● La notación Big-O simplemente describe qué tan bien un algoritmo escala o se
desempeña en el peor de los casos a medida que aumenta el número de elementos
en una estructura de datos. La notación Big-O también se puede usar para describir
otros comportamientos, como el consumo de memoria. Dado que las clases de
recopilación son en realidad estructuras de datos, generalmente usamos la notación
Big-O para elegir la mejor implementación para usar, en función del tiempo, la
memoria y el rendimiento. La notación Big-O puede dar una buena indicación sobre
el rendimiento para grandes cantidades de datos.

● https://www.javacodegeeks.com/2011/04/simple-big-o-notation-post.html

40
¿Cuál es la compensación entre usar una matriz
desordenada versus una matriz ordenada?
● La principal ventaja de una matriz ordenada es que los tiempos
de búsqueda tienen una complejidad temporal de O(log n), en
comparación con la de una matriz desordenada, que es O(n).
La desventaja de una matriz ordenada es que la operación de
inserción tiene una complejidad temporal de O(n), porque los
elementos con valores más altos deben moverse para dejar
espacio para el nuevo elemento. En cambio, la operación de
inserción para una matriz desordenada toma un tiempo
constante de O(1).

41
¿Cuáles son algunas de las mejores prácticas
relacionadas con el marco de Java Collection?
● Elegir el tipo correcto de la colección para usar, en función de las necesidades de la aplicación, es crucial
para su rendimiento. Por ejemplo, si el tamaño de los elementos es fijo y se conoce a priori, utilizaremos un
Array, en lugar de un ArrayList.

● Algunas clases de colección nos permiten especificar su capacidad inicial. Por lo tanto, si tenemos una
estimación sobre la cantidad de elementos que se almacenarán, podemos usarla para evitar el reajuste o
cambio de tamaño.

● Siempre use Generics para seguridad de tipo, legibilidad y robustez. Además, al usar Generics evitas el
ClassCastExceptiondurante el tiempo de ejecución.

● Utilice clases inmutables proporcionadas por el Java Development Kit (JDK) como clave en un Map, para
evitar la implementación de los metodos equals() y hashCode() para una clase personalizada.

● Programa en términos de interfaz, no implementación.

● Devuelve colecciones o matrices de longitud cero en lugar de devolver un valor nulo en caso de que la
colección subyacente esté realmente vacía.
42
¿Cuál es la diferencia entre las interfaces
Enumeration e Iterator?
● Enumeration es dos veces más rápido que un iterator y usa
muy poca memoria. Sin embargo, iterator es mucho más
seguro en comparación con Enumeration, porque otros
subprocesos no pueden modificar el objeto de colección que
está atravesando actualmente iterator. Además, Iterator nos
permite que la persona que llama elimine elementos de la
colección subyacente, algo con lo que no es posible
Enumerations.

43
¿Cuál es la diferencia entre HashSet y TreeSet?
● El HashSet se implementa utilizando una tabla hash y, por lo
tanto, sus elementos no están ordenados. Los métodos add,
remove y contains de un HashSet tienen una complejidad de
tiempo constante O(1). Por otro lado, a TreeSet se implementa
usando una estructura de árbol. Los elementos en a TreeSet
están ordenados, y por lo tanto, los métodos add, remove y
contains tienen una complejidad temporal de O(log n).

44
Garbage Collectors
¿Cuál es el propósito de la recolección de basura
en Java y cuándo se usa?
● El propósito de la recolección de basura es
identificar y descartar aquellos objetos que la
aplicación ya no necesita, para que los
recursos se recuperen y reutilicen.

● 46
¿Qué hacen los métodos System.gc () y Runtime.gc ()?

● Estos métodos se pueden usar como una


sugerencia para la JVM, para iniciar una
recolección de basura. Sin embargo, esto
depende de la Máquina Virtual Java (JVM) para
iniciar la recolección de basura inmediatamente
o más tarde en el tiempo.

47
¿Cuándo se llama al finalize ()? ¿Cuál es el
propósito de la finalización?
● El recolector de basura llama al método
finalize(), justo antes de liberar la memoria del
objeto. Por lo general, se recomienda liberar
recursos guardados por el objeto dentro del
método finalize().

48
Si una referencia de objeto se establece en nulo,
¿Garbage Collector liberará inmediatamente la memoria
que tiene ese objeto?
● No, el objeto estará disponible para la
recolección de basura en el siguiente ciclo del
recolector de basura.

49
¿Cuál es la estructura de Java Heap?
¿Qué es el espacio Perm Gen en Heap?
● La JVM tiene un HEAP que es el área de datos de tiempo de ejecución a partir de la
cual se asigna la memoria para todas las instancias de clase y matrices. Se crea en
la puesta en marcha de JVM. La memoria de pila para objetos es reclamada por un
sistema de gestión de memoria automático que se conoce como recolector de
basura. La memoria del HEAP consiste en objetos vivos y muertos. La aplicación
puede acceder a los objetos en vivo y no serán objeto de recolección de basura. Los
objetos muertos son aquellos a los que la aplicación nunca accederá, pero que aún
no han sido recolectados por el recolector de basura. Dichos objetos ocupan el
espacio de la memoria del HEAP hasta que finalmente son recogidos por el
recolector de basura.
● https://www.javacodegeeks.com/2014/04/java-interview-questions-and-answers.html

50
¿Cuál es la diferencia entre el recolector de basura en
serie y en el rendimiento?
● El recolector de basura de rendimiento utiliza una versión
paralela del colector de generación joven y está destinado a ser
utilizado con aplicaciones que tienen conjuntos de datos
medianos a grandes. Por otro lado, el colector serial
generalmente es adecuado para la mayoría de las aplicaciones
pequeñas (aquellas que requieren montones de hasta
aproximadamente 100MB en procesadores modernos).

51
¿Cuándo un objeto se vuelve elegible para la
recolección de basura en Java?
● Un objeto Java está sujeto a la recolección de
basura cuando no se puede acceder al
programa en el que se utiliza actualmente.

52
¿Se produce la recolección de basura en el
espacio de generación permanente en JVM?
● La recolección de basura ocurre en el espacio de PermGen y si el espacio de
PermGen está lleno o cruza un umbral, puede desencadenar una recolección de
basura completa. Si observa detenidamente el resultado del recolector de basura,
verá que el espacio PermGen también es basura. Esta es la razón por la cual el
tamaño correcto del espacio PermGen es importante para evitar la recolección
frecuente de basura completa.

● https://www.javacodegeeks.com/2013/02/java-8-from-permgen-to-metaspace.html

53
Exception Handling
¿Cuáles son los dos tipos de excepciones en Java?
¿Cuáles son las diferencias entre ellos?
● Java tiene dos tipos de excepciones: excepciones controladas
y excepciones no controladas. Las excepciones no controladas
no necesitan ser declaradas en un método o cláusula throws de
un constructor, si pueden ser lanzadas por la ejecución del
método o el constructor, y propagarse fuera del método o del
límite del constructor. Por otro lado, las excepciones
controladas deben declararse en un método o cláusula throws
de un constructor.
● http://www.javacodegeeks.com/2013/07/java-exception-handling-tutorial-with-exampl
es-and-best-practices.html
55
¿Cuál es la diferencia entre Exception y Error en
java?
● Exception y la clase Error son ambas subclases
de la clase Throwable. La clase Exception se
usa para condiciones excepcionales que el
programa de un usuario debería atrapar. La
clase Error define excepciones que no están
exceptuadas para ser capturadas por el
programa de usuario.
56
¿Cuál es la diferencia entre throw y throws?

● La palabra clave throw se usa para generar explícitamente una


excepción dentro del programa. Por el contrario, la cláusula
throws se usa para indicar aquellas excepciones que no son
manejadas por un método.
● Cada método debe especificar explícitamente qué excepciones
no se manejan, por lo que las personas que llaman de ese
método pueden protegerse contra posibles excepciones.
Finalmente, las múltiples excepciones están separadas por una
coma.

57
¿Cuál es la importancia de finally en el manejo de
excepciones?
● Un bloque finally siempre se ejecutará, independientemente de que se haya lanzado o no una excepción. Incluso en el caso en que
falta la declaración catch y se lanza una excepción, el bloque finally se ejecutará. Lo último que hay que mencionar es que el bloque
finally se usa para liberar recursos como búferes de E / S, conexiones de bases de datos, etc.

58
¿Qué pasará con el objeto Exception después del manejo de excepciones?

● La palabra clave throw se usa para generar explícitamente una


excepción dentro del programa. Por el contrario, la cláusula
throws se usa para indicar aquellas excepciones que no son
manejadas por un método.
● Cada método debe especificar explícitamente qué excepciones
no se manejan, por lo que las personas que llaman de ese
método pueden protegerse contra posibles excepciones.
Finalmente, las múltiples excepciones están separadas por una
coma.

59

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy