Temas y respuestas de la entrevista del patrón de diseño de Java

1. Enumere varios patrones de diseño de uso común en JDK.

El patrón Singleton (patrón Singleton) se usa en Runtime, Calendar y algunas otras clases.
El patrón de fábrica se usa para varias clases inmutables como Boolean, como Boolean.valueOf.
El patrón de observador se usa en Swing y en muchos monitoreos de eventos.
El patrón de diseño de decorador (patrón de diseño de decorador) se utiliza en varias clases de IO de Java.

2. ¿Qué es un patrón de diseño? ¿Ha utilizado algún patrón de diseño en su código?

Los patrones de diseño son intentos y métodos de prueba utilizados por varios programadores en el mundo para resolver problemas de diseño específicos. Los patrones de diseño son una extensión de la disponibilidad del código

3. ¿Cuál es el patrón de diseño singleton en Java? Escriba un patrón singleton seguro para subprocesos en Java

El modo singleton se centra en compartir algunos objetos que consumen más recursos cuando se crean en todo el sistema. Solo se mantiene una instancia de clase específica en toda la aplicación y todos los componentes la utilizan. Java.lang.Runtime es un ejemplo clásico del patrón singleton. A partir de Java5, puede usar enumeraciones para implementar singleton seguros para subprocesos.

4. En Java, ¿cuál es el patrón de diseño del observador (patrón de diseño del observador)?

El modo de observador se basa en el cambio de estado del objeto y la comunicación del observador para que pueda realizar la operación correspondiente. Un ejemplo simple es un sistema meteorológico, cuando el tiempo cambia, debe reflejarse en la vista que se muestra al público. Este objeto de vista es un sujeto y las diferentes vistas son observadores.

5. ¿Cuáles son los principales beneficios de utilizar el modelo de fábrica? ¿Dónde se usa?

La mayor ventaja del patrón de fábrica es aumentar el nivel de empaque al crear objetos. Si usa una fábrica para crear objetos, más tarde puede reemplazar la implementación o clase del producto original con una implementación más avanzada y de mayor rendimiento, sin ninguna modificación a nivel de llamada.

6. ¿Dar un patrón de diseño de decorador implementado en Java? ¿Actúa a nivel de objeto o de clase?

El modo de decoración aumenta la capacidad de un solo objeto. El patrón de decoración se usa en todas partes en Java IO. Ejemplos típicos son la serie de clases Buffered como BufferedReader y BufferedWriter, que mejoran los objetos Reader y Writer para lograr un rendimiento mejorado de lectura y escritura a nivel de búfer.

7. En Java, ¿por qué no se permite acceder a variables no estáticas desde métodos estáticos?

No se puede acceder a los datos no estáticos desde un contexto estático en Java solo porque las variables no estáticas están asociadas con instancias de objetos específicos, mientras que las variables estáticas no están asociadas con ninguna instancia.

8. Para diseñar un cajero automático, por favor dígame sus ideas de diseño.

Por ejemplo, al diseñar sistemas financieros, uno debe saber que deben poder funcionar normalmente bajo cualquier circunstancia. Independientemente de la falla de energía u otras circunstancias, el cajero automático debe mantener el estado correcto (transacción), pensar en el bloqueo, la transacción, la condición de error, la condición de límite, etc. Aunque no puede pensar en un diseño específico, sería genial si pudiera señalar los requisitos no funcionales, hacer algunas preguntas y pensar en las condiciones de los límites.

9. En Java, ¿cuándo se usa la sobrecarga y cuándo se usa la reescritura?

Si ve que diferentes implementaciones de una clase tienen diferentes formas de hacer lo mismo, entonces debe usar la anulación, y la sobrecarga es hacer lo mismo con diferentes entradas. En Java, las firmas de métodos sobrecargados son diferentes, mientras que la invalidación no lo es.

10. Da ejemplos para ilustrar cuándo preferirías usar clases abstractas en lugar de interfaces.

Tanto las interfaces como las clases abstractas siguen el principio de diseño de "codificación orientada a la interfaz en lugar de la implementación", que puede aumentar la flexibilidad del código y adaptarse a las necesidades cambiantes. Aquí hay algunos puntos para ayudarlo a responder esta pregunta:

En Java, solo puede heredar una clase, pero puede implementar múltiples interfaces. Entonces, una vez que hereda una clase, pierde la oportunidad de heredar otras clases.
Las interfaces se usan generalmente para representar descripciones o comportamientos subsidiarios como: Ejecutable, Clonable, Serializable, etc., por lo que cuando usa clases abstractas para representar el comportamiento, su clase no puede ser Ejecutable y Clonable al mismo tiempo (Nota: esto significa si Implementando Runnable, etc.como una clase abstracta), porque en Java no puede heredar dos clases, pero cuando usa interfaces, su clase puede tener múltiples comportamientos diferentes al mismo tiempo.
En algunas aplicaciones con altos requisitos de tiempo, tienden a usarse clases abstractas, que son un poco más rápidas que las interfaces.
Si desea estandarizar una serie de comportamientos en la jerarquía de herencia de clases y puede codificar mejor en el mismo lugar, las clases abstractas son una mejor opción. A veces, las interfaces y las clases abstractas se pueden usar juntas, las funciones se definen en la interfaz y las implementaciones predeterminadas se definen en la clase abstracta.

Conexión extendida: haga clic aquí para estilos más atrevidos

El programador de cuentas públicas del blogger, Xiaoyang, solo publica tweets relacionados con entrevistas.
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44395707/article/details/106406593
Recomendado
Clasificación