1. Proceso de ejecución de servlet
El cliente emite una solicitud HTTP, y el servidor web reenvía la solicitud al contenedor Servlet. El contenedor de servlet analiza la URL y encuentra el servlet correspondiente basado en Web.xml y pasa los objetos de solicitud y respuesta al servlet encontrado. El servlet puede saber quién emitió la solicitud, la información de la solicitud y otra información basada en la solicitud. Después de que el servlet haya procesado la lógica comercial, pondrá la información en la respuesta y responderá al cliente.
2. El proceso de ejecución de SpringMVC
SpringMVC es un marco de control jerárquico con DispathServlet como núcleo. Primero, el cliente emite una solicitud al servidor web para analizar la URL de la solicitud y coincidir con la URL de mapeo de DispatchServlet. Si coincide, coloque esta solicitud en el envío de envío. DispatchServlet busca el mango correspondiente de acuerdo con la configuración de mapeo de mapeo y luego entrega los derechos de procesamiento al mango encontrado. El mango encapsula el código para procesar la lógica de negocios. Después de procesar el mango, devolverá una vista lógica ModelView al DispatchServlet. En este momento, el ModelView es una vista lógica, no una vista formal, por lo que el ProftServlet analizará el ModelView a través del recurso ViewResource View, y luego colocará los parámetros analizados en la vista y volverá al cliente y lo mostrará.
3. Dado un archivo txt, cómo obtener el número de veces que aparece una determinada cadena
Archivo archivo = nuevo archivo ("e: //test.txt"); inputStream is = new FileInputStream (archivo); byte b [] = new byte [1024]; int a = is.read (b); string str [] = new String (b, 0, a) .split (""); int Count = 0; for (int i = 0; i <str.length; i ++) {if ("a" .equals (str [i])) Count ++;} System.out.println (Count); 4. Idea del modelo de diseño Java (modo de columna de una sola columna, modo de fábrica, modo de estrategia, un total de 23 modos de diseño)
a) Modo Singleton: el núcleo del modo Singleton solo requiere un nuevo modo de objeto de instancia, como la conexión de la base de datos, el número de personas en línea, etc. Las estadísticas de números en línea que se ven en algunos sitios web se implementan a través del modo Singleton, que almacena un temporizador en la base de datos o la memoria. Cuando alguien inicia sesión, lo agrega y lo vuelve a colocar una y otra vez. Cuando alguien se cierre, sácalo y lo resta y lo vuelve a colocar una y otra vez. Sin embargo, cuando dos personas inician sesión al mismo tiempo, sacarán el mostrador al mismo tiempo, agregarán uno al mismo tiempo y lo volverán a poner al mismo tiempo. De esta manera, los datos estarán equivocados. Por lo tanto, se necesita un objeto de variable global para que todas las personas los usen, y solo se necesita un objeto de instancia. Esta es la aplicación del modo Singleton, y el modo Singleton guarda recursos porque controla el número de objetos de instancia y es propicio para el reciclaje de GC.
b) Patrón de política: es extraer los métodos comunes en varias clases en una nueva clase, para que pueda ampliarse más fácilmente, garantizar la portabilidad del código y la capacidad de mantenimiento. Por ejemplo, existe un requisito de escribir objetos de pato, que se llaman, mosca y apariencia. Si cada clase de pato escribe estos tres métodos, el código será redundante. En este momento, podemos extraer los tres métodos llamados, volar y apariencia en la clase de pato, y ponerlos en la clase de padres de pato, de modo que cada pato hereda la clase de padres de pato y reescribe estos tres métodos. De esta manera, el código encapsulado es altamente portátil. Cuando el usuario propone nuevos requisitos como el pato puede nadar, es muy simple para los programadores de OO. Solo necesitamos agregar un método de natación a la clase de padres de pato y dejar que el pato de natación reescribiera el método de natación.
c) Modo de fábrica: el modo simple de fábrica proporciona principalmente referencias a los objetos de instancia de manera unificada y obtiene referencias a objetos de instancia a través de la interfaz del modo de fábrica. Por ejemplo, para una función de inicio de sesión, el backend tiene tres clases, clase de controlador, clase de interfaz y clase de implementación de la interfaz de implementación. Cuando el cliente emite una solicitud, cuando la solicitud se pasa a la clase del controlador, el controlador obtiene el objeto de referencia de la interfaz y la clase de implementación implementa la interfaz encapsula el código lógico de negocios de inicio de sesión. Cuando necesita agregar un requisito de registro, solo necesita agregar un método de registro a la clase de interfaz, implementar el método en la clase de implementación y el controlador puede obtener el objeto de referencia de la interfaz sin cambiar el código original. Este enfoque es altamente escalable.
5. Clasificación de burbujas, búsqueda binaria
a) burbuja
public static void mp (int a []) {int swap = 0; for (int i = 0; i <a.length; i ++) {for (int j = i; j <a.length; j ++) {if (a [j]> a [i]) {swap = a [i]; a [i] = a [j]; a [j] = = swap;}}} System.out.println (Arrays.ToString (a));}b) búsqueda binaria
public static int Ef (int a [], int tag) {int primero = 0; int end = a.length; for (int i = 0; i <a.length; i ++) {int middle = (first + end) / 2; if (tag == a [Middle]) {return Middle;} if (tag> a [Middle]) {first = middle + 1;} if (tag <a [a [a [a [a 0;} 6-8. Comprensión de Ajax
a) Ajax es una solicitud asincrónica, es decir, una tecnología de actualización local. En las páginas tradicionales, los usuarios deben hacer clic en botones o eventos para activar solicitudes para actualizar páginas. La tecnología asincrónica desencadena eventos sin hacer clic, lo que mejora la experiencia del usuario, como la carga asíncrona de carros de compras en el centro comercial, cuando hace clic en un producto, no necesita solicitar los antecedentes y modificar directamente los parámetros dinámicamente.
9. El orden de llamada entre la clase principal y la clase infantil (resultado de impresión)
a) Bloque de código estático de clase principal
b) Bloque de código estático de subclase
c) Constructor de clase principal
d) Método de construcción de subclase
e) Método ordinario de subclase
f) Reescribir el método de la clase principal e imprimir el método de reescritura
10. Llamadas de clases interiores y exteriores
a) La clase interna puede llamar directamente a las variables miembros de la clase externa, incluida la privada, y usar esto. Palabra clave referenciada por la clase externa para llamarlo
b) Cuando una clase externa llama a una clase interna, necesita crear un objeto de clase interna
11. Múltiples subprocesos
a) Un proceso es un entorno de ejecución independiente, que puede considerarse como un programa, mientras que un hilo puede considerarse como una tarea de un proceso. Por ejemplo, QQ es un proceso, y una ventana QQ es un hilo.
b) En un programa de múltiples subprocesos, la concurrencia múltiple puede mejorar la eficiencia del programa. La CPU no ingresará a un estado inactivo porque un cierto hilo está esperando recursos. Dará recursos a otros hilos.
c) El subproceso de usuario es el hilo que desarrollamos el programa, y el hilo de demonio es el hilo del sistema, como GC en JVM Virtual
d) Prioridad del hilo: cada hilo tiene un nivel de prioridad. Aquellos con alto nivel finito pueden obtener primero los recursos de la CPU para cambiar el hilo del estado listo al estado en funcionamiento. También puede personalizar el nivel limitado de hilos
e) Deadlock: al menos dos o más hilos se esfuerzan por más de dos recursos de CPU, evite usar cerraduras anidadas si evitan los estallidos de punto. Solo necesita agregar cerraduras donde necesitan sincronizarse y evitar una espera infinita.
12. El concepto de AOP y COI (es decir, el núcleo de la primavera)
A) COI: Spring es un marco de código abierto. El uso de marcos puede reducir nuestra carga de trabajo y mejorar nuestra eficiencia laboral. Es una estructura jerárquica, es decir, las capas correspondientes procesan la lógica comercial correspondiente y reducen el grado de código de acoplamiento. El núcleo de la primavera es la inversión de control del COI y la programación tangencial orientada a AOP. La inversión de control del COI enfatiza principalmente que la relación entre los programas está controlada por contenedores, que controla los objetos y controla la adquisición de recursos externos. La inversión significa que en la programación tradicional, creamos objetos para obtener dependencias, mientras que en el COI, el contenedor nos ayuda a crear objetos e inyectar objetos dependientes. Es el contenedor nos ayuda a encontrar e inyectar objetos. Se obtiene el objeto, por lo que se llama inversión.
b) AOP: la programación orientada, administra principalmente el negocio a nivel del sistema, como registros, permisos, cosas, etc. AOP es abrir los objetos encapsulados, descubrir el comportamiento común que afecta a múltiples objetos y encapsularlos en un módulo reutilizable. Este módulo se llama aspecto. La sección extrae y encapsula la lógica que no está relacionada con la lógica del negocio, sino que se llama conjuntamente mediante módulos comerciales, reduciendo el código duplicado en el sistema, reduciendo el acoplamiento entre los módulos y mejorando la mantenibilidad del sistema.
13. La idea central de hibernar
a) La idea central de Hibernate es el mecanismo de mapeo de relaciones de objetos ROM. Es un mapeo entre tablas en operaciones entre objetos. Es decir, la información extraída de la base de datos se encapsulará automáticamente en objetos específicos de acuerdo con los requisitos de mapeo que establece. Por lo tanto, Hibernate es modificar el objeto correspondiente a la fila de datos mapeando la clase de entidad de la tabla de datos.
14. La diferencia entre Struts1 y Struts2
15. Deleción óptima de un personaje en una cadena
16-17. La diferencia entre ArrayList y LinkedList
a) son todas las listas que implementan la interfaz de la lista. ArrayList es una estructura de datos basada en la matriz, y LinkedList es una estructura de datos de lista vinculada. Al obtener elementos específicos, ArrayList es relativamente rápido. Se puede obtener a través de subíndices de matriz, mientras que LinkedList requiere mover el puntero. Al almacenar elementos y eliminar elementos, LinkedList es más eficiente. Solo necesita mover el puntero a una posición especificada para agregarlo o eliminarlo, mientras que ArrayList requiere datos en movimiento.
18. Optimización de la base de datos
a) Seleccione el campo apropiado, como el campo del buzón, puede configurarlo en Char (6) e intentar establecer el campo en NotNull, para que la base de datos no necesite comparar el valor nulo al consultar
b) Use una unión a la izquierda en la consulta en lugar de subconsulta
c) Use la consulta conjunta de unión para crear tablas temporales manualmente
d) enciende las cosas. Cuando se ejecutan múltiples declaraciones en la base de datos, las cosas se remontarán, lo que puede mantener la integridad de la base de datos.
e) Usando claves extranjeras, las cosas pueden mantener la integridad de los datos, pero no puede garantizar la correlación de los datos. El uso de claves extrañas puede garantizar la correlación de los datos
f) Usando índices, la indexación es un método común para mejorar el rendimiento de la base de datos. Permite que el servidor de la base de datos recupere filas específicas mucho más rápido que sin índices, especialmente para máximo, min, orden por consulta, el efecto es más obvio
g) declaraciones de consulta optimizadas. En la mayoría de los casos, el uso de índices puede mejorar la velocidad de la consulta, pero si la declaración SQL se usa de manera inapropiada, el índice no puede reproducir sus características.
19. Optimización del servidor Tomcat (memoria, número de conexiones concurrentes, caché)
a) Optimización de memoria: optimiza principalmente los parámetros de inicio de TomCat. Podemos modificar su memoria máxima en el script de inicio de Tomcat, etc.
b) Optimización del recuento de subprocesos: los parámetros de conexión concurrentes de Tomcat se configuran principalmente en server.xml en el archivo de configuración de Tomcat, como modificar el número mínimo de subprocesos de conexión inactiva, que se utilizan para mejorar el rendimiento del procesamiento del sistema, etc.
c) Optimizar el caché: active la función de compresión y modifique los parámetros. Por ejemplo, el tamaño del contenido de salida comprimido es de 2 kb de forma predeterminada, y puede modificarse adecuadamente.
20. Protocolo HTTP
a) Los métodos de solicitud de uso común incluyen Get and Post
b) La diferencia entre Get y Post: Transferir datos, obtener parámetros de transporte y dirección de acceso, y los usuarios pueden verlo. Esto será inseguro y conducirá a una fuga de información. Post encapsula los campos y los valores correspondientes en una entidad para transmitir, que es invisible para el usuario. Hay restricciones en los parámetros que pasan, mientras que no hay restricciones en la publicación.
21. Protocolo TCP/UDP
22. ¿Cuáles son las interfaces básicas del marco de la clase de colección Java?
a) Interfaz de recopilación, Lista y establece la interfaz de recopilación de implementación, ArrayList y LinkedList, Interfaz de lista de implementos vectoriales, PISTA HERET VECT Vector, Interfaz de mapa, Hashtable e HASHMAP Interfaz MAP de MAP
23. Proceso de carga de clase
a) Al encontrar una nueva clase, primero irá al área del método para encontrar el archivo de clase. Si no se encuentra, irá al disco duro para encontrar el archivo de clase. Después de encontrarlo, lo devolverá y cargará el archivo de clase en el área del método. Cuando la clase se carga, la variable de miembro estático se asignará al área estática del área del método. La variable de miembro no estática se asignará al área no estática. Luego comenzará a inicializar la variable de miembro estático y asignar el valor predeterminado. Después de asignar el valor predeterminado, el valor de visualización se asignará de acuerdo con la ubicación escrita por la variable de miembro estático, y luego se ejecutará el código estático. La carga de clase solo se completa cuando se ejecuta todo el código estático.
24. Creación de objetos
a) Cuando se encuentra una nueva clase, la clase se cargará y el archivo de clase se ubicará
b) Inicializar todas las variables de miembros estáticos, los bloques de código estático también se ejecutarán, y solo se ejecutarán una vez cuando se cargue la clase.
c) Cuando el nuevo objeto, JVM asignará un espacio de almacenamiento lo suficientemente grande en el montón
d) Borre el espacio de almacenamiento, asigne valores predeterminados a todas las variables y asigne todas las referencias de objetos a NULL
e) Dé al campo algunas operaciones de inicialización de acuerdo con la posición de escritura
f) Llamar al método del constructor (sin herencia)
25. Optimización de JVM
a) Establezca parámetros y establezca el número máximo de memoria de JVM
b) Selección de recolector de basura
26. Procesamiento de altos concurrencias
A) Comprenda algunos problemas de altos concurrencias, como cómo garantizar que todos puedan ver el boleto sin comprarlo. Obviamente, el mecanismo de sincronización no se puede usar, porque la sincronización está bloqueada y la sincronización solo puede ser realizada por una persona a la vez. En este momento, se puede usar el mecanismo de bloqueo, y el uso de bloqueo optimista puede resolver este problema. El significado simple del bloqueo optimista es utilizar el control comercial para resolver el problema de concurrencia sin bloquear la tabla, lo que garantiza la legibilidad de los datos y la exclusividad de los datos guardados, asegurando el rendimiento al resolver el problema de datos de lectura sucia causada por la concurrencia.
27. Comprensión de las cosas
a) Las cosas son atómicas, consistentes, persistentes y aisladas
b) Atomicidad: se refiere a volver a rodar en una cosa, ya sea que toda la ejecución sea exitosa o todo falla.
c) Consistencia: las cosas están en consistencia antes y después de la ejecución
d) Persistencia: la operación de múltiples datos en las cosas es permanente
E) Aislamiento: cuando una cosa está operando en datos, otra cosa no puede operar en datos, es decir, múltiples cosas concurrentes se aislan entre sí.
28. Struts Workflow
a) El cliente emite una solicitud al contenedor de servlet
b) La solicitud se llama FilterDisPatcher después de un filtrado de columna, y el FilterDisPatch busca la acción correspondiente a través del ActionMapper.
c) ActionMapper encuentra la acción correspondiente y la devuelve a FilterDispatch, y el despacho otorga los derechos de procesamiento a ActionProxy
d) ActionProxy encuentra la clase de acción correspondiente a través del archivo de configuración
e) ActionProxy crea una instancia de ActionIinVocation para manejar la lógica de negocios
f) Una vez que se procesa la acción, ActionInvocation es responsable de encontrar el resultado de retorno correspondiente de acuerdo con la configuración de Stuts.xml. El resultado suele ser una página JSP.