¿Quién puede darme algunas preguntas de la entrevista sobre Java?

Las preguntas de la entrevista de nuestra empresa son muy populares, jaja

Conocimientos básicos: principios simples y aplicaciones del mecanismo de manejo de excepciones en 1. C o Java.

Cuando un programa JAVA viola las reglas semánticas de JAVA, la máquina virtual JAVA expresará el error como una excepción. Las violaciones de las reglas semánticas incluyen dos situaciones. Una es la verificación semántica integrada en la biblioteca de clases JAVA. Por ejemplo, si el subíndice de la matriz está fuera de los límites, se generará IndexOutOfBoundsException al acceder a un objeto nulo, se generará 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 lanzarlas utilizando la palabra clave throw. Todas las excepciones son subclases de java.lang.Thowable

2. Similitudes y diferencias entre las interfaces Java y las clases virtuales C.

Dado que Java no admite la herencia múltiple y es posible que una clase u objeto utilice métodos o propiedades 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 son más flexibles porque no hay código de implementación en la interfaz. Cuando una clase implementa una interfaz, 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 dos 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, de modo que los programadores de Java ya no necesitan 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 único subproceso de bajo nivel que, en circunstancias impredecibles, limpia y recupera objetos en el montón de memoria que han muerto o no se han utilizado durante mucho tiempo. Los programadores no pueden llamar al recolector de basura en tiempo real para recolectar basura de uno o todos los objetos. Los mecanismos de reciclaje incluyen recolección de basura de copias generacionales, recolección de basura marcada y recolección de basura incremental.

Por favor, cuéntame lo que sabes sobre la sincronización de hilos.

Esperar(): pone el hilo en estado de espera y libera el bloqueo del objeto retenido.

Sleep(): Este es un método estático utilizado para poner un hilo en ejecución en suspensión. Llame a este método para detectar InterruptedException.

Notify(): activa un hilo en espera. Tenga en cuenta que al llamar a este método, no puede activar exactamente un hilo en espera. En cambio, la JVM decide qué hilo activar, no en función de la prioridad.

Allnotity(): activa todos los subprocesos en estado de espera. Tenga en cuenta que en lugar de otorgar a todos los subprocesos despiertos un bloqueo sobre un objeto, se les permite competir.

5. Hable sobre el uso y las funciones de los destructores y las funciones virtuales.

6. ¿Cuál es la diferencia entre errores y excepciones?

Los errores significan errores y excepciones a nivel del sistema que el programa no tiene que manejar.

Las excepciones se refieren a excepciones que el programa necesita detectar o manejar.

7. En java, las clases se declaran como tipos finales. ¿Qué quiere decir esto?

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

8. Describe tu estilo de programación más común.

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

Stack es una colección lineal, y las operaciones de agregar y eliminar elementos deben completarse en el mismo párrafo. La pila se procesa según el principio de último en entrar, primero en salir.

El montón es un componente de la pila.

10. Si el sistema va a utilizar números enteros muy grandes (más allá del rango de longitud larga), diseñe una estructura de datos para almacenar este número tan grande y diseñe un algoritmo para implementar la suma de números muy grandes. números enteros).

Clase pública BigInt()

{

int[]ArrOne = new ArrOne[1000];

String intString =

p>

public int[] Arr(cadena s)

{

int cadena = s;

for(int I = 0; i {

11. Si desea diseñar un sistema gráfico, diseñe una implementación simple de elementos gráficos básicos (puntos, líneas, rectángulos, triángulos)

12. Hablemos de final. La diferencia entre finalmente y finalizar.

Final? Modificador (palabra clave) Si una clase se declara final, significa que ya no puede derivar nuevas subclases ni puede heredarse como una. clase principal. No puede declarar abstract y final al mismo tiempo. La declaración de variables o métodos finales garantiza que no se cambiarán durante el uso. A las variables declaradas finales se les debe asignar un valor inicial cuando se declaran y solo se pueden leer desde referencias posteriores. no se pueden modificar. Los métodos declarados como finales solo se pueden usar y no se pueden sobrecargar.

¿Finalmente? Proporciona un bloque finalmente para realizar cualquier operación de limpieza, luego el control ingresará al bloque finalmente. (si existe uno).

Finalice el 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. Se determina que el objeto no está referenciado. Está definido en la clase Object, por lo que todas las subclases lo heredan. El método finalize () se utiliza para organizar los recursos del sistema o realizar otras tareas de limpieza. Antes de que el recopilador elimine el objeto. el método finalize().

13. ¿Pueden las clases internas anónimas extender otras clases e implementar interfaces?

Las clases internas anónimas no pueden extender otras clases. una clase interna puede ser implementada como una interfaz por otra clase interna.

14. Cuanto más hables sobre la diferencia entre clases anidadas estáticas, mejor (algunas entrevistas La pregunta es muy general). /p>

La mayor diferencia entre las clases anidadas (generalmente C) y las clases internas (generalmente JAVA) es si tienen referencias externas /Article/Service/View id = 704 amppage=1

.

Nota: la clase interna estática se refiere a 1 crear un objeto de clase interna estática sin un objeto de clase externa, 2 no se puede obtener de la clase interna estática El objeto accede al objeto de clase externa

Cuarto, la diferencia. entre; y amperio.

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

15. La diferencia entre HashMap y Hashtable.

Todos pertenecen a la clase de interfaz Map, que implementa el mapeo de claves únicas a valores específicos.

La clase HashMap no está categorizada ni ordenada. 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.

16. La diferencia entre colección y colección.

Colecciones es una clase bajo java.util, que contiene varios métodos estáticos sobre operaciones de colección.

Collection es una interfaz en java.util y es la interfaz principal de varias estructuras de colección.

17. Cuándo utilizar afirmar.

Una aserción es una declaración que contiene una expresión booleana que se supone verdadera cuando se ejecuta. Si la expresión se evalúa como falsa, se informará un error de afirmación.

Se utiliza con fines de depuración:

Assertion(a gt0); //if lt = 0

La afirmación tiene dos formas:

Expresión de afirmación 1; /p>

afirmar expresión 1: expresión 2;

La expresión 1 siempre debe producir un valor booleano.

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

De forma predeterminada, las aserciones están deshabilitadas. Para habilitar aserciones en tiempo de compilación, necesita usar el indicador fuente 1.4:

javac-source 1.4 Test.java

Para habilitar aserciones en tiempo de ejecución, puede usar -enableassertions o -ea bandera.

Para elegir deshabilitar las aserciones en tiempo de ejecución, puede usar el indicador de evaluaciones -da o -disable.

Para habilitar aserciones en clases del sistema, puede usar el indicador -esa o -dsa. También puede habilitar o deshabilitar aserciones por paquete.

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

18. ¿Qué es GC? ¿Por qué hay GC? (Base).

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

System.gc()

Runtime.getRuntime().gc()

19 , String s = new String("XYZ"); ¿Cuántos objetos de cadena se crearon?

Dos objetos, uno es "xyx" y el otro es el objeto de referencia s.

¿Cuánto es 20, Math.round(11.5)? ¿Cuánto cuesta Math.round (-11,5)?

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

21, corto s 1 = 1; = s 1 1; ¿Qué pasa? Corto s 1 = 1; s 1 = 1; ¿Qué pasa?

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

22. ¿Cuál es la diferencia entre dormir() y esperar()? Control de subprocesos

El método sleep() es un método que detiene un subproceso durante 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 otros subprocesos se estén ejecutando y no estén programados para abandonar la ejecución a menos que (a) el subproceso "despertador" tenga una prioridad más alta y (b) el subproceso en ejecución esté bloqueado por otros motivos.

Wait() es una interacción de hilo. Si un subproceso llama 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 expire el tiempo de espera.

23. ¿Existe goto en Java?

¿Ir a? Las palabras reservadas en Java ya no se utilizan en Java.

24. ¿La matriz tiene un método length()? ¿String tiene un método length()?

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

La longitud del método de la cadena es ().

25. 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 primarias y subclases, y la sobrecarga es una manifestación de polimorfismo en una clase. Si un método definido en una clase secundaria tiene el mismo nombre y parámetros que su clase principal, decimos que el método está anulado. Cuando un objeto en 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, tendrán diferentes números de parámetros o diferentes tipos de parámetros, lo que se denomina sobrecarga de métodos. El método de sobrecarga consiste en cambiar el tipo de valor de retorno.

26. Los elementos del conjunto no se pueden repetir, entonces, ¿cómo distinguir si están repetidos? ¿Es == o igual a ()? ¿Cuál es la diferencia entre los dos?

Los elementos de la colección no se pueden repetir, por lo que se utiliza el método iterator() para distinguir si se repiten. Equals() determina si dos conjuntos son iguales.

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

script type="text/javascript" src="/style/tongji.js">