Sujets et réponses des entretiens avec Java Design Pattern

1. Veuillez énumérer plusieurs modèles de conception couramment utilisés dans JDK?

Le modèle Singleton (modèle Singleton) est utilisé dans Runtime, Calendar et certaines autres classes.
Le modèle d'usine est utilisé pour diverses classes immuables comme Boolean, comme Boolean.valueOf.
Le modèle d'observateur est utilisé dans Swing et la surveillance de nombreux événements.
Le modèle de conception Decorator (modèle Decoratordesign) est utilisé dans plusieurs classes d'E / S Java.

2. Qu'est-ce qu'un modèle de conception? Avez-vous utilisé des modèles de conception dans votre code?

Les modèles de conception sont des tentatives et des méthodes de test utilisées par divers programmeurs dans le monde pour résoudre des problèmes de conception spécifiques. Les modèles de conception sont une extension de la disponibilité du code

3. Quel est le modèle de conception singleton en Java? Veuillez écrire un modèle de singleton thread-safe en Java

Le mode singleton se concentre sur le partage de certains objets qui consomment plus de ressources lorsqu'ils sont créés sur l'ensemble du système. Une seule instance de classe spécifique est conservée dans l'ensemble de l'application et elle est utilisée par tous les composants. Java.lang.Runtime est un exemple classique du modèle singleton. À partir de Java5, vous pouvez utiliser des énumérations pour implémenter des singletons thread-safe.

4. En Java, qu'est-ce que le modèle de conception d'observateur (modèle de conception d'observateur)?

Le mode observateur est basé sur le changement d'état de l'objet et la communication de l'observateur afin qu'il puisse effectuer l'opération correspondante. Un exemple simple est un système météorologique. Lorsque le temps change, il doit être reflété dans la vue affichée au public. Cet objet de vue est un sujet et les différentes vues sont des observateurs.

5. Quels sont les principaux avantages de l'utilisation du modèle d'usine? Où est-il utilisé?

Le plus grand avantage du modèle d'usine est d'augmenter le niveau d'emballage lors de la création d'objets. Si vous utilisez une fabrique pour créer des objets, vous pouvez ultérieurement remplacer l'implémentation ou la classe de produit d'origine par une implémentation plus avancée et plus performante, sans aucune modification au niveau de l'appel.

6. Donnez un modèle de conception de décorateur implémenté en Java? Agit-il au niveau de l'objet ou au niveau de la classe?

Le mode décoration augmente la capacité d'un seul objet. Le modèle de décoration est utilisé partout dans Java IO. Des exemples typiques sont les séries de classes Buffered telles que BufferedReader et BufferedWriter, qui améliorent les objets Reader et Writer pour améliorer les performances de lecture et d'écriture au niveau du tampon.

7. En Java, pourquoi n'est-il pas autorisé à accéder aux variables non statiques à partir de méthodes statiques?

Les données non statiques ne sont pas accessibles à partir d'un contexte statique en Java simplement parce que les variables non statiques sont associées à des instances d'objet spécifiques, tandis que les variables statiques ne sont associées à aucune instance.

8. Pour concevoir un guichet automatique, veuillez me dire vos idées de conception?

Par exemple, lors de la conception de systèmes financiers, il faut savoir qu'ils doivent pouvoir fonctionner normalement en toutes circonstances. Indépendamment d'une panne de courant ou d'autres circonstances, le guichet automatique doit conserver l'état correct (transaction), penser au verrouillage, à la transaction, à la condition d'erreur, à la condition aux limites, etc. Bien que vous ne puissiez pas penser à une conception spécifique, ce serait bien si vous pouviez signaler les exigences non fonctionnelles, poser des questions et réfléchir aux conditions aux limites.

9. En Java, quand utilisez-vous la surcharge et quand utilisez-vous la réécriture?

Si vous voyez que différentes implémentations d'une classe ont des façons différentes de faire la même chose, alors vous devriez utiliser le remplacement, et la surcharge consiste à faire la même chose avec différentes entrées. En Java, les signatures de méthode surchargées sont différentes, alors que le remplacement ne l'est pas.

10. Donnez des exemples pour illustrer quand vous préféreriez utiliser des classes abstraites au lieu d'interfaces?

Les interfaces et les classes abstraites suivent le principe de conception du «codage orienté interface plutôt que d'implémentation», qui peut augmenter la flexibilité du code et s'adapter à l'évolution des besoins. Voici quelques points pour vous aider à répondre à cette question:

En Java, vous ne pouvez hériter que d'une classe, mais vous pouvez implémenter plusieurs interfaces. Ainsi, une fois que vous héritez d'une classe, vous perdez la possibilité d'hériter d'autres classes.
Les interfaces sont généralement utilisées pour représenter des descriptions subsidiaires ou des comportements tels que: exécutable, clonable, sérialisable, etc., donc lorsque vous utilisez des classes abstraites pour représenter un comportement, votre classe ne peut pas être exécutable et clonable en même temps (Remarque: cela signifie que si Implémentation de Runnable etc. en tant que classe abstraite), car en Java, vous ne pouvez pas hériter de deux classes, mais lorsque vous utilisez des interfaces, votre classe peut avoir plusieurs comportements différents en même temps.
Dans certaines applications avec des exigences de temps élevées, des classes abstraites ont tendance à être utilisées, qui sont légèrement plus rapides que les interfaces.
Si vous souhaitez standardiser une série de comportements dans la hiérarchie d'héritage de classe et pouvez mieux coder au même endroit, les classes abstraites sont un meilleur choix. Parfois, les interfaces et les classes abstraites peuvent être utilisées ensemble. Les fonctions sont définies dans l'interface et les implémentations par défaut sont définies dans la classe abstraite.

Connexion étendue: cliquez ici pour des styles plus audacieux

Xiaoyang, programmeur de comptes publics du blogueur, ne publie que des tweets liés aux entretiens
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44395707/article/details/106406593
conseillé
Classement