El análisis más común de más de 300 preguntas de entrevistas de Java + intercambio de experiencias de entrevistas de 100 millones de puntos

Creo firmemente que las oportunidades siempre pertenecen a quienes están preparados. En lugar de envidiar el éxito de los demás, debemos acumular suficientes conocimientos y experiencia en entrevistas de este momento para hacer los preparativos completos para ingresar a una mejor empresa en el futuro.

¿Quiere que el entrevistador reconozca sus habilidades en solo decenas de minutos? ¿Quiere recolectar los puntos de conocimiento básicos de la pila de tecnología Java en el menor tiempo posible? ¿Quiere una comprensión más completa y profunda de la tecnología Java? Este artículo ofrece todas las respuestas que desea.

En este artículo obtendrá los siguientes conocimientos:

  • Análisis de las preguntas de entrevista más comunes para Java y Jvm;
  • Spring, Spring MVC, MyBatis, análisis de preguntas de entrevista de Hibernate;
  • Análisis de preguntas de entrevistas de MySQL y Redis;
  • RabbitMQ, Kafka, análisis de entrevistas de Zookeeper;
  • Análisis de entrevistas de microservicio Spring Boot y Spring Cloud;
  • Diseñe un conjunto completo de tutoriales en video y materiales sistemáticos en Java, incluidos los puntos de conocimiento básicos de Java, temas de entrevistas, 20 años de las últimas preguntas reales de Internet, libros electrónicos, etc.
  • ¡Los amigos que lo necesiten pueden hacer clic en el enlace de abajo para obtenerlo gratis!
    Enlace: 1103806531 Contraseña: CSDN

Inserte la descripción de la imagen aquí

Preguntas de entrevistas para JVM

1. ¿Qué es JVM? ¿Qué hace?

JVM es la abreviatura de Java Virtual Machine (Java Virtual Machine), como su nombre lo indica, es una computadora virtual, y también es la base para la realización de programas Java multiplataforma. Su función es cargar un programa Java, traducir el código de bytes a código de máquina y entregarlo a una calculadora virtual ejecutada por la CPU.

2. ¿Cuáles son los componentes principales de JVM?

Los componentes principales de JVM son los siguientes:

  • ClassLoader (ClassLoader)
  • Área de datos en tiempo de ejecución
  • Motor de ejecución
  • Interfaz nativa

3. ¿Cómo funciona JVM?

Primero, antes de que se ejecute el programa, el código Java (.java) debe convertirse en bytecode (.class). La JVM carga el bytecode en la memoria a través del ClassLoader, pero el archivo de bytecode es parte de la JVM. Un conjunto de especificaciones del conjunto de instrucciones no se puede transferir directamente al sistema operativo subyacente para su ejecución. Por lo tanto, se requiere un motor de ejecución del analizador de comandos específico (motor de ejecución) para traducir el código de bytes al código de máquina subyacente y luego entregarlo a la CPU para su ejecución. El proceso de ejecución de la CPU Necesita llamar a la interfaz de la biblioteca nativa (Interfaz nativa) para completar la operación de todo el programa.

4. ¿Cuál es el diseño de la memoria JVM?

La implementación de diferentes máquinas virtuales puede ser ligeramente diferente, pero todas cumplirán con la especificación de la máquina virtual Java. La especificación de la máquina virtual Java 8 estipula que la memoria administrada por la máquina virtual Java incluirá las siguientes áreas:

  • Registro de contador de programa
  • Pilas de máquinas virtuales Java (pilas de máquinas virtuales Java)
  • Pila de método nativo (pila de método nativo)
  • Java ((Java Heap)
  • Área de método (área methed)

5. ¿Cómo determinar la basura durante la recolección de basura de JVM? ¿Sabes qué son GC Roots?

Utilice el recuento de referencias y el análisis de accesibilidad para determinar la basura.

(1) Método de recuento de referencias: agregue un contador de referencia a cada objeto. Siempre que haya una referencia a él, el contador se incrementa en 1, y cuando la referencia no es válida, el contador se reduce en 1,

Cuando el contador es 0, se considera que el objeto se puede reciclar (debido a que el método de recuento de referencias provocará pérdidas de memoria durante las referencias circulares, este método está actualmente en desuso en Java).

(2) Método de análisis de accesibilidad: tomando el objeto "GC ROOT" como punto de partida, buscando los objetos referenciados de estos nodos, los objetos encontrados se marcan todos como objetos no basura y los restantes sin marcar son todos objetos basura.

Java se puede utilizar como objetos GC ROOT: objetos referenciados en la pila de la máquina virtual, objetos referenciados por propiedades estáticas de la clase en el área de método, objetos comúnmente referenciados en el área de método y objetos referenciados por JNI en la pila de métodos local.
Nodo raíz de GC ROOT: variables locales de la pila de subprocesos, variables estáticas, variables de la pila de métodos locales, etc.

6. Hable sobre la diferencia entre la recopilación en serie de JVM, la recopilación en paralelo y la recopilación simultánea.

Hay tres tipos de clasificación del recolector de basura a partir del estado de ejecución del subproceso:

Recolección en serie : recolector en serie, recolección de un solo subproceso, stw completo; se refiere al uso de recolección de basura de un solo subproceso, solo un subproceso está funcionando durante la recolección de basura y todos los subprocesos en la aplicación Java deben suspender el trabajo y esperar a que se complete la recolección de basura. Este fenómeno se llama STW (stop-the-world).

Desventaja : solo hay un subproceso y el programa se detiene durante mucho tiempo cuando se realiza la recolección de basura. Para aplicaciones más interactivas, no se puede aceptar este recolector de basura.

Recolección en paralelo : el recopilador cuyo nombre comienza con Paralelo, colección de subprocesos múltiples, stw completo; se refiere a varios subprocesos de recolección de basura que funcionan en paralelo, pero el subproceso del usuario todavía está esperando en este momento. En resumen, se ha realizado una mejora sobre la base del recolector de basura en serie, y la recolección de basura de un solo subproceso se ha cambiado a la recolección de basura de múltiples subprocesos, lo que puede acortar el tiempo de recolección de basura. Pero el recolector de basura paralelo también pausará la aplicación durante el proceso de recolección. Esto es lo mismo que el recolector de basura en serie, excepto que la velocidad de ejecución paralela es más rápida y el tiempo de pausa es más corto.

Varios subprocesos para realizar la recolección de basura son adecuados para los sistemas de rendimiento, y el sistema dejará de ejecutar proyectos de alta concurrencia durante el reciclaje.

Recolección concurrente : cms y G1, recolección de múltiples subprocesos en etapas, solo una cierta etapa será stw;
significa que el subproceso del usuario y el subproceso de recolección de basura se ejecutan al mismo tiempo (pero no necesariamente en paralelo, pueden alternarse), el programa del usuario continúa reflejándose y la basura El programa de recolección se ejecuta en otra CPU.

7. Hable sobre la diferencia entre desbordamiento de memoria y pérdida de memoria en Java.

Pérdida de memoria : una vez que el programa ha solicitado memoria, no puede liberar el espacio de memoria aplicado. En pocas palabras, usó malloc o new para solicitar un fragmento de memoria, pero no liberó la memoria a tiempo, lo que provocó que esta memoria estuviera ocupada. El daño de una pérdida de memoria se puede ignorar, pero las consecuencias de la acumulación de pérdida de memoria son muy graves, no importa cuánta memoria, tarde o temprano estará ocupada.

Las pérdidas de memoria se dividen en 4 categorías:

Pérdidas frecuentes de memoria : el código que tiene una pérdida de memoria se ejecutará varias veces y se producirá una pérdida de memoria cada vez que se ejecute.

Pérdidas de memoria ocasionales : las pérdidas de memoria se producen solo en determinadas circunstancias o durante las operaciones. Es lo opuesto a las fugas frecuentes de memoria. Si ha estado en un entorno determinado, las fugas ocasionales de memoria se volverán frecuentes. Por lo tanto, el entorno de prueba y los métodos de prueba son fundamentales para detectar pérdidas de memoria.

Pérdida de memoria de una sola vez :. El código que tiene una pérdida de memoria solamente se ejecutará una vez debido a los defectos algorítmicos, siempre habrá una hora y pérdidas de memoria. Por ejemplo, la memoria se asigna en el constructor de la clase, pero la memoria no se libera en el destructor, por lo que la pérdida de memoria solo ocurrirá una vez.

Pérdida de memoria implícita : el programa sigue asignando memoria mientras se está ejecutando, pero no libera la memoria hasta el final. Estrictamente hablando, no hay pérdida de memoria, porque finalmente se libera toda la memoria solicitada. Pero para un programa de servidor, debe ejecutarse durante días, semanas o incluso meses. Si no se libera la memoria a tiempo, también se puede agotar toda la memoria del sistema. Así que llamamos a este tipo de pérdidas de memoria pérdidas de memoria implícitas.

Desbordamiento de memoria : cuando el programa está solicitando memoria, no hay suficiente espacio de memoria para usar y aparece outofmemory. En pocas palabras, ha solicitado 10 bytes de espacio,
pero escribe 11 o más bytes de datos en este espacio, lo que provocará un desbordamiento.

Debido al espacio limitado, solo una parte se muestra aquí. Los amigos que lo necesiten pueden hacer clic en el enlace de abajo para obtenerlo gratis.
Enlace: 1103806531 Contraseña: CSDN

Inserte la descripción de la imagen aquí

Intercambio de experiencias en la entrevista: cómo destacar en la entrevista

  • Antes de participar en la entrevista, debe revisar el lenguaje de programación que puede usar y obtener su mejor código. Debido a que escribir código es lo más destacado del proceso de entrevista de diseño del programa, es una oportunidad para demostrar que tiene la capacidad para hacer el trabajo. El desempeño en la respuesta a las preguntas de las entrevistas de programación es uno de los criterios más importantes para que la mayoría de las empresas de informática y software decidan si contratar a alguien. Las preguntas de la entrevista real del programa suelen ser bastante difíciles. Por un lado, las preguntas de la entrevista de programación son para probar su capacidad para escribir código y, por otro lado, para probar su capacidad para analizar y resolver problemas. La mayoría de las preguntas de la entrevista básicamente tardan una hora en obtener las respuestas, por lo que es normal que no pueda encontrar la respuesta a las preguntas de la entrevista de inmediato. No se desanime por esto.
  • Además, no comience a responder la pregunta antes de que se haya dado cuenta. Comenzar con un ejemplo puede profundizar aún más su comprensión de la pregunta. Después de escribir, busque un ejemplo para verificar el código que escribió y verifique si su código ha considerado varias condiciones de error y casos especiales.
  • La mayoría de las entrevistas técnicas tendrán algunas preguntas no técnicas. Estas preguntas generalmente aparecen en las primeras etapas de todo el proceso de la entrevista. El propósito es determinar su experiencia laboral y sus objetivos de búsqueda de trabajo para ver si está calificado para el puesto.
  • Los problemas no técnicos parecen ser relativamente simples, especialmente cuando ya ha superado las duras pruebas técnicas. Pero las cuestiones no técnicas también son muy importantes y no deben tomarse a la ligera.
  • Por último, el examinador generalmente le indicará una hora para responderle, y en ocasiones no habrá respuesta. Para los solicitantes de empleo, se recomienda contactar al examinador, llamar o enviar un correo electrónico dentro de una semana después de la entrevista, para expresar gratitud y preguntar sobre el resultado de la entrevista. Por supuesto, puede expresar su entusiasmo por este trabajo. Mucha gente ignora este enlace. Después de la entrevista, la empresa también puede perder algunos candidatos. Un buen comienzo y un buen final pueden traer grandes oportunidades.
  • No todas las entrevistas son fáciles. Si falla una vez, debe prestar atención a resumir la experiencia y las lecciones de esta entrevista. Esto le ahorrará una gran cantidad de dinero para su futura búsqueda de empleo. Creo que todo buscador de empleo que trabaje duro obtendrá su trabajo favorito.
      
    Inserte la descripción de la imagen aquí

Al final

¡Espero que este artículo sea útil para todos!

También he compilado un conjunto completo de tutoriales en video para arquitectos y materiales sistemáticos sobre Java, que incluyen puntos de conocimiento básicos de Java, temas de entrevistas y los últimos 20 años de preguntas reales y libros electrónicos de Internet.

¡Los amigos que lo necesiten pueden hacer clic en el enlace de abajo para obtenerlo gratis!
Enlace: 1103806531 Contraseña: CSDN
Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_48655626/article/details/108552365
Recomendado
Clasificación