【前端面试题】06—16道设计模式面试题(附答案)

article/2025/8/28 14:38:40

设计模式不是针对某个框架的,而是针对某类问题或某类需求提出的,因此有广泛的适用性。

我们学习设计模式不仅要学习理论,还要学习如何解决实际工作中的问题,所以在面试中,设计模式通常是结合某类需求考察的。

1、什么是设计模式?

设计模式是一套反复使用的并且经过分类编目的代码设计经验总结。

2、设计模式有哪些?

GOF提出的23种设计模式,分为三大类。

创建型模式,共5种,分别是工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共7种,分别是适配器模式、装饰器模式、代理模式、外观模式桥接模式、组合模式、享元模式。

行为型模式,共11种,分别是策略模式、模板方法模式、观察者模式、选代子模式、責任链模式、命令模式、备忘录模弌、状态模式、访问者模式、中介者模式、解释器模式。

在前端开发中,有些特定的模式不太适用。当然,有些适用于前端的模式并未包含在这23种设计模式中,如委托模式、节流模式等。

3、你用过哪些设计模式?

工厂模式。

它的优点是可以使用工厂方法而不是new关键字消除对象间的耦合。同时,将所有实例化的代码封装在一起,实现代码重复。工厂模式解决了重复创建对象的问题。

function factory(name, age){
var user= new Object();
user.name= name;user age= age;
user. getIntro= function(){
return this.name+'\' s age is ' +this.age;
}return user ;
var xm= factory( 'xiao ming',20); 
console. log(xm. getIntro() )  
// xiao ming's age is 20

4、工厂模式的概念是什么?

其概念如下:

工厂模式需要3个基本步骤,原料投入、加工过程以及成品出厂,例如以下代码。

function playerFactory (username){
var user= new object ();
user .username = username;
return user ;
}
var xm = playerFactory( 'xiao ming ')

player Factory函数中传递的参数就是“基本原料的投入”。从 var user= new Object()直到return之前,都属于“加工过程”。最后的 return就如同“成品出厂”。

5、工厂模式的缺陷是什么?

缺陷如下

(1)没有使用new关键字,在创建对象的过程中,看不到构造函数实例化的过程。

(2)每个实例化的对象都创建相应的变量和函数,因此需要更多的空间进行属性和方法的存储,从而降低了性能,造成资源的浪费。

6、说说你对MC架构和MwWM架构的理解。

在经典的MVC架构中,包含3个部分,即模型( Model)、视图(view)和控制器(Controller)。控制器可以访问视图,让其更新。控制器可以访问模型,更新数据。视图可以访问模型,获取数据渲染页面。

在MwVM架构中,包含3个部分,即模型( Model)、视图(View)和视图模型(View Model)。视图模型负责视图与模型之间的信息转换,通过欻据双向绑定使视图与模型之间的数据得以传递。

例如代表性的框架 Angular,它通过数据绑定,将模型中的数据映射到视图中,通过事件监听器( event listener),将视图改变的数据存储在模型内

7、什么是事件代理?

事件代理( Event Delegation)又称为事件委托,是 JavaScript中常用的绑定事件的方式。顾名思义,“事件代理”就是把原本需要绑定到子元素的事件委托给父元素,让父元素承担事件监听的工作。事件代理的原理是DOM元素的事件冒泡。使用事件代理的好处有很多,如减少事件数量,预测未来元素,避免内存外泄等,有利于提高性能。

8、请说说工厂模式的优缺点。

优点如下。

(1)一个调用者想创建一个对象,只要知道它的名称即可。

(2)扩展性高,如果想增加一个产品,只要扩展一个工厂类即可。

(3)屏蔽产品的具体实现,调用者只需关心产品的接口。

缺点如下。

每次增加一个产品时,都需要増加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。

9、单例模式的优缺点是什么?

优点如下。

(1)提供了对唯一实例的受控访问。

(2)由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象,单例模式无疑能够提高系统的性能。

(3)可以根据实际情况的需要,在单例模式的基础上扩展为双例模式和多例模式。

缺点如下。

(1)单例类的职责过重,里面的代码可能会过于复杂,在一定程度上违背了“单职责原则”。

(2)如果实例化的对象长时间不利用,系统会认为它是垃圾而进行回收,这将导致对象状态的丢失。

10、使用工厂模式最主要的好处是什么?

好处如下:

(1)把对象的创建集中在一个地方(工厂),在增加新的对象类型的时候,只需要改变工厂方法。当不使用工厂模式的时候,改变创建方式则需要四处修改,增加维护成本。

(2)新的对象类型可以很容易地添加进来。

(3)只需要关心工厂方法返回的对象,不必关心具体创建的细节。

11、什么是代理模式?

代理( proxy)模式,即为目标对象指定代理对象,并由代理对象代替目标对象控制客户端对目标对象的访问。

12、原型模式和单例模式的区别是什么?

单例模式就是保证一个类只存在一个实例,只初始化一次,第一次完成初始化以后,在重复使用的时候,返回的都是这个实例,而不是新建一个实例。如果实例化的对象里面的属性值已经改变,就不能用单例了,只能通过原型模式重新实例化,原型模式允许多次创建实例对象。

13、组合模式的适用性指的是什么?

组合模式是表示对象的“部分-整体”层次结构的一种设计模式;组合模式将对象组合成树状结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。

14、什么时候要使用组合模式?

在以下情况下使用组合模式

(1)当想表示对象的“部分-整体”层次结构(树状结构)时可以使用组合模式

(2)在希望用户忽略组合对象与单个对象的不同并且统一地使用组合结构中的所有对象时使用组合模式。

15、设计模式都有哪些问题?

设计模式可以让你用前人总结的经典场景来分析实现某些功能时需要什么角色如何合理地设置接口、提高系统各个层次的独立性、降低耦合度等。然而,这也不是绝对的。不论是设计模式、还是开发框架,都是为了有效开发而出现的,但常常出现“杀鸡用牛刀”的情况,所以学的时候最好要多对比,从不同角度理解与测试,不能照搬书中的内容,这不是设计模式的精髓。

16、你在开发中都用到了哪些设计模式?它们的作用分别是什么?

毎个模式都描述了一个在开发环境中不断岀现的问题,然后描述了该问题的解决方案。用这种方式,可以无限次地使用那些已有的解决方案,无须再做重复、相同的工作。

开发中常用到的模式如下。

singleton:单例模式,用来减少重复创建对象。

factory:工厂模式,用来解耦。

iterator:迭代器模式,用来遍历对象。

observer:观察者模式,用来收发消息。

templete:模板模式,用来避免执行相同的操作。

strategy:策略模式,用来定义算法等。

本文完~


http://chatgpt.dhexx.cn/article/VvpylCAg.shtml

相关文章

❤️设计模式肝完了,还挺全!腾讯和阿里的offer已拿!❤️

设计模式肝完了,还挺全!腾讯和阿里的offer已拿! 金九银十已经来了,挺近大厂最好的机会已经来了!如果你是要找工作的,一定要抓住这个机会! 前面已经整理了很多的面试资料: 1&#x…

「面试必背」设计模式面试题(收藏)

前言 设计模式在日常的工作中,是非常重要的一项技能,使用设计模式可以重构整体架构代码、提交代码复用性、扩展性、减少代码冗余问题。这是每个 Java 工程师必备的技能!今日小编主要讲的是设计模式之一的策略模式,小编会通过案例…

textRank杂谈

转自:这些文章 1. PageRank算法概述 PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。 是Google创始人拉里佩奇和谢尔盖布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后&#xff…

人工智能自然语言处理—PageRank算法和TextRank算法详解

人工智能自然语言处理—PageRank算法和TextRank算法详解 一、PageRank算法 PageRank算法最初被用作互联网页面重要性的计算方法。它由佩奇和布林于1996年提出,并被用于谷歌搜索引擎的页面排名。事实上,PageRank可以在任何有向图上定义,然后…

TextRank算法学习及使用

文章目录 一、算法思想二、python代码实现三、TextRank算法使用1、textrank4zh模块的安装2、实例介绍 总结 参考资料: 文本关键词抽取、文本摘要生成是自然语言处理(NLP)的应用之一,一定会对我们的生活产生巨大影响。随着数字媒体…

自然语言处理NLP--TextRank算法

文本摘要方法 早在20世纪50年代,自动文本摘要已经吸引了人们的关注。在20世纪50年代后期,Hans Peter Luhn发表了一篇名为《The automatic creation of literature abstract》的研究论文,它利用词频和词组频率等特征从文本中提取重要句子&…

【自然语言处理】基于TextRank算法的文本摘要

基于TextRank算法的文本摘要 文本摘要是自然语言处理(NLP)的应用之一,一定会对我们的生活产生巨大影响。随着数字媒体的发展和出版业的不断增长,谁还会有时间完整地浏览整篇文章、文档、书籍来决定它们是否有用呢? 利…

【自然语言处理】利用TextRank算法提取关键词

利用TextRank提取关键词 TextRank 是一种基于 PageRank 的算法,常用于关键词提取和文本摘要。在本文中,我将通过一个关键字提取示例帮助您了解 TextRank 如何工作,并展示 Python 的实现。 使用 TextRank、NER 等进行关键词提取 1.PageRank简…

【NLP】关键词提取:TFIDF、TextRank

前两天看到论文《Chinese Poetry Generation with Planning based Neural Network》中使用TextRank进行关键词提取。在阅读文章时也想到了除了TextRank之外,经常还使用TFIDF进行关键词提取。 一些算法的使用取决于业务场景和算法的特性。关键词提取是干什么的呢&am…

TF-IDF算法和TextRank算法的分析比较

TF-IDF算法 TF-IDF(词频-逆文档频率)算法是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降…

Python文本处理工具——TextRank

背景 TextRank是用与从文本中提取关键词的算法,它采用了PageRank算法,原始的论文在这里。Github地址。 这个工具使用POS( part-of-speech tagging : 词性标注 )然后抽取名词,这种方法对于关键词提取独具特色。 注意: 先安装NL…

TextRank学习笔记

TextRank起源与PageRank TextRank的灵感来源于大名鼎鼎的PageRank算法,这是一个用作网页重要度排序的算法。 并且,这个算法也是基于图的,每个网页可以看作是一个图中的结点,如果网页A能够跳转到网页B,那么则有一条A-…

【TextRank】关键词提取 算法原理 公式推导 源码分析

1.前言 在介绍TextRank前,我想先给大家介绍下PageRank,实质上个人认为可以把TextRank当做PageRank2.0。 谷歌的两位创始人的佩奇和布林,借鉴了学术界评判学术论文重要性的通用方法,“那就是看论文的引用次数”。由此想到网页的重要…

NLP - 关键词提取 - TextRank

NLP - 关键词提取 - TextRank 一、TextRank介绍二、PageRank介绍三、PageRank计算过程四、关键词提取任务 一、TextRank介绍 TextRank算法则可以脱离语料库的基础,仅对单篇文档进行分析就可以提取该文档的关键词。这也是TextRank算法的重要特点。TextRank算法的基本…

textrank算法原理与提取关键词、自动提取摘要PYTHON

首先介绍原理与概念 TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法(其原理在本文在下面), 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本…

TextRank算法总结

TextRank算法总结 最近在调研自动生成文本方面的内容,突然想到了自动文摘里的textRank,这里我将参考了一些资料并对这些知识点进行了整理总结,初步总结如下: 目录 PageRank简介基于TextRank的关键词提取基于TextRank的关键词短语提…

TextRank算法实践

TextRank算法实践 PageRank算法思想 TextRank算法的思想主要源于PageRank算法,PageRank算法主要用于给互联网网页排序,根据网页之间的跳转来构造一个初始权重矩阵(转移矩阵),默认每个网页质量都是1 使用一个向量v&…

TextRank算法的基本原理及textrank4zh使用实例

TextRank算法是一种文本排序算法,由谷歌的网页重要性排序算法PageRank算法改进而来,它能够从一个给定的文本中提取出该文本的关键词、关键词组,并使用抽取式的自动文摘方法提取出该文本的关键句。其提出论文是: Mihalcea R, Tarau P. TextRank: Bringing order into texts[…

TextRank算法

TextRank算法理解 TextRank算法 TextRank算法基于PageRank,用于为文本生成关键字和摘要。其论文是: Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004. 先从PageRank讲起 在浅入浅出…

TextRank

TextRank与PageRank TextRank的灵感来源于大名鼎鼎的PageRank算法,这是一个用作网页重要度排序的算法。 这个算法是基于图的,每个网页可以看作是一个图中的结点,如果网页A能够跳转到网页B,那么则有一条A->B的有向边。这样&am…