- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Java设计模式面试题及详细答案
一、基础概念类
1.什么是设计模式?你觉得设计模式的核心价值是什么?
答案:设计模式是针对软件开发中常见问题的可复用解决方案,是前辈们总结的一套经过验证的、优化的代码设计经验。它不是具体的代码,而是一种解决问题的思路和模板。
核心价值主要有两点:一是提高代码的可维护性和可扩展性,让代码结构更清晰、逻辑更严谨,后续迭代时能少改代码、少出bug;二是提升团队协作效率,设计模式是行业内的通用“语言”,大家都遵循同一套模式开发,互相理解代码会更轻松,不用反复沟通代码逻辑设计。
2.设计模式的六大原则是什么?分别简单说明其核心思想
答案:设计模式的六大原则是代码设计的指导准则,核心思想都是围绕“高内聚、低耦合”展开:
单一职责原则:一个类只负责一项职责,不要把多个不相关的功能放在一个类里。比如用户类就专注处理用户信息,不要同时包含订单相关的处理逻辑,这样修改一个功能时不会影响其他功能。
开闭原则:对扩展开放,对修改关闭。简单说就是新增功能时,尽量通过添加新类/新方法实现,而不是修改已有的、稳定运行的代码。比如要给支付系统加一种新的支付方式,应该新增一个支付类,而不是在原有支付类里改逻辑。
里氏替换原则:子类可以替换父类,并且替换后不会影响程序的正确性。核心是子类要继承父类的核心行为,不能重写父类的关键方法导致原有逻辑失效。比如父类是“鸟”有“飞”的方法,子类“鸵鸟”就不应该继承这个父类,因为鸵鸟不会飞,替换后会出问题。
依赖倒置原则:依赖于抽象,而不依赖于具体实现。简单说就是要面向接口编程,而不是面向具体的类。比如依赖“支付接口”,而不是依赖“微信支付”这个具体类,这样后续换成支付宝支付,只需换一个实现类即可,不用改依赖的代码。
接口隔离原则:一个接口不应该包含客户端不需要的方法,要把大接口拆分成多个小的、专用的接口。比如不要搞一个“万能接口”包含支付、退款、查询订单等所有方法,而是拆成支付接口、退款接口,客户端需要什么就实现什么接口,避免实现不需要的方法。
迪米特法则(最少知道原则):一个对象应该尽量少地了解其他对象,只和直接的朋友(比如成员变量、方法参数)通信。比如A类要调用C类的方法,最好通过B类(A的直接朋友)中转,而不是A直接去创建C的对象,减少类之间的耦合。
二、创建型模式类
1.什么是单例模式?请写出两种线程安全的单例模式实现方式,并说明优缺点
答案:单例模式是指一个类在整个应用中只有一个实例对象,并且提供一个全局唯一的访问点(比如getInstance方法)。常用于工具类、配置类等场景,避免重复创建对象造成资源浪费。
两种线程安全的实现方式:
(1)饿汉式实现:
java
publicclassSingleton{
//类加载时就创建实例,天然线程安全
privatestaticfinalSingletonINSTANCE=newSingleton();
//私有构造方法,禁止外部new
privateSingleton(){}
//全局访问点
publicstaticSingletongetInstance(){
returnINSTANCE;
}
}
优点:实现简单,线程安全,获取实例速度快(类加载时已初始化);缺点:不管是否使用,类加载时就创建实例,可能造成资源浪费(比如单例对象创建成本高,但程序全程没用到)。
(2)双重检查锁实现(懒汉式优化):
java
publicclassSingleton{
//volatile关键字防止指令重排,保证实例创建完成后再被访问
privatestaticvolatileSingletoninstance;
privateSingleton(){}
publicstaticSingletongetInstance(){
//第一次检查:如果实例已存在,直接返回,避免重复加锁
if(instance==null){
//加锁,保证同一时刻只有一个线程进入创建逻辑
synchronized(Singleton.class){
//第二次检查:防止多个线程等待锁时,其中一个线程已创建实例
if
您可能关注的文档
最近下载
- 2025版《举一反三》章节综合测试卷第八章 直线和圆、圆锥曲线综合测试卷(含答案及解析).pdf VIP
- 2022预应力混凝土空心板应用技术规程.docx VIP
- 2025年农产品质量安全技能大赛考试题库资料(含答案).docx VIP
- 七年级上册语文读读写写注音及解释(1).pdf VIP
- 内蒙古自治区2021-2022学年普通高学校业水平考试(高二会考)英语真题和答案详解.pdf VIP
- 最新初中生物新课标《义务教育生物学课程标准(2022-年版)》学习解读PPT课件.pptx VIP
- 中考英语考试真题及详细参考答案【完整2份】人教版.pdf VIP
- 新教材 高中英语外研版必修第一册全册各单元英语作文写作指导.pdf VIP
- 妇产科护理质量改进分析.pptx VIP
- 股票大作手--操盘术.pdf VIP
原创力文档


文档评论(0)