Skip to content

设计模式面试题

本页只放设计模式面试标准回答、常见追问和知识点跳转。每个模式的原理、流程图、代码 Demo、商业场景和误用后果放在对应知识点页,深度验收看 设计模式从零到精通验收清单

高频问题

面试题标准回答原理知识点
设计模式应该怎么从零学到生产级先学会识别变化点,再理解创建型、结构型、行为型分别解决什么问题,最后结合支付、订单、导入、第三方接口、Spring 事务等真实场景判断该不该用。从零到生产级掌握从零到精通验收清单
怎么判断设计模式是否真正学懂不能只背定义。真正学懂要能说明变化点是什么,不用会怎样,用了怎么隔离变化,新增需求改哪里,误用会带来什么成本,线上出问题怎么定位。从零到精通验收清单
你怎么理解设计模式设计模式是常见设计问题的经验总结,核心不是背 UML,而是识别变化点并隔离变化,让新增功能少改老代码,同时避免过度设计。设计模式总览
单例模式适合什么场景适合全局唯一、创建成本高、需要统一管理的对象,如配置管理器、连接池、线程池。Spring Bean 默认单例是容器级单例,不等于手写 JVM 全局单例。单例模式
工厂模式解决什么问题工厂模式封装对象创建和选择逻辑,让调用方依赖接口而不是具体实现。适合支付方式、消息发送器、文件解析器这类实现会扩展的场景。工厂模式
建造者模式解决什么问题建造者模式用于分步骤构建复杂对象,适合参数多、可选字段多、默认值多、需要统一校验或不可变对象的场景。建造者模式
代理模式和装饰器模式区别代理模式强调访问控制或横切增强,如事务、权限、远程代理;装饰器强调在不改原类的情况下动态叠加能力,如 Java IO。结构都可能包一层,但意图不同。代理模式装饰器模式
适配器模式适合什么场景适配器用于把已有但不兼容的接口转换成统一接口,常见于第三方系统、老系统改造、多供应商接入。适配器模式
策略模式解决什么问题策略模式把多种算法或业务规则封装成独立策略,运行时按类型选择。适合支付、折扣、导出格式、文件解析等同一件事多种做法的场景。商业场景训练营策略模式
观察者模式和 MQ 区别观察者通常是进程内事件通知,适合本地扩展;MQ 是跨进程可靠消息系统,支持削峰、重试、持久化和异步解耦。跨服务通知不要用进程内观察者替代 MQ。观察者模式消息队列
模板方法模式和策略模式区别模板方法固定流程骨架,把变化步骤交给子类;策略模式是在多个算法中选择一个执行。模板方法强调流程顺序稳定,策略强调算法可替换。模板方法模式策略模式
责任链模式适合什么场景责任链适合多个处理器按顺序处理同一个请求,如校验链、过滤器链、审批链、Spring Security 过滤器链。每个处理器职责单一,可新增处理器扩展规则。商业场景训练营责任链模式

项目话术

text
在项目里我不会为了模式而模式,而是先看变化点。比如支付、通知、文件解析这类多实现选择,我会用工厂配合策略;订单创建前有多项校验,我会用责任链;数据导入流程固定但不同来源解析不同,我会用模板方法;对接不同医院或第三方供应商接口,我会用适配器;事务、日志、权限这类横切增强,Spring AOP 本质就是代理模式。每次引入模式都会关注是否真的减少修改面,以及是否增加了不必要的理解成本。

常见追问

追问回答方向跳转
设计模式会不会过度设计会。只有变化点真实存在、扩展会持续发生、抽象能减少修改面时才引入。简单逻辑直接写清楚更好。设计模式总览
工厂和策略怎么组合工厂负责根据类型找到策略对象,策略负责执行业务逻辑。工厂模式策略模式
Spring 事务为什么是代理模式外部调用进入代理对象,代理在目标方法前后开启、提交或回滚事务。自调用不经过代理,所以事务可能失效。代理模式Spring事务
责任链怎么排查问题明确处理器顺序、每个处理器职责、是否中断、异常策略和日志。链路过长时必须有链路日志。责任链模式
适配器里能写业务吗不建议。适配器主要做协议、字段、错误码转换,业务规则应放 Service 或领域层。适配器模式

怎么判断设计模式是否真正学懂

验收问题合格回答方向深度知识点
什么时候不要用设计模式变化点不真实、短期不会扩展、抽象后没有减少修改面时不要用。从零到精通验收清单
工厂和策略怎么配合工厂负责找到对象,策略负责执行业务规则;支付、通知、文件解析常组合使用。从零到精通验收清单
Spring 事务为什么是代理外部调用进入代理对象,代理在目标方法前后做事务增强;同类自调用没经过代理会失效。从零到精通验收清单
观察者和 MQ 边界是什么本地观察者适合进程内扩展,跨服务可靠通知要用 MQ。从零到精通验收清单
责任链怎么排查问题查处理器顺序、中断策略、异常是否被吞、每个处理器日志。从零到精通验收清单

面试回答模板

text
我回答设计模式时会先说业务问题,再说模式怎么隔离变化,最后说代价和边界。例如策略模式不是为了消灭所有 if,而是当同一业务有多种规则并且会持续扩展时,把规则拆成独立策略;责任链不是把所有逻辑拆散,而是适合一组有顺序、可插拔的处理步骤;适配器不是代理,它重点解决接口不兼容。设计模式的核心是判断力,不是套模板。

本章小结

面试页负责“怎么说”,知识点页负责“为什么”。不要只背定义,要能结合项目说明:变化点是什么、不用会怎样、用了怎么落地、用了会带来什么成本。完整验收按 设计模式从零到精通验收清单 逐项检查。