Preguntas básicas sobre java android.
1. Abstracción:
La abstracción se refiere a ignorar los aspectos del tema que no están relacionados con el objetivo actual para poder pagar más. Atención plena a los aspectos relacionados con el aspecto objetivo actual.
La abstracción no se trata de comprender el problema completo, sino simplemente seleccionar una parte del mismo y no utilizar ciertos 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 asocia clases y permite y fomenta la reutilización de clases. Proporciona una forma de expresar la bondad con claridad.
En un proceso llamado herencia de clases, se puede derivar una nueva clase de objeto a partir de una clase existente. La nueva clase hereda las características de la clase original.
La nueva clase se llama clase derivada (subclase) de la clase original, y la clase original se llama clase base (clase padre) de la nueva. clase. Una clase derivada puede heredar métodos y variables de instancia
de una clase base, y la clase puede modificar o agregar nuevos métodos para adaptarla mejor a necesidades específicas.
3. Encapsulación:
La encapsulación es el cierre de procesos y datos, de modo que solo se pueda acceder a los datos a través de la interfaz definida. La informática orientada a objetos comienza con el concepto básico de que el mundo real puede representarse como una serie de objetos encapsulados totalmente autónomos que acceden a otros objetos a través de interfaces protegidas.
4. Polimorfismo:
El polimorfismo se refiere a permitir que objetos de diferentes clases 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, intercambio completo de comportamiento y código, y puede resolver bien el problema de las funciones de aplicación con el mismo nombre.
------------------------------------------- -------------------------------------------------- -----------------------
2. ¿Es la cadena 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 un tipo final, por lo que no puedes heredarla ni modificarla. Para ahorrar espacio y mejorar la eficiencia
, debemos usar 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 una clase contenedora 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é estructura de datos se almacena el tipo y cuándo se utilizan los tipos de referencia y primitivos como datos de instancia para una clase. valor especificado cuando
. El valor predeterminado de una variable de instancia de referencia de objeto es nulo, mientras que el valor predeterminado de una variable de instancia de tipo primitivo depende de su tipo.
4. La diferencia entre String, StringBuffer y StringBuilder
La plataforma JAVA proporciona dos clases: pueden almacenar y operar cadenas, es decir, contener múltiples caracteres
datos. La clase String proporciona cadenas con valores inmutables. La clase StringBuffer proporciona cadenas modificables. Normalmente, se utiliza un
StringBuffer para crear 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 de tiempo de ejecución representan excepciones que se pueden encontrar durante el funcionamiento normal de una máquina virtual.
Este es un error de tiempo de ejecución común. El compilador de Java requiere que los métodos declaren que arrojan excepciones que no son de tiempo de ejecución que puedan ocurrir, pero no requiere que declaren que arrojan excepciones de tiempo de ejecución no detectadas.
------------------------------------------- ----- --------------------------------------------- ----- -----------------------
6. Explique 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 se programa automáticamente para ejecutarse. el método doXXX correspondiente a la solicitud (doGet, doPost), etc., cuando el servidor decide destruir la instancia, se llama a su método de destrucción.
La diferencia entre cgi y servlet es que el servlet está en el proceso del servidor. Ejecuta el método de servicio de forma multiproceso. Una instancia puede atender múltiples solicitudes
y sus instancias. generalmente no se destruirá; CGI generará un nuevo proceso para cada solicitud y destruirá el proceso una vez que se complete el servicio, por lo que es menos eficiente que el servlet.
------------------------------------------- ----- --------------------------------------------- ----- -----------------------
7. Indíquenos el rendimiento del almacenamiento y las características de ArrayList, Vector y LinkedList
ArrayList y Vector usan matrices para almacenar datos. Esta matriz tiene más elementos que los datos almacenados reales para agregar e insertar elementos.
Ambos permiten indexar elementos. directamente por número de serie, pero la inserción de elementos implica operaciones de memoria, como mover elementos de una matriz, por lo que la indexación de datos es rápida, mientras que la inserción
datos es lenta.
Debido al uso de métodos de sincronización (seguridad de subprocesos), el rendimiento de Vector suele ser peor que el de ArrayList, mientras que LinkedList
utiliza una lista doblemente vinculada para implementar el almacenamiento. La indexación de datos por número de serie requiere un recorrido hacia adelante o hacia atrás. , pero insertar datos solo requiere registrar los datos actuales y los datos se almacenan en la matriz. Pero al insertar datos, solo es necesario registrar los elementos
anteriores de este elemento, por lo que la velocidad de inserción es más rápida.
------------------------------------------- ----- --------------------------------------------- ----- -----------------------
8. ¿En qué tecnología se basa EJB? Y hable sobre las diferencias entre SessionBean y EntityBean, StatefulBean y StatelessBean.
EJB incluye beans de sesión, beans de entidad y beans controlados por mensajes, y se implementa en base a tecnologías como JNDI, RMI y JAT.
En las aplicaciones J2EE, los beans de sesión se utilizan para completar ciertas operaciones comerciales del lado del servidor, como acceder a bases de datos y llamar a otros componentes EJB.
EntityBean se utiliza para representar los datos utilizados en la aplicación.
Para el cliente, 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 la memoria persistente o una entidad implementada por
una aplicación empresarial existente.
Los beans de sesión se pueden subdividir en beans de sesión con estado y beans de sesión sin estado. Ambos beans de sesión pueden ejecutar la lógica del sistema en métodos, pero los beans de sesión con estado pueden registrar el estado de la persona que llama. La diferencia entre los dos es que un bean de sesión con estado puede registrar el estado de la persona que llama, por lo que normalmente
el usuario tendrá una entidad de bean de sesión con estado correspondiente. Cuando un usuario llama a un bean de sesión sin estado, el contenedor EJB
no busca una entidad de bean de sesión sin estado específica para ejecutar el método. En otras palabras, es probable que varios usuarios utilicen el mismo bean para ejecutar un método particular de
Stateless Session Bean
, y estos métodos serán ejecutados por diferentes entidades. En otras palabras, cuando un bean de sesión sin estado en particular es la misma instancia de bean, es probable que varios usuarios ejecuten los métodos del bean. En términos de memoria,
los beans de sesión con estado consumen más memoria del servidor J2EE que los beans de sesión sin estado,
pero la ventaja de los beans de sesión con estado es que pueden mantener el estado del usuario. Mantiene el estado del usuario.
------------------------------------------- ----- --------------------------------------------- ----- -----------------------
9. La diferencia entre conjuntos y colecciones.
Collection es la interfaz principal de la clase de colección, y las interfaces principales heredadas de ella son Set y List.
Colecciones es una clase auxiliar de la clase de colección. Proporciona una serie de métodos estáticos para implementar búsqueda, clasificación, seguridad de subprocesos, etc., y es adecuada para varias colecciones.
------------------------------------------- -------------------------------------------------- -----------------------
10. La diferencia entre amp y amp;.
amp; es un operador bit a bit, que representa operaciones bit a bit, y amp es un operador lógico, que representa suma lógica (y).
------------------------------------------- -------------------------------------------------- -----------------------
11. La diferencia entre HashMap y Hashtable.
HashMap es una implementación ligera (implementación no segura para subprocesos) de Hashtable. Ambos completan la interfaz Map. La principal diferencia es que HashMap permite valores de clave vacíos (nulos) debido a la seguridad sin subprocesos. , eficiencia Probablemente mayor que Hashtable.
HashMap permite null como clave o valor de una entrada, mientras que Hashtable no.
HashMap elimina el método contiene de Hashtable y lo reemplaza con contiene valor y contiene clave porque el método contiene es engañoso.
Hashtable hereda de la clase Dictionary, mientras que HashMap es una implementación de la interfaz Map introducida en Java 1.2.
La mayor diferencia es que los métodos de Hashtable son sincrónicos, mientras que los de HashMap no lo son. Cuando varios subprocesos acceden a una Hashtable, no necesitan sincronizar sus métodos ellos mismos y HashMap debe proporcionarles sincronización externa.
Hashtable y HashMap utilizan aproximadamente el mismo algoritmo hash/hashing, por lo que no habrá mucha 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 que las propiedades son inmutables, los métodos no se pueden sobrecargar y las clases no se pueden heredar, respectivamente.
Finalmente es parte de la estructura de la declaración de manejo de excepciones, lo que indica que la declaración siempre se ejecuta.
finalize es un método de la clase de objeto. Cuando el recolector de basura ejecuta este método, se llamará en el objeto reciclado. Este método se puede sobrecargar para proporcionar otros recursos de recuperación durante la recolección de basura. cerrando el archivo.
------------------------------------------- -------------------------------------------------- -----------------------
13. ¿Cuál es la diferencia entre dormir() y esperar()?
dormir es un método de la clase de subproceso, que hará que el subproceso suspenda la ejecución dentro de un tiempo específico, dando así la oportunidad de ejecución a otros subprocesos, pero el estado de monitoreo aún se conservará y se actualizará automáticamente. ejecutado cuando se acabe el tiempo de recuperación. Llamar al modo de suspensión no libera el bloqueo del objeto.
Esperar es un método de la clase de objeto. Llamar a esperar en el objeto hará que el subproceso abandone el bloqueo del objeto y entre al grupo de bloqueo de espera para esperar el objeto. Solo después de emitir el método de notificación (o notifyAll) en el objeto, el subproceso ingresará al grupo de bloqueo de objetos y. prepárese para adquirir el bloqueo del objeto y entrar en estado de operación.
------------------------------------------- -------------------------------------------------- -----------------------
14. La diferencia entre sobrecargar y sobrescribir. ¿Pueden los métodos sobrecargados 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 forma de polimorfismo entre las clases principal y secundaria, mientras que la sobrecarga es una forma de polimorfismo dentro de una clase. Si un método se define en una clase secundaria con el mismo nombre y parámetros que la clase principal, decimos que el método está sobrecargado. Cuando un objeto de una subclase usa este método, se llamará a la definición de la subclase y se "protegerá" la definición de la clase principal. Si una clase define varios métodos con el mismo nombre, pero el número de parámetros o tipos de parámetros de estos métodos es diferente, esto se denomina sobrecarga de métodos. El método sobrecargado puede cambiar el tipo del valor de retorno.
------------------------------------------- -------------------------------------------------- -----------------------
15. ¿Cuál es la diferencia entre errores y excepciones?
El error representa un problema grave que se produce en una situación que no es irrecuperable pero sí de difícil recuperación. Por ejemplo, desbordamiento de memoria. Es imposible esperar que el programa maneje esta situación.
La excepción indica un problema de diseño o implementación. Es decir, representa una situación que no ocurre cuando el programa se ejecuta normalmente.
------------------------------------------- -------------------------------------------------- -----------------------
16. ¿Cuáles son las similitudes y diferencias entre sincrónico y asincrónico? Por favor dé un ejemplo.
Si los datos estarán entre hilos ****. Por ejemplo, los datos que se escriben pueden ser leídos por otro hilo más adelante, o los datos que se leen pueden haber sido escritos por otro hilo, entonces estos datos son datos compartidos y se debe acceder a ellos sincrónicamente.
La programación asincrónica debe usarse cuando una aplicación llama a un método en un objeto que tarda mucho en ejecutarse y no quiere que el programa espere a que el método regrese; en muchos casos, se utiliza un enfoque asincrónico; muchas veces más eficiente.
------------------------------------------- ----- --------------------------------------------- ----- -----------------------
17. ¿Cuál es la diferencia entre clases e interfaces abstractas?
Una clase que declara la existencia de un método sin implementar el método se llama clase abstracta cuando desea crear una clase que incorpora algún comportamiento básico y declara un método para la clase, pero no puede implementarlo. en la clase clase, se utilizará esta clase. No se pueden crear instancias de clases abstractas. Pero puedes crear una variable de tipo clase abstracta y dejar que apunte a una instancia de una subclase concreta. Las subclases de una clase abstracta proporcionan implementaciones para todos los métodos abstractos de la clase principal; de lo contrario, también son clases abstractas. En cambio, los métodos se implementan en subclases. Otras clases que comprendan su comportamiento pueden implementar estos métodos en esta clase.
La interfaz es una variante de la clase abstracta. En una interfaz, todos los métodos son abstractos. La herencia múltiple se logra implementando esta interfaz. Todos los métodos de la interfaz son abstractos y no tienen cuerpo de programa. Las interfaces solo pueden definir variables miembro finales estáticas. La implementación de una interfaz es similar a una subclase, pero la clase de implementación no puede heredar el comportamiento definido por la interfaz. Cuando una clase implementa una interfaz particular, define (es decir, le da un cuerpo de programa) todos los métodos de esa interfaz. Luego, la clase puede llamar a los métodos de la interfaz en cualquier objeto que implemente la interfaz. Debido a la existencia de clases abstractas, permite el uso de nombres de interfaces como tipos de variables de referencia. Se aplicará el enlace dinámico habitual. 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?
El montón 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 el elemento componente de la pila
--------------------- ----- --------------------------------------------- ----- -------------------------- ----------
19. Diferencia entre reenvío y redirección
El reenvío es una solicitud de recurso emitida desde el servidor. El servidor accede directamente a la URL de la dirección de destino, lee el contenido de la respuesta de la URL y luego envía el contenido al navegador.
El navegador no sabe de dónde proviene el contenido enviado por el servidor, por lo que no sabe que el contenido fue enviado al navegador. El navegador no sabe desde dónde envió el servidor el contenido, por lo que aún conserva la dirección original en su barra de direcciones.
La redirección es la lógica del servidor. Envía un código de estado para indicarle al navegador que vuelva a solicitar la dirección. En circunstancias normales, el navegador volverá a solicitar todas las
. Los parámetros recién solicitados juntos, por lo que se pueden obtener los parámetros de sesión y solicitud.
------------------------------------------- ----- --------------------------------------------- ----- -----------------------
20. ¿Cuál es la diferencia entre EJB y JAVA BEAN?
Java Bean es un componente reutilizable. No existe una especificación estricta para Java Bean. En teoría, cualquier clase de Java puede ser un Bean.
Pero normalmente, dado que los Java Beans se crean mediante contenedores (como Tomcat), los Java Beans deberían tener un constructor sin parámetros.
Por lo general, los Java Beans también implementan la interfaz Serializable para lograr la persistencia del Bean.
Un 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.
Los Enterprise Java Beans son equivalentes a DCOM (Distributed Components). Componentes distribuidos. Se basa en la tecnología de invocación de método remoto (RMI) de Java,
para que se pueda acceder a los EJB de forma remota (a través de procesos y computadoras).
Los clientes EJB nunca acceden a componentes EJB reales directamente, sino a través de sus contenedores. Un contenedor EJB es un proxy para los componentes EJB y lo crea y gestiona el contenedor.
Los clientes acceden a componentes EJB reales a través del contenedor.