Preguntas de la entrevista sobre desarrollo de Java
1. ¿Cuáles son las características de la orientación a objetos?
Respuesta: Las características de la orientación a objetos incluyen principalmente los siguientes aspectos:
-Abstracción: La abstracción es el proceso de resumir las características únicas de un tipo de objeto para construir una clase, incluyendo tanto la abstracción de datos como la abstracción de comportamiento. La abstracción solo se centra en las propiedades y comportamientos de los objetos, pero no en los detalles de estos comportamientos.
- Herencia: La herencia es el proceso de creación de una nueva clase obteniendo información de herencia de una clase existente. La clase que proporciona información de herencia se denomina clase principal (superclase, clase base); la clase que obtiene información de herencia se denomina subclase (clase derivada). La herencia le da al sistema de software cambiante un cierto grado de continuidad. Al mismo tiempo, la herencia también es un medio importante para encapsular factores variables en el programa (si no lo comprende, lea "Java y patrones" o "del Dr. Yan Hong). Patrones de diseño" para más información) modo puente).
- Encapsulación: generalmente se cree que la encapsulación es la unión de datos y métodos de operación de datos, y el acceso a los datos solo puede realizarse a través de interfaces definidas. La esencia de la orientación a objetos es representar el mundo real como una serie de objetos cerrados y completamente autónomos. El método que escribimos en una clase es una encapsulación de detalles de implementación; la forma en que escribimos una clase es una encapsulación de datos y operaciones de datos. Se puede decir que la encapsulación consiste en ocultar todo lo que se puede ocultar y solo proporcionar la interfaz de programación más simple al mundo exterior (puede pensar en la diferencia entre las lavadoras comunes y las lavadoras completamente automáticas. Es obvio que las lavadoras completamente automáticas están mejor empaquetados y, por lo tanto, son más fáciles de manejar; los teléfonos inteligentes también están bien empaquetados, porque todo se puede hacer con sólo unos pocos botones).
- Polimorfismo: El polimorfismo permite que objetos de distintos subtipos respondan de forma diferente a un mismo mensaje. En pocas palabras, se llama al mismo método con la misma referencia de objeto pero se hacen cosas diferentes. El polimorfismo se divide en polimorfismo en tiempo de compilación y polimorfismo en tiempo de ejecución. Si los métodos de un objeto se consideran servicios proporcionados por el objeto al mundo exterior, entonces el polimorfismo en tiempo de ejecución se puede explicar como: cuando el sistema A accede a los servicios proporcionados por el sistema B, el sistema B tiene múltiples formas de proporcionar servicios, pero todo es diferente para A. Todos los sistemas son transparentes (al igual que una afeitadora eléctrica es el sistema A, y su sistema de suministro de energía es el sistema B. El sistema B puede funcionar con baterías o CA, o incluso con energía solar. El sistema A solo pasará la Clase B. El objeto llama al método de suministro de energía, pero no sabe cuál es la implementación subyacente del sistema de suministro de energía y cómo obtiene energía). La sobrecarga de métodos (sobrecarga) implementa el polimorfismo en tiempo de compilación (también llamado enlace frontal), mientras que la anulación de métodos (anulación) implementa el polimorfismo en tiempo de ejecución (también llamado enlace posterior). El polimorfismo en tiempo de ejecución es la esencia de la orientación a objetos. Para lograr el polimorfismo, se deben hacer dos cosas: 1) Reescribir el método (la subclase hereda la clase principal y reescribe los métodos existentes o abstractos en la clase principal; 2). (use una referencia de tipo principal para hacer referencia a un objeto de subtipo, de modo que la misma referencia que llama al mismo método mostrará diferentes comportamientos según el objeto de subtipo).
2. ¿Cuál es la diferencia entre los modificadores de acceso público, privado, protegido y no escrito (predeterminado)?
Respuesta:
Modificador
Clase actual
Mismo paquete
Subclase
Otros paquetes
público √ √ √ √
protegido √ √ √ ×
predeterminado √ √ × ×
privado √ × × ×
Cuando los miembros de una clase no tienen modificaciones de acceso de escritura, utilizan el valor predeterminado de forma predeterminada. De forma predeterminada, es público para otras clases en el mismo paquete y privado para otras clases que no están en el mismo paquete. Protegido es equivalente a público para subclases y equivalente a privado para clases que no están en el mismo paquete y no tienen una relación padre-hijo. En Java, los modificadores de las clases externas solo pueden ser públicos o predeterminados, y los modificadores de los miembros de la clase (incluidas las clases internas) pueden ser los cuatro anteriores.
3. ¿Es String el tipo de datos más básico?
Respuesta: No.
Solo hay 8 tipos de datos básicos en Java: byte, short, int, long, float, double, char, boolean, excepto los tipos primitivos y los tipos de enumeración, el resto son tipos de referencia (tipo de referencia).
4. ¿Es correcto flotar f=3.4?
Respuesta: Incorrecta. 3.4 es un número de doble precisión. Asignar un tipo de doble precisión (doble) a un tipo de punto flotante (flotante) es una reducción (también llamada estrechamiento), lo que provocará una pérdida de precisión. Por lo tanto, la conversión de tipo forzada es flotante f =. (flotador)3.4; o escrito como flotante f =3.4F;.
5. ¿Está mal s1 = 1; s1 = s1 + 1?
Respuesta: Para abreviar s1 = 1; s1 = s1 + 1; dado que 1 es un tipo int, el resultado de la operación s1+1 también es un tipo int y es necesario forzar el tipo. asignarse al tipo corto. Y short s1 = 1; s1 += 1; se compila correctamente porque s1+= 1; es equivalente a s1 = (short)(s1 + 1);
6. ¿Java tiene goto?
Respuesta: goto es una palabra reservada en Java y no se utiliza en la versión actual de Java. (Según el apéndice del libro "El lenguaje de programación Java" escrito por James Gosling (el padre de Java), se proporciona una lista de palabras clave de Java, incluidas goto y const, pero estas dos no son palabras clave disponibles actualmente, por lo que en algunos lugares De hecho, las palabras reservadas deberían tener un significado más amplio, porque los programadores que están familiarizados con el lenguaje C saben que las palabras o combinaciones de palabras con significados especiales utilizadas en la biblioteca de clases del sistema se consideran palabras reservadas. )
7. ¿Cuál es la diferencia entre int y entero?
Respuesta: Java es un lenguaje de programación orientado a objetos casi puro, pero los tipos de datos básicos se introducen para facilitar la programación. Sin embargo, para poder operar estos tipos de datos básicos como objetos, Java los proporciona. cada dato básico Cada tipo ha introducido una clase contenedora correspondiente. La clase contenedora de int es Integer. A partir de Java 5, se introdujo un mecanismo automático de boxeo y desempaquetado para que los dos se puedan convertir entre sí.