iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中设计模式的面试题有哪些
  • 707
分享到

Java中设计模式的面试题有哪些

2023-06-20 20:06:45 707人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关Java中设计模式的面试题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。面试题1:面向对象程序设计(OOP)的六大原则分别有哪几个开闭原则(Open Close Prin

这篇文章将为大家详细讲解有关Java中设计模式面试题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    面试题1:面向对象程序设计(OOP)的六大原则分别有哪几个

    开闭原则(Open Close Principle)及“开放-封闭原则”单一职责原则(Single Responsibility Principle)里氏替换原则(Liskov Substitution Principle)依赖倒置原则(Dependence Inversion Principle)接口隔离原则(Interface Segregation Principle)最少知识原则(Law Of Demeter)

    面向对象程序设计中,需要遵守的原则主要有6个,称为六大原则。面向对象程序设计原则也是我们用于评价一个设计模式的重要指标之一。在设计模式中,很多设计模式都遵守了这些原则。

    原则名称内容说明
    开闭原则对扩展开放,对修改关闭。
    单一职责原则即一个类只负责相应领域的职责,即不要存在多于一个导致类变更的原因。
    里氏代换原则子类型必须能够替换它们的父类型。一个软件实体如果使用的是一个父类,那么当把这个父类替换成继承该父类的子类,程序的行为不会发生任何变化。软件实体察觉不出父类对象和子类对象的区别。
    依赖倒置原则要依赖于抽象,不要依赖于具体。客户端依赖于抽象耦合。抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。
    接口隔离原则客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上。
    最少知识原则对象与对象之间应该使用尽可能少的方法来关联,避免千丝万缕的关系。

    面试题2:你说一下什么是设计模式

    设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性。我们使用设计模式最终的目的是实现代码的 高内聚 和低耦合。

    追问1:那你怎么理解高内聚和低耦合?

    耦合:

    也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。

    内聚:

    故名思议,表示内部间聚集、关联的程度,那么高内聚就是指要高度的聚集和关联。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。

    高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。目的是使程序模块的可重用性、移植性大大增强。通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。

    面试题3:设计模式有哪几种?

    总体来说设计模式分为三大类:

    • 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

    • 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

    • 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    除了23种常见设计模式外,其实还有两类:并发型模式和线程池模式。

    模式类型名称定义
    创建型工厂方法模式(Factory Pattern)定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法模式是一个类的实例化延迟到子类。
    创建型抽象工厂模式(Abstract Factory Pattern)提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。
    创建型单例模式(Singleton Pattern)确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。
    创建型建造者模式(Builder Pattern)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
    创建型原型模式(Prototype Pattern)用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
    结构型适配器模式(Adapter Pattern)将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作
    结构型桥接模式(Bridge Pattern)将抽象部分与它的实现部分分离,使它们都可以独立地变化。
    结构型组合模式(Composite Pattern)组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。使得用户对单个对象和组合对象的使用具有一致性。
    结构型装饰器模式(Decorator Pattern)动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。
    结构型外观模式(Facade Pattern)为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
    结构型享元模式(Flyweight Pattern)运用共享技术有效地支持大量细粒度对象的复用。
    结构型代理模式(Proxy Pattern)为其他对象提供一种代理以控制对这个对象的访问。
    行为型责任链模式(Chain of Responsibility Pattern)使多个对象都有机会处理请求,从而避免请求发送者与接收者耦合在一起。将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
    行为型命令模式(Command Pattern)将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。
    行为型解释器模式(Interpreter Pattern)给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
    行为型迭代器模式(Iterator Pattern)提供一种方法来访问聚合对象中的各个元素,而不用暴露这个对象的内部表示。
    行为型中介者模式(Mediator Pattern)用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
    行为型备忘录模式(Memento Pattern)在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。
    行为型观察者模式(Observer Pattern)定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。
    行为型状态模式(State Pattern)允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
    行为型策略模式(Strategy Pattern)定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。
    行为型模板方法模式(Template Pattern)定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
    行为型模式访问者模式(Visitor Pattern)表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

    追问1:你比较熟悉哪种设计模式?说说原理。

    面试者老王:我都略懂一些。

    面试官:那你走吧,简历还你。

    Java中设计模式的面试题有哪些

    面试者老王:???

    面试者老王:那我比较了解工厂、单例、代理和适配器模式。

    追问2:那你说说适配器模式的原理吧

    二狗不知道在哪听说华为手机就是牛,非要新买了一个华为手机,它高高兴兴的拿到新手机,想要插上耳机听歌,但发现手机没有通用的原型耳机孔,仔细看了说明书之后发现,华为手机是充电孔耳机孔在一起,在插耳机时需要一个耳机口转接器,才能插耳机。我们用程序员的眼观来看,这里相当于增加了一个转接器类用于适配耳机,这就类似于设计模式 —— 适配器模式(Adapter)。

    适配器模式包装目标类即适配者(Adaptee)成适配器。适配器提供客户端所需要的接口,把客户端的请求转化成对适配者的调用。也就是说,客户端访问适配器时,在适配器内部将调用适配者的方法。

    Java中设计模式的面试题有哪些

    • Client:客户端,调用自己需要的接口

    • TargetTarget:定义客户端需要的跟特定需求相关的接口

    • Apaptee:已存在接口,通常满足功能需求但与特定需求接口不一致

    • Adapter:适配器,将Adaptee适配为Client需要的Target接口。

    适配器模式的主要功能是进行转换匹配,用来复用已有的功能。适配器模式将某个类的接口转换成客户端期望的另一个接口,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。

    三种适配器模式有各自的应用场景:

    • 类的适配器模式:将一个类转换成满足另一个新接口的类,创建一个新类,继承原有的类,实现新的接口即可。

    • 对象的适配器模式:将一个对象转换成满足另一个新接口的对象,可以创建一个Wrapper类,持有原类的一个实例,在Wrapper类的方法中,调用实例的方法即可。

    • 接口的适配器模式:当不希望实现一个接口中所有的方法时,可以创建一个抽象类Wrapper,实现所有方法,我们写别的类的时候,继承抽象类即可。

    适配器模式的本质是:转换匹配,复用功能。适配器模式中被适配的接口Adaptee与适配的接口Target没有关系,他们中的方法可以相同,也可以完全不同,适配器模式的实现方式是通过组合对象的方式进行的,将功能委托给被适配的对象进行的。适配器模式调用的序列图如下所示:

    Java中设计模式的面试题有哪些

    适配器模式的实现有以下几种:

    • 常见适配:适配器类会实现接口,在实现过程中调用待适配的类中的方法

    • 智能适配器:在适配器类中实现接口中定义的新方法,通常来说,适配器类中既可以通过借助继承类中的方法实现高层功能,也可以实现接口中定义的新方法,进行功能扩展。

    • 缺省适配:即对接口的缺省实现,即接口适配器模式。

    此外,在适配过程中,可能接口功能的实现需要多个待适配类中的方法交互才能满足需求,即同时适配多个类。适配实现的复杂度取决于待适配类与接口的相似度,相似程度越高,适配类的实现难度越低。

    在实际项目过程中,通常会存在两个版本共存的情况,这就是需要使用到双向适配器。

    两个版本的实现代码:

    public interface Targetable1 {public void produce1();}public class Target1 implements Targetable1 {@Overridepublic void produce1() {System.out.println("Targetable1的produce1实现");}}public interface Targetable2 {public void produce2();}public class Target2 implements Targetable2 {@Overridepublic void produce2() {System.out.println("Targetable2的produce2实现");}}

    适配器类的代码如下:

    public class Adapter implements Targetable1, Targetable2 {    private Targetable1 target1;    private Targetable2 target2;    @Override    public void produce1() {        target1.produce1();    }    @Override    public void produce2() {        target2.produce2();    }}

    实际上,在使用适配器过程中存在一个问题:被适配的对象不兼容Adapter适配器类,这使得适配器类的适用范围受到限制。而双向适配器则解决了这样的问题,可以满足不同客户采用不同方式查看同一不同对象的需求。

    适配器模式优缺点

    优点:

    • 更好的复用性。适配器模式可复用已实现接口的兼容。

    • 更好的扩展性。实现适配器的过程中可以调用自己开发的功能,实现系统的扩展。

    缺点:

    过多使用适配器,系统会比较混乱,不易理解。

    关于“Java中设计模式的面试题有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

    --结束END--

    本文标题: Java中设计模式的面试题有哪些

    本文链接: https://www.lsjlt.com/news/299888.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Java中设计模式的面试题有哪些
      这篇文章将为大家详细讲解有关Java中设计模式的面试题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。面试题1:面向对象程序设计(OOP)的六大原则分别有哪几个开闭原则(Open Close Prin...
      99+
      2023-06-20
    • web前端中的设计模式面试题有哪些
      这期内容当中小编将会给大家带来有关web前端中的设计模式面试题有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 简述设计模式七大原则开放封闭原则:对扩展开放...
      99+
      2024-04-02
    • java中代理模式的面试题有哪些
      小编给大家分享一下java中代理模式的面试题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、静态代理静态代理角色分析:抽象角色 :一般使用接口或者抽象类来...
      99+
      2023-06-15
    • java中有哪些设计模式
      java中有哪些设计模式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Num1:单例模式基本概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。常见写法:饿汉式publ...
      99+
      2023-06-15
    • java的设计模式有哪些
      java的设计模式有:1.适配器模式;2.单例模式;3.工厂模式;4.策略模式;java的设计模式有以下几种适配器模式java中适配器模式的作用是将一个类的方法接口转换成客户希望的另外一个接口,从而解决接口之间不兼容的问题。单例模式java...
      99+
      2024-04-02
    • Java中Spring设计模式有哪些
      这篇文章主要为大家展示了“Java中Spring设计模式有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中Spring设计模式有哪些”这篇文章吧。一、简单工厂模式又叫做静态工厂方法(...
      99+
      2023-06-02
    • java中分布式面试题有哪些
      这篇文章主要介绍java中分布式面试题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java...
      99+
      2023-06-14
    • Java中设计模式的原则有哪些
      本篇文章给大家分享的是有关Java中设计模式的原则有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java中的设计模式与7大原则:一、创建型模式抽象工厂模式(Abstrac...
      99+
      2023-05-31
      java 设计模式 ava
    • Java常用的设计模式有哪些
      小编给大家分享一下Java常用的设计模式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java常用的五种设计模式:1、单例设计模式;2、工厂设计模式;3、代...
      99+
      2023-06-14
    • java面试中有哪些基础面试题
      这篇“java面试中有哪些基础面试题”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java面试中有哪些基础面试题”文章吧。作...
      99+
      2023-06-03
    • Java中Mybatis的面试题有哪些
      这篇文章给大家分享的是有关Java中Mybatis的面试题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. MyBatis 中 #{}和 ${}的区别是什么?#{}是预编译处理,${}是字符替换。 在使用...
      99+
      2023-06-20
    • Java设计模式的原则有哪些
      本文小编为大家详细介绍“Java设计模式的原则有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java设计模式的原则有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。设计模式的六大原则:1、单一职责原则,...
      99+
      2023-07-04
    • Java面试题冲刺第十五天--设计模式
      目录面试题1:面向对象程序设计(OOP)的六大原则分别有哪几个面试题2:你说一下什么是设计模式追问1:那你怎么理解高内聚和低耦合?面试题3:设计模式有哪几种?追问1:你比较熟悉哪种设...
      99+
      2024-04-02
    • Java常见设计模式有哪些
      这篇文章主要介绍Java常见设计模式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、设计模式总述:1、什么是设计模式:设计模式是一套经过反复使用的代码设计经验,目的是为了重用代码、让代码更容易被他人理解、保证...
      99+
      2023-06-29
    • java中mvc设计模式有哪些特点
      Java中MVC(Model-View-Controller)设计模式具有以下特点:1. 分离关注点:MVC模式将应用程序的不同方面...
      99+
      2023-10-10
      java MVC
    • java设计模式有哪些原则
      这篇文章将为大家详细讲解有关java设计模式有哪些原则,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数...
      99+
      2023-06-20
    • python面试题——设计模式之观察者模式
      1、观察者模式 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 观察者模式又称:"发布-订阅"模式。 比如,微信公众号,就是一种...
      99+
      2023-09-12
      python 设计模式 观察者模式
    • Java中有哪些Spring面试题
      本篇内容主要讲解“Java中有哪些Spring面试题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中有哪些Spring面试题”吧!谈谈你对 Spring 的理解?Spring 是一个开源...
      99+
      2023-06-16
    • java面试题有哪些
      这篇文章将为大家详细讲解有关java面试题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、什么是ARQ协议自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据...
      99+
      2023-06-20
    • spring中的设计模式有哪些
      这期内容当中小编将会给大家带来有关spring中的设计模式有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、工厂模式,在各种BeanFactory以及ApplicationContext创建中都用到...
      99+
      2023-05-31
      spring
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作