La Red de Conocimientos Pedagógicos - Currículum vitae - Preguntas de la entrevista sobre Java

Preguntas de la entrevista sobre Java

Un resumen de las preguntas escritas de la entrevista sobre Java

Conocimientos básicos de JAVA

1 ¿Cuáles son las características de la orientación a objetos?

1. Abstracción:

La abstracción es ignorar aquellos aspectos de un tema que no son relevantes para el objetivo actual para prestar más atención a los aspectos que sí son relevantes para el objetivo actual. La abstracción no pretende comprender el problema en su totalidad, sino que sólo selecciona una parte del mismo y omite algunos detalles por el momento. La abstracción incluye dos aspectos, uno es la abstracción de procesos y el otro es la abstracción de datos.

2. Herencia:

La herencia es un modelo jerárquico que conecta clases y permite y fomenta la reutilización de clases. Proporciona una manera de expresar claramente la coherencia. Se puede derivar una nueva clase de un objeto a partir de una clase existente, un proceso llamado herencia de clases. La nueva clase hereda las características de la clase original. La nueva clase se denomina clase derivada (subclase) de la clase original y la clase original se denomina clase base (clase principal) de la nueva clase. Una clase derivada puede heredar métodos y variables de instancia de su clase base, y la clase puede modificar o agregar nuevos métodos para hacerla más adecuada para necesidades especiales.

3. Encapsulación:

La encapsulación consiste en rodear el proceso y los datos, y el acceso a los datos solo puede realizarse a través de la interfaz definida. La informática orientada a objetos comienza con el concepto básico de que el mundo real se puede representar como una serie de objetos encapsulados y totalmente autónomos que acceden a otros objetos a través de una interfaz protegida.

4. Polimorfismo:

El polimorfismo se refiere a permitir que objetos de diferentes tipos respondan al mismo mensaje. El polimorfismo incluye polimorfismo parametrizado y polimorfismo de contención. El lenguaje polimórfico tiene las ventajas de flexibilidad, abstracción, comportamiento compartido y código compartido, y puede resolver bien el problema de las funciones de aplicación con el mismo nombre.

2. ¿Es String el tipo de datos más básico?

Los tipos de datos básicos incluyen byte, int, char, long, float, double, boolean y short.

La clase java.lang.String es de tipo final, por lo que esta clase no se puede heredar ni modificar. Para mejorar la eficiencia y ahorrar espacio, debemos utilizar la clase StringBuffer

3. ¿Cuál es la diferencia entre int e Integer?

Java proporciona dos tipos diferentes: tipos de referencia y tipos primitivos. (o tipos integrados). Int es el tipo de datos primitivo de Java e Integer es la clase de encapsulación proporcionada por Java para int. Java proporciona clases contenedoras para cada tipo primitivo.

Clase de encapsulación de tipo primitivo

booleanBoolean

charCharacter

byteByte

shortShort

intInteger

longLong

floatFloat

doubleDouble

Los tipos de referencia y los tipos primitivos se comportan de manera completamente diferente y tienen una semántica diferente. Los tipos de referencia y los tipos primitivos tienen diferentes características y usos, que incluyen: cuestiones de tamaño y velocidad, en qué tipo de estructura de datos se almacena este tipo, qué se especifica cuando los tipos de referencia y los tipos primitivos se utilizan como datos de instancia de una clase Valor predeterminado. El valor predeterminado para las variables de instancia de referencia de objetos es nulo, mientras que el valor predeterminado para las variables de instancia de tipo primitivo depende de su tipo.

4. La diferencia entre String y StringBuffer

La plataforma JAVA proporciona dos clases: String y StringBuffer, que pueden almacenar y operar cadenas, es decir, datos de caracteres que contienen varios caracteres. La clase String proporciona cadenas numéricamente inmutables. Se modifica la cadena proporcionada por esta clase StringBuffer.

Puede utilizar StringBuffer cuando sepa que los datos de los caracteres van a cambiar. Normalmente, utiliza StringBuffers para construir dinámicamente datos de caracteres.

5. ¿Cuáles son las similitudes y diferencias entre las excepciones de tiempo de ejecución y las excepciones generales?

Las excepciones representan condiciones anormales que pueden ocurrir durante la ejecución del programa. Las excepciones en tiempo de ejecución representan excepciones que pueden encontrarse en el funcionamiento normal de una máquina virtual y son un error operativo común. El compilador de Java requiere que se declaren métodos para generar excepciones que no sean de tiempo de ejecución que puedan ocurrir, pero no es necesario que se declaren para generar excepciones de tiempo de ejecución no detectadas.

6. Cuente el ciclo de vida de Servlet y la diferencia entre Servlet y CGI.

Después de que el servidor crea una instancia del servlet, el contenedor ejecuta su método init y, cuando llega la solicitud, ejecuta su método de servicio. El método de servicio envía automáticamente el método doXXX (doGet, doPost) correspondiente. la solicitud, etc., cuando el servidor decide Cuando se destruye la instancia, se llama a su método de destrucción.

La diferencia con cgi es que el servlet está en el proceso del servidor y ejecuta su método de servicio a través de subprocesos múltiples. Una instancia puede atender múltiples solicitudes y su instancia generalmente no se destruye, mientras que CGI no. Destruya cada instancia. Cada solicitud genera un nuevo proceso y el servicio se destruye una vez completado, por lo que la eficiencia es menor que la del servlet.

7. Cuéntanos sobre el rendimiento del almacenamiento y las características de ArrayList, Vector y LinkedList.

Tanto ArrayList como Vector usan matrices para almacenar datos. La cantidad de elementos en esta matriz es. más grandes que los datos almacenados reales para aumentar e insertar elementos, ambos permiten que los elementos se indexen directamente por número de serie, pero la inserción de elementos implica operaciones de memoria, como mover elementos de la matriz, por lo que la indexación de datos es rápida pero la inserción de datos es lenta. Por lo general, funciona mejor que ArrayList porque usa el método sincronizado (seguridad de subprocesos) Pobre, mientras que LinkedList usa una lista doblemente vinculada para el almacenamiento. La indexación de datos por número de serie requiere un recorrido hacia adelante o hacia atrás. elementos antes y después de este elemento, por lo que la velocidad de inserción es más rápida.

8. ¿En qué tecnologías se basa EJB? Y diga la diferencia entre SessionBean y EntityBean, y la diferencia entre StatefulBean y StatelessBean.

EJB incluye Session Bean, Entity Bean, Message Driven Bean y se implementa en base a JNDI, RMI, JAT y otras tecnologías.

SessionBean se utiliza en aplicaciones J2EE para completar algunas operaciones comerciales del lado del servidor, como acceder a bases de datos y llamar a otros componentes EJB. EntityBean se utiliza para representar datos utilizados en sistemas de aplicaciones.

Para los clientes, SessionBean es un objeto no persistente que implementa cierta lógica empresarial que se ejecuta en el servidor.

Para el cliente, un EntityBean es un objeto persistente que representa una vista de objeto de una entidad almacenada en un almacenamiento persistente o una entidad implementada por una aplicación empresarial existente.

Session Bean se puede subdividir en Stateful Session Bean y Stateless Session Bean. Ambos tipos de Session Bean pueden ejecutar la lógica del sistema en métodos. La diferencia es que Stateful Session Bean puede registrar las llamadas. , por lo que, en términos generales, un usuario tendrá una entidad Stateful Session Bean correspondiente.

Aunque el Stateless Session Bean también es un componente lógico, no es responsable de registrar el estado del usuario. Es decir, cuando el usuario llama al Stateless Session Bean, el contenedor EJB no buscará una entidad específica del Stateless Session Bean para ejecutarlo. método. En otras palabras, es muy probable que cuando varios usuarios ejecuten los métodos de un Stateless Session Bean, se ejecute la Instancia del mismo bean. Desde una perspectiva de memoria, en comparación con Stateless Session Bean, Stateful Session Bean consume más memoria del servidor J2EE. Sin embargo, la ventaja de Stateful Session Bean es que puede mantener el estado del usuario.

9. La diferencia entre Colección y Colecciones.

Collection es la interfaz superior de la clase de colección, y las interfaces heredadas de ella incluyen principalmente Set y List.

Collections es una clase auxiliar para la clase de colección, que proporciona una serie. de implementaciones de métodos estáticos Operaciones de búsqueda, clasificación, seguridad para subprocesos y otras en varias colecciones.

10. La diferencia entre amp; y amp;.

amp; es un operador bit a bit, que representa la operación AND bit a bit, amp es un operador lógico, que representa AND lógico (y).

11. La diferencia entre HashMap y Hashtable.

HashMap es una implementación ligera de Hashtable (implementación no segura para subprocesos). Ambas completan la interfaz Map. La principal diferencia es que HashMap permite valores de clave (clave) vacías (nulas). Para la seguridad sin subprocesos, la eficiencia puede ser mayor que la de Hashtable.

HashMap permite utilizar null como clave o valor de una entrada, pero Hashtable no.

HashMap elimina el método contiene de Hashtable y lo cambia a contiene valor y contiene clave. Porque el método contiene es fácilmente engañoso.

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

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 proporcionarle sincronización externa.

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.

12. La diferencia entre final, finalmente y finalizar.

Final se utiliza para declarar propiedades, métodos y clases, lo que significa respectivamente que las propiedades son inmutables, los métodos no se pueden anular y las clases no se pueden heredar.

Finalmente es parte de la estructura de la declaración de manejo de excepciones, lo que significa que siempre se ejecuta.

Finalize es un método de la clase Object. Este método del objeto reciclado se llamará cuando se ejecute el recolector de basura. Este método se puede anular para proporcionar otro reciclaje de recursos durante la recolección de basura, como cerrar archivos. , etc.

13. ¿Cuál es la diferencia entre sleep() y wait()?

sleep es un método de la clase de hilo (Thread), que hace que este hilo suspenda la ejecución durante un tiempo. tiempo especificado y brinda oportunidades de ejecución a otros subprocesos, pero el estado de monitoreo aún se mantiene y se restaurará automáticamente después del tiempo de espera. Llamar al modo de suspensión no libera el bloqueo del objeto.

Wait es un método de la clase Object. Llamar al método de espera en este objeto hace que este hilo abandone el bloqueo del objeto y entre al grupo de bloqueo de espera esperando este objeto Solo después del método de notificación (o. notifyAll) se emite para este objeto, este hilo Antes de ingresar al grupo de bloqueo de objetos, prepárese para obtener el bloqueo de objetos e ingresar al estado de ejecución.

14. 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 sobrecargado puede cambiar el tipo de valor de retorno.

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

El error representa un problema grave cuando la recuperación no es imposible sino difícil. Por ejemplo, desbordamiento de memoria. Es imposible esperar que un programa pueda manejar tal situación.

La 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.

16. ¿Cuáles son las similitudes y diferencias entre sincronización y asincronía, y bajo qué circunstancias deben usarse respectivamente? Dar ejemplos.

Si los datos se compartirán entre hilos. Por ejemplo, los datos que se escriben pueden ser leídos por otro subproceso en el futuro, o los datos que se leen pueden haber sido escritos por otro subproceso. Entonces, estos datos son datos compartidos y se debe acceder a ellos de forma sincrónica.

Cuando una aplicación llama a un método sobre un objeto que tarda mucho en ejecutarse y no quiere que el programa espere el retorno del método, debe utilizar programación asincrónica y, en muchos casos, utilizar Un enfoque asincrónico tiende a ser más eficiente.

17. ¿Cuál es la diferencia entre clase abstracta e interfaz?

Una clase que declara la existencia de un método sin implementarlo se llama clase abstracta (clase abstracta), que es se usa para crear una clase A que incorpora algún comportamiento básico y declara un método para la clase, 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 conozcan 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 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 entrará en vigor. 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.

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

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

El montón es un elemento componente de la pila

19. La diferencia entre reenviar y redireccionar

Reenviar es cuando el servidor solicita recursos y el servidor accede directamente. la URL de la dirección de destino. El contenido de la respuesta de esa URL se lee y luego se envía al navegador. El navegador no sabe de dónde proviene el contenido enviado por el servidor, por lo que la dirección original todavía está en su barra de direcciones.

Redireccionar significa que el servidor envía un código de estado basado en la lógica para indicarle al navegador que vuelva a solicitar esa dirección. En términos generales, el navegador volverá a solicitarla utilizando todos los parámetros que acaba de solicitar, por lo tanto, sesión y solicitud. Se pueden utilizar parámetros Get.

20. ¿Cuál es la diferencia entre EJB y JAVA BEAN?

Los Java Beans son componentes reutilizables. No existen especificaciones estrictas para los Java Beans. En teoría, cualquier clase de Java puede ser un Bean. Pero generalmente, dado que los Java Beans son creados por contenedores (como Tomcat), los Java Beans deberían tener un constructor sin parámetros. Además, los Java Beans generalmente también implementan la interfaz Serializable para lograr la persistencia del Bean. Java Bean es en realidad equivalente a un componente COM local en proceso en el modelo COM de Microsoft. No se puede acceder a él entre procesos. Enterprise Java Bean es equivalente a DCOM, que es un componente distribuido. Se basa en la tecnología de invocación de método remoto (RMI) de Java, por lo que se puede acceder a EJB de forma remota (entre procesos, entre computadoras). Pero EJB debe implementarse en contenedores como Webspere y WebLogic. Los clientes EJB nunca acceden directamente a los componentes reales de EJB, sino que acceden a ellos a través de sus contenedores. El contenedor EJB es un proxy para los componentes EJB, y el contenedor crea y administra los componentes EJB. Los clientes acceden a componentes EJB reales a través del contenedor.

21. La diferencia entre clase anidada estática y clase interna.

La clase anidada estática es una clase interna declarada como estática, de la que se pueden crear instancias independientemente de las instancias de clases externas. Por lo general, es necesario crear una instancia de las clases internas después de crear una instancia de la clase externa.

22. ¿Cuál es la diferencia entre INCLUDE dinámico e INCLUDE estático en JSP?

Dynamic INCLUDE se implementa usando jsp: include action; jsp: include page="included.jsp" flux="true" /gt Siempre verificará los cambios en los archivos incluidos, adecuado para Contiene páginas dinámicas; y puede tomar parámetros.

El INCLUDE estático se implementa con pseudocódigo de inclusión y no se verificarán los cambios en los archivos incluidos. Es adecuado para incluir páginas estáticaslt @ include file="included.htm" gt; > 23. Cuándo utilizar afirmar.

La aserción es un método de depuración común en el desarrollo de software y muchos lenguajes de desarrollo admiten este mecanismo.

En la implementación, la aserción es una declaración en el programa que verifica una expresión booleana. Un programa correcto debe garantizar que el valor de la expresión booleana sea verdadero; si el valor es falso, el programa ya está en un estado incorrecto. dar una advertencia o salir. En términos generales, la aserción se utiliza para garantizar la corrección más básica y crítica del programa. La verificación de afirmaciones generalmente se activa durante el desarrollo y las pruebas. Para mejorar el rendimiento, la verificación de aserciones generalmente se desactiva después del lanzamiento del software.

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

Dos

29. /p>

Las palabras reservadas en Java no se utilizan actualmente en Java.

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

Para iniciar un hilo, necesita llamar al método start() para hacer que sea virtual. procesador representado por el subproceso 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.

32. ¿Qué son los servidores de aplicaciones?

BEA WebLogic Server, IBM WebSphere Application Server, Oracle9i Application Server, jBoss, Tomcat

34. ¿Pueden las interfaces heredar interfaces? ¿Las clases abstractas pueden implementar interfaces? ¿Se pueden heredar las clases de entidad?

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

35. ¿List, Set y Map heredan de la interfaz Collection?

List, Set, pero Map no

38. ¿Método length()? ¿String tiene el método length()?

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

39. Los elementos del conjunto no se pueden repetir, entonces, ¿qué método se utiliza para distinguir si están repetidos? ¿Deberías usar == o igual ()? >

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 el valor de referencia apunta al mismo objeto. se anula en la clase para devolver un valor verdadero cuando los contenidos y tipos de los dos se separan. los objetos coinciden.

40. ¿Se puede anular el Constructor?

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

41. ¿Se puede heredar la clase String?

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

42. ¿Puede el conmutador operar en byte, longitud y cadena?

En el conmutador (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.

43. Si hay una declaración de retorno en el intento {}, ¿se ejecutará el código finalmente {} inmediatamente después del intento? ¿Cuándo se ejecutará, antes o después del retorno? p> se ejecutará antes del retorno.

44. Pregunta de programación: ¿Utiliza el método más eficiente para calcular cuánto es 2 por 8?

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

No, tienen el mismo código hash.

46. Cuando un objeto se pasa como parámetro a un método, el método puede cambiar las propiedades del objeto y devolver los resultados modificados. Entonces, ¿se pasa por valor o por referencia?

se pasa por valor. El lenguaje de programación Java solo tiene parámetros de valor pasado. 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.

47. 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 ingresarse mediante. Accede un hilo.

53. ¿Qué clases de colección conoces? ¿Método principal?

Las clases de colección más utilizadas son Lista y Mapa. Las implementaciones específicas de List incluyen ArrayList y Vector, que son listas de tamaño variable que son más adecuadas para construir, almacenar y manipular listas de elementos de cualquier tipo de objeto. La lista es adecuada para acceder a elementos por índice numérico.

Map proporciona un método más general para almacenar elementos. La clase de colección Map se utiliza para almacenar pares de elementos (llamados "claves" y "valores"), donde cada clave se asigna a un valor.

55. ¿Se puede almacenar un carácter chino en una variable char?

Se puede definir como un carácter chino porque Java usa codificación Unicode y un char ocupa una sección de 16 caracteres. , por lo que no hay problema en poner un carácter chino.

56. ¿Cuáles son las diversas formas de implementar subprocesos múltiples?

Más Hay dos formas de implementar subprocesos, a saber, heredar la clase Thread e implementar la interfaz Runnable

Hay dos formas de implementar la sincronización, a saber, sincronizar, esperar y notificar

57. en Objetos y métodos.

la solicitud representa el objeto HttpServletRequest. Contiene información sobre la solicitud del navegador y proporciona varios métodos útiles para obtener cookies, encabezados y datos de sesión.

la respuesta representa el objeto HttpServletResponse y proporciona varios métodos para configurar la respuesta enviada al navegador (como cookies, información de encabezado, etc.)

El objeto de salida es javax.jsp Una instancia de JspWriter y proporciona varios métodos que puede utilizar para enviar resultados al navegador.

pageContext representa un objeto javax.servlet.jsp.PageContext.

Es una API que se utiliza para facilitar el acceso a diversos ámbitos de espacios de nombres y objetos relacionados con servlets, y envuelve métodos de funciones comunes relacionadas con servlets.

la sesión representa un objeto javax.servlet.http.HttpSession solicitado. La sesión puede almacenar información de estado del usuario.

La aplicación representa un objeto javax.servle.ServletContext. Esto ayuda a encontrar información sobre el motor de servlet y su entorno.

config representa un objeto javax.servlet.ServletConfig. Este objeto se utiliza para acceder a los parámetros de inicialización de la instancia del servlet.

La página representa una instancia de servlet generada a partir de esta página

58 El concepto básico de subprocesos, el estado básico de los subprocesos y la relación entre estados

El subproceso se refiere Durante la ejecución del programa, hay una unidad de ejecución que puede ejecutar el código del programa. Cada programa tiene al menos un hilo, que es el programa en sí.

Los subprocesos en Java tienen cuatro estados: en ejecución, listo, suspendido y finalizado.

60. ¿En qué circunstancias se llaman doGet() y doPost()?

Cuando el atributo del método en la etiqueta del formulario en la página Jsp es get, se llama a doGet(), y cuando es post, se llama a doPost().

61. El ciclo de vida del servlet

El contenedor web carga el servlet y comienza el ciclo de vida. Inicialice el servlet llamando al método init() del servlet. Esto se logra llamando al método service(), y se llaman diferentes métodos do***() según diferentes solicitudes. Para finalizar el servicio, el contenedor web llama al método destroy() del servlet.

62. Cómo implementar el modo de subproceso único de servlet

lt; @ page isThreadSafe="false"gt

63. entre páginas

solicitud, sesión, aplicación, cookie, etc.

64. ¿Cuáles son las similitudes y diferencias entre JSP y Servlet, y cuál es la conexión entre ellos?

JSP es una extensión de la tecnología Servlet. Es esencialmente una forma simple de Servlet, con más énfasis en la expresión externa de la aplicación. Una vez compilado JSP, es "similar a un servlet". La principal diferencia entre Servlet y JSP es que la lógica de aplicación de Servlet está en el archivo Java y está completamente separada del HTML en la capa de presentación. En el caso de JSP, Java y HTML se pueden combinar en un archivo con extensión .jsp. JSP se centra en vistas y los servlets se utilizan principalmente para la lógica de control.

65. Cuatro tecnologías de seguimiento de sesiones

Alcance de la sesión Descripción de la página ServletsJSP

La página representa los objetos y atributos relacionados con una página. Una página está representada por una clase de servlet Java compilada (que puede tener directivas de inclusión, pero no acciones de inclusión). Esto incluye tanto servlets como páginas JSP compiladas en servlets.

solicitud es un objeto y atributo que representa una solicitud emitida por un cliente web.

Una solicitud puede abarcar varias páginas e involucrar múltiples componentes web (debido a directivas de reenvío y acciones de inclusión).

la sesión es un objeto que representa una experiencia de usuario para una determinada propiedad y cliente web. Una sesión web puede abarcar, y a menudo lo hará, varias solicitudes de clientes.

La aplicación representa los objetos y propiedades relacionados con toda la aplicación web.

Este es esencialmente un alcance global que abarca toda la aplicación web, incluidas múltiples páginas, solicitudes y sesiones

66. El método principal del objeto Request:

setAttribute(String name, Objeto): establece el valor del parámetro de la solicitud denominada nombre

getAttribute(String name): devuelve el valor del atributo especificado por nombre

getAttributeNames(): devuelve los nombres de todos los atributos de la colección de objetos de solicitud, el resultado es una instancia de enumeración

getCookies(): devuelve todos los objetos Cookie del cliente, el resultado es una matriz de cookies

getCharacterEncoding(): devuelve el carácter método de codificación en la solicitud

getContentLength(): devuelve la longitud del cuerpo solicitado

getHeader(String name): obtiene la información del encabezado del archivo definido por el protocolo HTTP

getHeaders(String name): devuelve todos los valores del encabezado de solicitud con el nombre especificado y el resultado es una instancia de enumeración

getHeaderNames(): devuelve los nombres de todos los encabezados de solicitud, y el resultado es una instancia de enumeración

getInputStream(): devuelve el flujo de entrada de la solicitud, utilizado para obtener los datos de la solicitud

getMethod(): obtiene el método para cliente para transmitir datos al servidor

getParameter(String name): obtiene los valores de los parámetros especificados por el nombre enviado por el cliente al servidor

getParameterNames(): obtiene los nombres de todos los parámetros enviados por el cliente al servidor, el resultado es una instancia de enumeración

getParameterValues(String name): obtiene todos los valores de los parámetros especificados por nombre

getProtocol() : Obtiene el nombre del protocolo utilizado por el cliente para transmitir datos al servidor

getQueryString() : Obtiene la cadena de consulta

getRequestURI(): Obtiene la dirección del cliente que emitió el cadena de solicitud

getRemoteAddr(): obtiene la dirección IP del cliente

getRemoteHost( ): obtiene el nombre del cliente

getSession([creación booleana]): Devuelve la sesión relacionada con la solicitud

getServerName(): obtiene el nombre del servidor

getServletPath( ): obtiene la ruta al archivo de script solicitado por el cliente

getServerPort(): Obtiene el número de puerto del servidor

removeAttribute(String name): Elimina un atributo en la solicitud

67. o un marco?

J2EE en sí es un estándar, una plataforma estándar proporcionada para el desarrollo de aplicaciones empresariales distribuidas.

J2EE también es un marco que incluye JDBC, JNDI, RMI, JMS, EJB, JTA y otras tecnologías.

68. En el proceso de desarrollo de aplicaciones web, a menudo nos encontramos con caracteres que se generan en una determinada codificación, como iso8859-1, etc. ¿Cómo generar una cadena en una determinada codificación?

Traducción de cadena pública (String str) {

String tempStr = ""

prueba {

tempStr = new String(str); .getBytes("ISO-8859-1"), "GBK");

tempStr = tempStr.trim();

}

catch (Excepción). e) {

System.err.println(e.getMessage());

}

return tempStr

}

69. Describe brevemente la diferencia entre operaciones lógicas (amp;, |, ^) y operaciones condicionales (amp; amp;, ||).

Las principales diferencias son dos puntos: a. Las operaciones condicionales solo pueden operar en tipos booleanos, mientras que las operaciones lógicas no solo pueden operar en tipos booleanos, sino también en tipos numéricos.

76. Ciclo de vida de instancias de Bean

Para el Bean de sesión sin estado, el Bean de entidad y el Bean controlado por mensajes, generalmente existe una administración del grupo de buffer, mientras que para el Bean de entidad y el Bean de sesión con estado, existe la administración de caché, que generalmente incluye la creación de instancias. , configuración del contexto y creación de objetos EJB (crear), invocación de métodos comerciales, eliminación y otros procesos. Para los Beans administrados por el grupo de búfer, la instancia no se borra de la memoria después de la creación, sino que se utiliza el mecanismo de programación del grupo de búfer. reutilice continuamente la instancia. Para los Beans administrados por el caché, la instancia se activa mediante Y el mecanismo de desactivación mantiene el estado del bean y limita el número de instancias en la memoria.