Red de conocimiento del abogados - Ley de patentes - preguntas de la entrevista de java

preguntas de la entrevista de java

1. Principios simples y aplicaciones del mecanismo de manejo de excepciones en Java.

Cuando un programa Java viola las reglas semánticas de Java, la máquina virtual Java representará el error como una excepción. La violación de las reglas semánticas incluye dos situaciones. Una es la verificación semántica integrada en la biblioteca de clases de Java. Por ejemplo, si el subíndice de la matriz está fuera de los límites, se generará una excepción IndexOutOfBoundsException al acceder a un objeto nulo y se generará una excepción NullPointerException; Otra situación es que Java permite a los programadores ampliar esta verificación semántica. Los programadores pueden crear sus propias excepciones y elegir libremente cuándo lanzar excepciones usando la palabra clave throw. Todas las excepciones son subclases de java.lang.Thowable.

2. Las similitudes y diferencias entre la interfaz de Java y la clase virtual de C.

Dado que Java no admite la herencia múltiple y es posible que una determinada clase u objeto necesite utilizar métodos o atributos en varias clases u objetos, el mecanismo de herencia única existente no puede cumplir con los requisitos. En comparación con la herencia, las interfaces proporcionan una mayor flexibilidad porque no hay código de implementación en la interfaz. Cuando una clase implementa una interfaz, la clase debe implementar todos los métodos y propiedades en la interfaz, y las propiedades en la interfaz son públicas estáticas de forma predeterminada y todos los métodos son públicos de forma predeterminada. Una clase puede implementar múltiples interfaces.

3. Ventajas y principios de la recogida de basura. Y considere 2 mecanismos de reciclaje.

Una característica notable del lenguaje Java es la introducción de un mecanismo de recolección de basura, que resuelve el problema de administración de memoria más problemático para los programadores de C. Hace que los programadores de Java ya no necesiten considerar la administración de memoria al escribir programas. . Debido al mecanismo de recolección de basura, los objetos en Java ya no tienen el concepto de "alcance". Solo las referencias a objetos tienen "alcance". La recolección de basura puede prevenir eficazmente las pérdidas de memoria y utilizar eficazmente la memoria disponible. El recolector de basura generalmente se ejecuta como un subproceso separado de bajo nivel para borrar y reciclar objetos en el montón de memoria que han muerto o no se han utilizado durante mucho tiempo en circunstancias impredecibles. Los programadores no pueden llamar al recolector de basura en tiempo real para manejar ciertos. Los objetos o todos los objetos se recolectan como basura. Los mecanismos de reciclaje incluyen recolección de basura de copias generacionales, recolección de basura marcada y recolección de basura incremental.

4. Método de sincronización de hilos.

wait(): Pone un hilo en estado de espera y libera el bloqueo del objeto que contiene.

sleep(): pone un hilo en ejecución en estado de suspensión. Es un método estático. Al llamar a este método, es necesario detectar InterruptedException.

notify(): activa un hilo en estado de espera. Tenga en cuenta que al llamar a este método, no puede activar exactamente un hilo en estado de espera. En cambio, la JVM determina qué hilo activar. Y no por prioridad.

Allnotity(): activa todos los subprocesos en estado de espera. Tenga en cuenta que no otorga un bloqueo de objeto a todos los subprocesos activados, sino que los deja competir.

5. ¿Cuál es la diferencia entre error y excepción?

Error representa errores y excepciones a nivel del sistema que el programa no necesita manejar.

Excepción representa excepciones que el programa debe detectar o manejar.

6. ¿Qué significa cuando una clase se declara como tipo final en Java?

Indica que esta clase no se puede heredar y es una clase de nivel superior.

7 ¿Cuál es la diferencia entre montón y pila?

Una pila es una colección lineal en la que agregar y eliminar elementos se deben realizar en la misma sección. La pila se procesa según el principio de último en entrar, primero en salir. El montón es un elemento de la pila.

8 Hablemos de la diferencia entre final, finalmente y finalizar.

final—modificador (palabra clave) Si una clase se declara final, significa que ya no puede derivar nuevas subclases y no se puede heredar como clase principal. Por lo tanto, una clase no puede declararse abstracta y final. Declare las variables o métodos como finales para garantizar que no se cambiarán durante el uso. A las variables declaradas como finales se les debe dar un valor inicial cuando se declaran, y solo se pueden leer en referencias posteriores y no se pueden modificar. Los métodos declarados como finales también solo se pueden utilizar y no se pueden sobrecargar.

finalmente: proporciona un bloque finalmente para realizar cualquier operación de limpieza durante el manejo de excepciones. Si se produce una excepción, se ejecuta la cláusula catch correspondiente y el control pasa al bloque finalmente (si lo hay).

finalizar: nombre del método. La tecnología Java permite el uso del método finalize() para realizar la limpieza necesaria antes de que el recolector de basura borre el objeto de la memoria. El recolector de basura llama a este método en este objeto cuando determina que no se hace referencia al objeto. Está definido en la clase Objeto, por lo que todas las clases lo heredan. Las subclases anulan el método finalize() para organizar los recursos del sistema o realizar otros trabajos de limpieza. El método finalize() se llama en el objeto antes de que el recolector de basura lo elimine.

9 Clase interna anónima (clase interna anónima) ¿Puede extender (heredar) otras clases, puede implementar (implementar) interfaz (interfaz)?

Las clases internas anónimas no tienen nombres. clase interna. No puede extender (heredar) otras clases, pero una clase interna puede servir como interfaz y ser implementada por otra clase interna.

10 La diferencia entre clase anidada estática y clase interna

Clase anidada (generalmente en términos C), clase interna (generalmente en términos JAVA). La mayor diferencia entre las clases internas de Java y las clases anidadas de C es si hay referencias al exterior.

Nota: Clase interna estática (Clase interna) significa que 1. la creación de un objeto de clase interna estática no requiere un objeto de clase externa, 2. no se puede acceder a un objeto de clase externa desde un objeto de una clase interna estática clase

11 La diferencia entre amp; y amp;.

amp; es un operador bit a bit. amp amp; es un operador lógico booleano.

12 La diferencia entre HashMap y Hashtable.

Son todas clases que pertenecen a la interfaz Map e implementan el mapeo de claves únicas a valores específicos.

La clase HashMap no clasifica ni ordena. Permite una clave nula y múltiples valores nulos.

Hashtable es similar a HashMap, pero no permite claves nulas ni valores nulos. También es más lento que HashMap porque es sincrónico.

13 La diferencia entre Colección y Colecciones.

La colección es una interfaz en java.util, que es la interfaz principal de varias estructuras de colección.

Colecciones es una clase de java.util que contiene varios métodos estáticos relacionados con operaciones de recopilación.

14 Cuándo utilizar afirmar.

Una aserción es una declaración que contiene una expresión booleana que se supone verdadera cuando se ejecuta la declaración.

Si la expresión se evalúa como falsa, se informa un error de afirmación. Se utiliza con fines de depuración:

assert(a gt; 0); // arroja un error de afirmación si a lt = 0

Las afirmaciones pueden tener dos formas:

afirmar Expresión1;

afirmar Expresión1: Expresión2;

Expresión1 siempre debe producir un valor booleano.

Expresión2 puede ser cualquier expresión que dé como resultado un valor. Este valor se utiliza para generar un mensaje de cadena que muestra más información de depuración.

Las afirmaciones están deshabilitadas de forma predeterminada. Para habilitar aserciones en tiempo de compilación, use el indicador fuente 1.4:

javac -source 1.4 Test.java

Para habilitar aserciones en tiempo de ejecución, use el indicador -enableassertions o -ea.

Para elegir deshabilitar las aserciones en tiempo de ejecución, use el indicador -da o -disableassertions.

Para habilitar aserciones en clases del sistema, utilice el indicador -esa o -dsa. Las aserciones también se pueden habilitar o deshabilitar por paquete.

Puedes colocar afirmaciones en cualquier ubicación a la que no se espera llegar en circunstancias normales. Las aserciones se pueden utilizar para validar los parámetros pasados ​​a métodos privados. Sin embargo, las aserciones no deben usarse para validar los parámetros pasados ​​a métodos públicos, porque los métodos públicos deben verificar sus parámetros independientemente de si las aserciones están habilitadas. Sin embargo, puede utilizar aserciones para probar condiciones posteriores en métodos tanto públicos como no públicos. Además, las afirmaciones no deberían cambiar el estado del programa de ninguna manera.

15 ¿Qué es GC? ¿Por qué existe GC (Conceptos básicos)?

GC es el recolector de basura. Los programadores de Java no tienen que preocuparse por la gestión de la memoria porque el recolector de basura se encarga de ello automáticamente. Para solicitar la recolección de basura, llame a uno de los siguientes métodos:

System.gc()

Runtime.getRuntime().gc()

16 String s = new String("xyz"); ¿Cuántos objetos String se crean?

Dos objetos, uno es "xyz" y el otro es el objeto de referencia que apunta a "xyz".

17 ¿A qué es igual Math.round(11.5)? ¿A qué es igual Math.round(-11.5)?

Math.round(11.5) devuelve (largo) 12, Math.round( -11.5) Devuelve (largo) -11;

18 short s1 = 1; s1 = s1 1; ¿Qué pasa? >

short s1 = 1; s1 = s1 1; Error, s1 es de tipo corto, s1 1 es de tipo int y no se puede convertir explícitamente a tipo corto. Se puede modificar como s1 =(short)(s1 1). corto s1 = 1; s1 = 1 es correcto.

19 ¿Cuál es la diferencia entre dormir() y esperar()? El método favorito de threading

El método sleep() es un método para detener el hilo por un período de tiempo. Una vez transcurrido el intervalo de suspensión, el subproceso no necesariamente reanuda la ejecución de inmediato. Esto se debe a que en ese momento, es posible que se estén ejecutando otros subprocesos y no programados para abandonar la ejecución, a menos que (a) el subproceso "despertador" tenga una prioridad más alta (b) el subproceso en ejecución esté bloqueado por otras razones.

Wait() es una interacción de subproceso. Si el subproceso emite una llamada de espera() a un objeto de sincronización x, el subproceso suspenderá la ejecución y el objeto llamado entrará en estado de espera hasta que se despierte o hasta que se despierte. el tiempo de espera expira.

20 ¿Java tiene goto?

Goto: una palabra reservada en Java que actualmente no se utiliza en Java.

21 ¿La matriz tiene el método length()? ¿String tiene el método length()?

Los arrays no tienen el método length(), pero sí el atributo length.

La cadena tiene el método length().

22 La diferencia entre sobrecarga y anulación. ¿Puede un método sobrecargado cambiar el tipo de valor de retorno?

La anulación y la sobrecarga de métodos son manifestaciones diferentes del polimorfismo de Java. La anulación es una manifestación de polimorfismo entre clases principales y subclases, y la sobrecarga es una manifestación de polimorfismo en una clase. Si un método definido en una subclase tiene el mismo nombre y parámetros que su clase principal, decimos que el método está anulando. Cuando un objeto de una subclase usa este método, llamará a la definición en la subclase. Por ello, la definición en la clase principal parece estar "protegida". Si se definen varios métodos con el mismo nombre en una clase y tienen diferente número de parámetros o diferentes tipos de parámetros, se denomina sobrecarga de métodos.

El método Overloaded puede cambiar el tipo de valor de retorno.

23 Los elementos en Set no se pueden repetir, entonces, ¿qué método se usa para distinguir si están repetidos? ¿Deberías usar == o e

quals()? entre ellos?

Los elementos del Conjunto no se pueden repetir, así que utilice el método iterator() para distinguir si se repiten o no. igual (

) determina si dos conjuntos son iguales. Los métodos equals() y == determinan si un valor de referencia apunta al mismo objeto. se anula en la clase para que devuelva verdadero cuando el contenido y los tipos de dos objetos separados coinciden.

24 Las excepciones de tiempo de ejecución más comunes.

ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, OfBoundsException, MissingResourceException, SizeException, NoSuchElementException, NullPointerException, ProfileDataException , ProviderException, RasterFORMatException, Secur

ityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

25 ¿Cuál es la diferencia entre error y excepción

error significa recuperación? No imposible, pero sí un problema grave en una situación muy difícil. Por ejemplo, desbordamiento de memoria. Es imposible esperar que un programa pueda manejar tal situación.

Una excepción representa un problema de diseño o implementación. Es decir, representa una situación que nunca ocurriría si el programa se estuviera ejecutando normalmente.

26 ¿La Lista, el Conjunto y el Mapa heredan de la interfaz de Colección?

La Lista y el Conjunto son

El Mapa no es

27 una clase abstracta. y ¿Cuál es la diferencia entre interfaces?

Una clase que declara la existencia de un método sin implementarlo se llama clase abstracta. Se utiliza para crear una clase que incorpora algún comportamiento básico y lo proporciona. clase. Una situación en la que se declara un método pero no se puede implementar en la clase. No se pueden crear instancias de clases abstractas. Sin embargo, puede crear una variable cuyo tipo sea una clase abstracta y hacer que apunte a una instancia de una subclase concreta. No puede haber constructores abstractos ni métodos estáticos abstractos. Las subclases de la clase abstracta proporcionan implementaciones para todos los métodos abstractos en su clase principal; de lo contrario, también serían clases abstractas. En su lugar, implemente el método en una subclase. Otras clases que conocen su comportamiento pueden implementar estos métodos en su clase.

La interfaz es una variante de la clase abstracta. En una interfaz, todos los métodos son abstractos. Se puede obtener herencia múltiple implementando dicha interfaz. Todos los métodos de la interfaz son abstractos y ninguno de ellos tiene un cuerpo de programa. Las interfaces solo pueden definir variables miembro finales estáticas. La implementación de una interfaz es similar a la creación de subclases, excepto que la clase implementadora no puede heredar el comportamiento de la definición de la interfaz. Cuando una clase implementa una interfaz particular, define (es decir, le da el cuerpo del programa) todos los métodos de esta interfaz.

Luego puede llamar a los métodos de la interfaz en cualquier objeto de la clase que implemente la interfaz. Dado que existen clases abstractas, permite utilizar el nombre de la interfaz como tipo de variable de referencia. La vinculación dinámica normal tendrá efecto. Las referencias se pueden convertir hacia y desde tipos de interfaz, y el operador instancia de se puede utilizar para determinar si la clase de un objeto implementa la interfaz.

28 ¿Pueden los métodos abstractos ser estáticos, nativos y sincronizados al mismo tiempo?

Ninguno

29 ¿Se pueden heredar las interfaces? ¿Se puede heredar una clase abstracta? implementar una interfaz? ¿Puede una clase abstracta heredar de una clase concreta?

Una interfaz puede heredar de una interfaz. Las clases abstractas pueden implementar interfaces y las clases abstractas pueden heredar clases de entidad, pero la premisa es que la clase de entidad debe tener un constructor claro.

30 Para iniciar un hilo, ¿debe utilizar run() o start()?

Para iniciar un hilo, necesita llamar al método start() para crear el procesador virtual. representado por el hilo en un estado ejecutable, lo que significa que puede ser programado y ejecutado por la JVM. Esto no significa que el hilo se ejecutará inmediatamente. El método run() puede detener un hilo generando un indicador de salida obligatoria.

31 ¿Se puede anular el constructor Constructor?

El constructor Constructor no se puede heredar, por lo que la Anulación no se puede anular, pero la Sobrecarga se puede anular.

32 ¿Puedo heredar la clase String?

La clase String es una clase final y no se puede heredar.

33 Cuando un hilo ingresa a un método sincronizado de un objeto, ¿pueden otros hilos ingresar a otros métodos del objeto?

No, ¿un método sincronizado de un objeto solo puede ser controlado por uno? acceso al hilo.

33 Hay una declaración de retorno en el intento {}, entonces, ¿se ejecutará el código finalmente {} inmediatamente después de este intento?

¿Cuándo se ejecutará antes o después del retorno? ?

se ejecutará antes de la devolución.

34 Pregunta de programación: ¿Utiliza el método más eficiente para calcular el valor de 2 por 8?

2 lt; mismo (x.equals(y) == true), pero pueden tener diferentes códigos hash. ¿Es correcto?

No, tienen el mismo código hash.

36 Cuando un objeto se pasa como parámetro a un método, este método puede cambiar las propiedades del objeto y

puede devolver el resultado modificado. Así que aquí está el valor Pasar. o pasar por referencia?

Pasar por valor. El lenguaje de programación Java sólo pasa parámetros por valor. Cuando una instancia de objeto se pasa como parámetro a un método, el valor del parámetro es una referencia al objeto. El contenido del objeto puede cambiar dentro del método llamado, pero la referencia al objeto nunca cambia.

37 ¿Puede el interruptor operar en byte, largo o cadena?

En el interruptor (expr1), expr1 es una expresión entera. Por lo tanto, los parámetros pasados ​​a las declaraciones switch y case deben ser int, short, char o byte. No se pueden utilizar ni hilos largos ni cuerdas en el interruptor.

38 Hashtable y HashMap

Hashtable hereda de la clase Dictionary y HashMap es una implementación de la interfaz Map introducida en Java 1.2

HashMap permite que null sea tratado como La clave o valor de entrada no está permitido en Hashtable

Además, HashMap eliminó el método contiene de Hashtable y lo cambió a contiene valor y contiene clave. Porque el método contiene es fácilmente engañoso.

La mayor diferencia es que el método de Hashtable está sincronizado, pero HashMap no.

Cuando varios subprocesos acceden a Hashtable, no necesita sincronizar sus métodos usted mismo, mientras que HashMap debe proporcionarlo. sincronización externa para ello.

Los algoritmos hash/rehash utilizados por Hashtable y HashMap son más o menos los mismos, por lo que no habrá una gran diferencia en el rendimiento.