Preguntas de entrevista clásicas comunes de Java (1)

Preguntas de entrevista clásicas comunes de Java (1)

1. Hablar sobre la comprensión de la orientación a objetos?
Respuesta: Según tengo entendido, la orientación a objetos es una extensión natural del modelo del mundo real, que es una idea de programación de "todo es un objeto". Cualquier objeto de la vida real puede clasificarse en una clase de cosas, y cada individuo es una instancia de una clase de cosas. La programación orientada a objetos está centrada en objetos y dirigida por mensajes, por lo que programa = objeto + mensaje.

Cuando se trata de la orientación a objetos, debo mencionar sus tres características principales, encapsulación, herencia y polimorfismo.
La encapsulación consiste en abstraer las propiedades y comportamientos de una clase de cosas en una clase, privatizar las propiedades y hacer público el comportamiento, mejorar la privacidad de los datos y hacer que el código sea modular. Hacerlo hace que el código sea más reutilizable.
La herencia consiste en abstraer aún más las propiedades y comportamientos compartidos por una clase de cosas en una clase padre, y cada subclase es una clase padre especial, con los comportamientos y propiedades de la clase padre, y también tiene sus propios comportamientos y propiedades únicos. Esto expande el bloque de código existente y mejora aún más la reutilización del código.
Si la encapsulación y la herencia son para la reutilización de código, el polimorfismo es para la reutilización de la interfaz. En pocas palabras, el polimorfismo es permitir que las referencias de la clase principal (o interfaces) apunten a objetos de subclase (o clase de implementación).

2. ¿Cuál es la diferencia entre Java y otros lenguajes?
Respuesta: Esto tiene que comenzar con las características del lenguaje java.
1. Compile en un solo lugar y ejecútelo en varios lugares (la máquina virtual Java es independiente de la plataforma).
2. Mecanismo de gestión de memoria incorporado.
3. Admite subprocesos múltiples (el lenguaje C ++ no tiene un mecanismo de subprocesos múltiples incorporado, por lo que la función de subprocesos múltiples del sistema operativo debe invocarse para la programación de subprocesos múltiples).
4. Es un lenguaje interpretado (el lenguaje C es un lenguaje compilado, existe el concepto de puntero en C y java cancela el concepto de puntero)

3. ¿Cuál es la diferencia entre JRE, JDK y JVM?
Respuesta: Primero observe sus respectivos conceptos:
JVM: Java Virtual Machine, es una máquina virtual que ejecuta código de bytes Java. JVM tiene implementaciones específicas para diferentes sistemas (Windows, Linux, macOS), pero todas dan los mismos resultados si usan el mismo código de bytes.
JRE: Entorno operativo. Es una colección de todo lo necesario para ejecutar un programa Java compilado, incluida la máquina virtual Java (JVM), las bibliotecas de clases de Java, los comandos de Java y algunos otros componentes básicos.
JDK: es un SDK de Java con todas las funciones. Tiene todo lo que tiene JRE, así como un compilador (javac) y herramientas (como javadoc y jdb). Puede crear y compilar programas.
Comprensión simple: JDK = JRE (incluida JVM + biblioteca de clases centrales (JavaAPI)) + herramientas de desarrollo

4. ¿Qué es bytecode? ¿Cuáles son los beneficios de usar bytecode?
Respuesta: En Java, el código que JVM puede entender se llama bytecode (es decir, un archivo con una extensión .class). Cualquier procesador específico solo se enfrenta a la máquina virtual; el
lenguaje Java utiliza código de bytes para resolver el problema de la ejecución ineficaz del lenguaje interpretado tradicional hasta cierto punto, al tiempo que conserva las características portátiles del lenguaje interpretado

5. ¿Cuál es la función de la ruta de clases de configuración?
Respuesta: Esta es la variable de entorno del sistema java. Compilamos .java a través del comando javac para lograr, y la operación se implementa a través de java. Estos dos comandos se almacenan en el paquete JDK. Si nuestro archivo .java no se coloca en el directorio donde se encuentra el comando javac, el sistema informará que no se puede encontrar javac. El classpath está configurado para estar en cualquier directorio del sistema . Puede ejecutar comandos javac java

6. ¿La interfaz es diferente antes de JDK1.8 y después de JDK1.8?
Respuesta: Primero repasemos qué es una interfaz. La interfaz se refiere a la entrada de todos los servicios proporcionados por el sistema (la interfaz real definida por Interfaz, es decir, el tipo de interfaz) [solo puede tener métodos abstractos]. Es un resumen escribe. Una clase hereda los métodos abstractos de la interfaz implementando la interfaz; una clase solo puede heredar una clase, pero puede heredar múltiples interfaces ; una interfaz no puede implementar otra interfaz, pero puede heredar muchas otras interfaces
antes de JDK1.8:
1. Las variables en la interfaz están todas las variables estáticas (public static final) y deben inicializarse explícitamente
2. Todos los métodos en la interfaz son abstractos públicos por defecto
3. La interfaz no tiene ningún método de construcción y no se puede instanciar, pero se puede implementar como tipo, es decir, la referencia de la clase padre apunta al objeto de la subclase)
4. La clase de implementación debe implementar todos los métodos de la interfaz
5. La clase de implementación puede implementar múltiples interfaces (herencia múltiple en java)
Después de JDK1.8:
1. En la interfaz Puede haber un método predeterminado (cuerpo del método) (modificado por la palabra clave predeterminada) El
método predeterminado puede ser heredado y puede haber más de uno llamado por una instancia. Si una clase implementa varias interfaces y varias interfaces definen varios mismos métodos predeterminados, debe implementar la clase para anular el método predeterminado en la interfaz; de lo contrario, se informará un error. Puede usar super para llamar al método predeterminado de la interfaz especificada .
2. Métodos estáticos
en lainterfaz que se pueden declarar (y se pueden implementar) Los métodos estáticos en lainterfaz deben ser públicos, el modificador público se puede omitir, el modificador estático no se puede omitir y el método estático no se puede heredar ni cubrir. , por lo que es solo específico. Puede haber varios métodos estáticos en la interfaz.
En pocas palabras: antes de JDK1.8, la interfaz solo puede tener métodos abstractos. Después de JDK1.8, puede haber diferentes métodos en la interfaz, pero los métodos deben modificarse con static o default.

7. ¿Cuál es la diferencia entre una interfaz y una clase abstracta?
Respuesta: El mismo punto: ambos representan la capa abstracta del sistema; ninguno puede ser instanciado; ambos pueden contener métodos abstractos (usados ​​para describir los servicios proporcionados por el sistema, sin proporcionar una implementación específica).
Diferencias: una clase solo puede heredar una clase principal directa, sin embargo, se pueden implementar múltiples interfaces; las
clases abstractas tienen constructores; las interfaces no tienen constructores; las clases abstractas pueden tener métodos comunes en interfaces.
Ya seapara distinguir entre versiones de JDK; lasvariables miembro en clases abstractas tienen permisos autodefinidos para modificar Variables de miembro de interfaz por defecto como público estático final;
desde el nivel de diseño, la abstracción es una abstracción de clases, una especie de diseño de plantilla, y la interfaz es una abstracción de lo que se hace y es una norma de lo que se hace

8. ¿Cuáles son las diferencias entre una aplicación Java y un subprograma?
Respuesta: En pocas palabras, la aplicación se inicia desde el hilo principal (es decir, el método main ()). El subprograma del subprograma no tiene un método main (), y está incrustado principalmente en la pantalla del navegador para ejecutarse (llame a init () o run () para comenzar)

9. ¿Cuáles son los contenedores de uso común en Java?
Respuesta: Los contenedores de datos se dividen principalmente en dos tipos, Colección: (almacenamiento de elementos independientes) y Mapa (almacenamiento de pares de elementos de tipo clave-valor). Los contenedores más utilizados son:
ArrayList: Su estructura de datos es una tabla lineal. La ventaja es que es muy conveniente acceder y consultar, pero es muy ineficiente a la hora de agregar y eliminar.
LinkedList: Su estructura de datos utiliza una lista vinculada, la ventaja de esta estructura es que la eficiencia de eliminación y adición es alta, pero la eficiencia del acceso aleatorio a los elementos es menor que la de la clase ArrayList.
HashSet: la clase Set no permite elementos duplicados (conjuntos) y no puede agregar un elemento duplicado (que ya existe en el Set). HashSet usa la función Hash para optimizar la eficiencia de las consultas. Su método de contener () se usa a menudo para determinar si se ha agregado el elemento relevante.
HashMap: Proporciona un mecanismo de almacenamiento de datos de pares clave-valor clave-valor, que puede ser muy conveniente Buscar el elemento correspondiente a través del valor de la clave, y a través del mecanismo hash hash, es muy conveniente de encontrar.

10. ¿Cuál es la diferencia entre hilo y proceso?
Respuesta: ¿Qué es un proceso?
El proceso es el proceso de ejecución del programa y la unidad básica del sistema para ejecutar el programa, por lo que el proceso es dinámico. El sistema que ejecuta un programa es el proceso de un proceso desde la creación, la operación hasta la muerte. En Java, cuando iniciamos la función principal, en realidad iniciamos un proceso JVM, y el hilo donde se encuentra la función principal es un hilo en este proceso, también conocido como hilo principal.
¿Qué es un hilo?
Un hilo es similar a un proceso, pero un hilo es una unidad de ejecución más pequeña que un proceso. Un proceso puede generar varios subprocesos durante su ejecución. A diferencia de un proceso, varios subprocesos del mismo tipo comparten el montón del proceso y los recursos del área de método, pero cada subproceso tiene su propio contador de programa, pila de máquina virtual y pila de método local, por lo que el sistema está produciendo un subproceso, o cuando se cambia entre subprocesos, la carga es mucho menor que el proceso, debido a esto, los subprocesos también se denominan procesos ligeros.
la diferencia entre los dos?
Espacio de direcciones: los subprocesos del mismo proceso comparten el espacio de direcciones de este proceso y hay espacios de direcciones independientes entre los procesos.
Propiedad de los recursos: los subprocesos en el mismo proceso comparten los recursos del proceso, como la memoria, E / S, CPU, etc., pero los recursos entre los procesos son independientes.
Proceso de ejecución: cada proceso independiente tiene una entrada de programa, una secuencia de ejecución secuencial y una entrada de programa. Sin embargo, los subprocesos no se pueden ejecutar de forma independiente, deben almacenarse en el programa de aplicación y el programa de aplicación proporciona control de ejecución de múltiples subprocesos.
Thread es la unidad básica de programación del procesador, pero el proceso es la unidad básica del programa de operación del sistema.

Supongo que te gusta

Origin blog.csdn.net/Z3068236782/article/details/114703047
Recomendado
Clasificación