Java entrevista preguntas reales y respuestas de referencia [volumen 2]

Sugerencias: La siguiente es una breve descripción de las preguntas reales de la entrevista de Java . Si está interesado en leer este artículo, y aquellos que están a punto de entrevistar, prepare un lápiz y papel si es posible , y transfiéralo a su propio conocimiento. Espero la próxima entrevista será buena suerte una y otra vez

Volumen anterior: Preguntas de la entrevista de Java [Volumen 1]_Blog de CsDn.FF-Blog de CSDN

Tabla de contenido

11. ¿Qué es un grupo de conexiones de base de datos? ¿Por qué necesita usar un grupo de conexiones?

12. ¿Qué es un índice? ¿Cuáles son los tipos comunes? ¿Cómo optimizar el índice?

13. ¿Qué es un bloqueo de espacio?

14. ¿Qué son la lectura actual y la lectura instantánea?

15. ¿Qué es el software intermedio?

16. ¿Cómo garantizan redis y mysql la coherencia de los datos?

17. Describa brevemente el proceso de solicitud del protocolo HTTP.

18. ¿Cómo realizar la gestión de sesiones?

19. Presente brevemente la API RESTful.

20. Otros (análisis y pensamiento)


11. ¿Qué es un grupo de conexiones de base de datos? ¿Por qué necesita usar un grupo de conexiones?


        La configuración del grupo de conexiones de la base de datos de Spring Boot se puede realizar configurando las siguientes propiedades en los archivos application.properties o application.yml:

Nombre de la clase del controlador de la base de datos: spring.datasource.driver-class-name=xxx
dirección de conexión de la base de datos: spring.datasource.url=xxx
nombre de usuario de la base de datos: spring.datasource.username=xxx
contraseña de la base de datos: spring.datasource.password=xxx
conjunto de conexiones Número máximo de conexiones: spring.datasource.max-active=
grupo de conexiones xxx número mínimo de conexiones inactivas: spring.datasource.min-idle=
grupo de conexiones xxx tiempo máximo de espera: spring.datasource.max-wait=
conexiones de inicialización del grupo de conexiones xxx : spring.datasource.initial-size=xxx

        Entre ellos, xxx es un valor de atributo específico. Al configurar estas propiedades, puede lograr un control flexible del grupo de conexiones de la base de datos y mejorar el rendimiento y la estabilidad del sistema; el uso del grupo de conexiones es para mejorar la administración de los recursos de conexión de la base de datos.


12. ¿Qué es un índice? ¿Cuáles son los tipos comunes? ¿Cómo optimizar el índice?


        Un índice es una estructura de datos utilizada en una base de datos para acelerar la recuperación de datos y puede ayudar a localizar y acceder rápidamente a datos específicos en una tabla de base de datos.
Los tipos comunes de índices son:

  1. Índice de árbol B: el tipo de índice más común, adecuado para consultas de equivalencia y consultas de rango.
  2. Índice hash: adecuado para consultas equivalentes, la clave de índice se asigna a un valor hash único a través de una función hash.
  3. Índice de texto completo: se utiliza para la búsqueda de texto completo de campos de texto, como encontrar palabras clave en el contenido del artículo.
  4. Índice espacial: utilizado para tipos de datos geoespaciales, como coordenadas geográficas, regiones geográficas, etc.

Los métodos para optimizar los índices incluyen:

  • Seleccione las columnas de índice adecuadas: seleccione las columnas de índice adecuadas según la frecuencia de consulta y las condiciones de consulta para evitar crear demasiados índices o índices inútiles.
  • Índice agrupado: el uso de un índice agrupado en columnas que se consultan juntas con frecuencia puede mejorar el rendimiento de las consultas.
  • Índice de cobertura: Cree un índice de cobertura, para que la consulta pueda obtener directamente los datos requeridos del índice, reduciendo el acceso a la tabla de datos.
  • Actualice periódicamente la información estadística: la información estadística es muy importante para que el optimizador de consultas elija un plan de ejecución adecuado. La actualización periódica de la información estadística puede mantener estable el rendimiento de las consultas.
  • Evite demasiados índices: demasiados índices aumentarán el costo de las operaciones de escritura y ocuparán espacio de almacenamiento adicional. Debe sopesar el rendimiento de las consultas y la frecuencia de las operaciones de escritura para determinar la cantidad de índices.


13. ¿Qué es un bloqueo de espacio?

        Gap lock (bloqueo de brecha) es un mecanismo de bloqueo en la base de datos para evitar que otras transacciones inserten o actualicen datos en la brecha. Se utiliza bajo niveles de aislamiento de control de concurrencia multiversión (MVCC) o lectura repetible (RR).

        Cuando una transacción mantiene un bloqueo en un rango de filas de datos, un bloqueo de espacio bloquea el espacio del rango, es decir, el espacio entre dos claves de índice existentes. Esto evita que otras transacciones inserten nuevas claves de índice en la brecha, lo que garantiza la consistencia e integridad de los datos.

        El uso de gap locks puede evitar el problema de las lecturas fantasma (Phantom Read), es decir, en la misma transacción, la misma declaración de consulta se ejecuta varias veces y el número de filas en el conjunto de resultados es inconsistente. Puede garantizar la estabilidad del conjunto de resultados de la consulta y garantizar que los datos leídos por la transacción sean consistentes.


14. ¿Qué son la lectura actual y la lectura instantánea?


        La lectura actual y la lectura instantánea son dos formas de leer datos en la base de datos.
        La lectura actual se refiere a la lectura de los últimos datos enviados, y obtendrá la última versión de datos al leer. La lectura actual puede garantizar que se lean los datos más recientes, pero puede verse afectada por transacciones simultáneas, ya que es posible que se produzcan modificaciones de datos durante la lectura.
        La lectura de instantáneas se refiere a la lectura de los datos de una instantánea consistente, que obtendrá la versión de los datos al comienzo de una transacción al leer. Una lectura de instantánea no se ve afectada por transacciones simultáneas porque lee una versión definida de los datos.
        En algunos sistemas de bases de datos, se pueden usar diferentes niveles de aislamiento para controlar el comportamiento de las lecturas actuales y las lecturas de instantáneas. Por ejemplo, el nivel de aislamiento LECTURA COMPROMETIDA puede usar lecturas actuales, mientras que el nivel de aislamiento LECTURA REPETIBLE puede usar lecturas instantáneas.


15. ¿Qué es el software intermedio?


        El middleware es un componente o herramienta de software que se utiliza para pasar datos o mensajes entre diferentes sistemas o aplicaciones de software. Puede procesar, transformar, filtrar o mejorar los datos sin modificar el código fuente. El middleware generalmente se usa para manejar solicitudes y respuestas, autenticación y autorización, registro, almacenamiento en caché, manejo de errores y más. Proporciona una forma flexible y extensible de organizar y administrar las interacciones entre varios componentes en un sistema de software.


16. ¿Cómo garantizan redis y mysql la coherencia de los datos?


        Redis y MySQL son dos bases de datos diferentes que tienen diferentes mecanismos de garantía para la consistencia de los datos.

        Para Redis, es un sistema de almacenamiento de clave-valor en memoria que se usa comúnmente para el almacenamiento en caché y el almacenamiento temporal de datos. Para garantizar la consistencia de los datos, se pueden adoptar las siguientes estrategias:

  1. Escriba una estrategia de escritura doble: después de actualizar los datos de MySQL, actualice los datos correspondientes en Redis. Esto garantiza que los datos de Redis sean coherentes con los datos de MySQL.
  2. Estrategia de caché al leer: al leer datos, primero consulte los datos de Redis, si no existen en Redis, léalos de MySQL, guarde en caché los resultados de la consulta en Redis y lea directamente de Redis la próxima vez que los obtenga de . Esto puede reducir la presión de lectura en MySQL y mejorar el rendimiento de lectura.
  3. Estrategia de sincronización regular: sincronice periódicamente los datos de MySQL con Redis para mantener la coherencia de los datos. La sincronización periódica se puede lograr mediante tareas cronometradas o activadores de base de datos.

        Para MySQL, es una base de datos relacional que asegura la consistencia de los datos a través de un mecanismo de transacción. Se pueden utilizar los siguientes métodos para garantizar la coherencia de los datos con Redis:

  1. Operación de transacción: al actualizar los datos de Redis y MySQL, envuélvalos en una transacción, o todos ellos se envían correctamente, o todos se revierten, para garantizar la atomicidad y la coherencia de los datos.
  2. Actualización asincrónica: separe la actualización de Redis y la actualización de MySQL, primero actualice MySQL y luego actualice Redis. Esto reduce la latencia de la sincronización, pero puede haber breves momentos de inconsistencia de datos durante la actualización.
  3. Supervise los cambios en MySQL: supervise los cambios en la base de datos a través de mecanismos como binlog o disparadores de MySQL, y actualice los datos correspondientes en Redis de manera oportuna


17. Describa brevemente el proceso de solicitud del protocolo HTTP.


        El proceso de solicitud del protocolo HTTP se puede describir simplemente como los siguientes pasos:

  1. Solicitud iniciada por el cliente: el cliente (como un navegador) envía una solicitud HTTP al servidor. La solicitud incluye el método de solicitud (como GET, POST, etc.), el encabezado de la solicitud (incluida cierta información de metadatos, como User-Agent, Accept, etc.) y el cuerpo de la solicitud (algunos datos adicionales, como datos de formulario, archivos, etc.) .).
  2. El servidor recibe la solicitud: el servidor recibe la solicitud HTTP enviada por el cliente. El servidor analizará la información en el encabezado de la solicitud y determinará cómo procesar la solicitud en función de información como el método y la ruta de la solicitud.
  3. Solicitud de procesamiento del servidor: el servidor ejecuta la lógica de procesamiento correspondiente de acuerdo con la ruta y el método de la solicitud. Esto puede incluir leer archivos, consultar bases de datos, ejecutar scripts y más.
  4. El servidor devuelve una respuesta: después de que el servidor haya procesado la solicitud, genera una respuesta HTTP. La respuesta incluye un código de estado de respuesta (que indica si la solicitud es exitosa o un error), un encabezado de respuesta (que incluye información de metadatos, como Tipo de contenido, Longitud del contenido, etc.) y un cuerpo de respuesta (que incluye la respuesta real). datos).
  5. El cliente recibe respuesta: el cliente recibe la respuesta HTTP devuelta por el servidor. El cliente analizará la información en el encabezado de respuesta y juzgará si la solicitud es exitosa según el código de estado.
  6. El cliente procesa la respuesta: el cliente realiza el procesamiento correspondiente de acuerdo con la información en el encabezado de la respuesta y los datos en el cuerpo de la respuesta, como representar una página HTML


18. ¿Cómo realizar la gestión de sesiones?


        La gestión de la conversación es una parte importante para garantizar la coherencia del diálogo y la comprensión contextual. Estos son algunos de los métodos de administración de sesiones más utilizados:

  1. Seguimiento de contexto: durante una conversación, realice un seguimiento del historial de la conversación y de la información contextual para poder comprender y responder a las preguntas o solicitudes de los usuarios. Esto se puede lograr registrando el historial de conversaciones o utilizando estructuras de datos específicas, como pilas o colas.
  2. Reconocimiento de entidades: identifique y extraiga información importante de entidades en una conversación, como hora, lugar, nombre de la persona, etc. La información de esta entidad puede ayudar a comprender las necesidades del usuario y proporcionar respuestas o sugerencias más precisas.
  3. Reconocimiento de intenciones: use técnicas de procesamiento de lenguaje natural, como la clasificación de texto o el etiquetado de secuencias, para identificar la intención del usuario. Esto puede ayudar a determinar lo que el usuario quiere expresar y actuar en consecuencia en función de diferentes intenciones.
  4. Gestión del estado del diálogo: mantenga un estado de diálogo, registre el progreso y la información de contexto del diálogo actual. Esto se puede lograr mediante el uso de una máquina de estado o un vector de estado para que la información de estado se pueda actualizar y acceder según sea necesario durante el curso de la conversación.
  5. Motor de secuencias de comandos: use secuencias de comandos o reglas predefinidas para manejar tipos específicos de diálogos. Estos scripts pueden desencadenar respuestas o acciones específicas basadas en la entrada del usuario y ayudar a guiar la conversación.
  6. Manejo de excepciones: identifique y maneje la entrada del usuario que no se puede entender o procesar. Cuando se encuentra con un problema que no se puede responder o manejar, puede proporcionar un mensaje de error amigable o transferirlo a un servicio de atención al cliente humano para su procesamiento.

        Los métodos anteriores se pueden combinar y ajustar según las necesidades y los escenarios específicos.


19. Presente brevemente la API RESTful.

        Los siguientes blogs, el autor piensa que la escritura es mejor, la siguiente es la dirección del blog, cópielo en el navegador para abrirlo y leerlo.

Descripción general de RESTful API_restfulapi_三木-Neil's Blog-CSDN Blog

Comprensión personal de la API RESTFul - Blog del programador Peter - Blog de CSDN


20. Otros (análisis y pensamiento)


1. Comparta su experiencia de proyecto en el desarrollo de fondo de Java. Incluyendo tareas específicas, dificultades y soluciones.
2. Si necesita diseñar un sistema en segundo plano de alta concurrencia, ¿cómo lo manejará?
3. ¿Cuáles cree que son sus fortalezas y debilidades y cómo puede mejorarlas?
4. ¿Cuál es su comprensión del puesto actual? ¿Qué esperas de este trabajo?
5. En el trabajo, ¿qué debe hacer si se encuentra con una situación en la que no se lleva bien con sus compañeros?
Espero que el contenido anterior pueda ayudarlo a prepararse para la entrevista de reclutamiento de la escuela JAVA. ¡Buena suerte!

Supongo que te gusta

Origin blog.csdn.net/weixin_56800176/article/details/131987594
Recomendado
Clasificación