软件架构临时简答题
(1)软件设计模式分类及其特点
-
按目的分类(关注做什么):
-
创建型:关注对象的创建过程,将创建与使用分离。
-
结构型:关注类或对象的组合,形成更大的结构。
-
行为型:关注对象间的交互,划分职责与协作。
-
-
按范围分类(关注处理谁):
-
类模式:处理类与子类关系(静态继承)。
-
对象模式:处理对象间关系(动态组合)。
-
(2)软件设计模式的定义以及基本要素
-
定义:在特定环境下,针对重复出现的软件问题的一种经过充分验证的通用解决方案。
-
基本要素:
-
模式名称:用于沟通和记忆的助记词。
-
问题:描述在何时使用该模式(应用环境)。
-
解决方案:描述设计的组成成分、职责及协作关系。
-
效果:描述模式应用的优缺点及权衡。
-
(3)面向对象设计原则
-
单一职责原则 (SRP):一个类只负责一个职能。
-
开闭原则 (OCP):对扩展开放,对修改关闭。
-
里氏代换原则 (LSP):子类必须能透明地替换父类。
-
依赖倒转原则 (DIP):依赖抽象,不依赖具体实现。
-
接口隔离原则 (ISP):使用多个专门接口,优于单一的大接口。
-
合成复用原则 (CRP):优先使用组合/聚合,少用继承。
-
迪米特法则 (LoD):最少知识原则,只与直接朋友通信。
(4)软件架构与设计模式的区别和共性
-
共性:都是解决重复性问题的方案,旨在提高重用性、维护性和扩展性。
-
区别:
-
层次不同:架构是系统级(宏观结构);设计模式是构件级(微观细节)。
-
范围不同:架构决定系统骨架;设计模式解决局部问题。
-
(5)单例模式的三个实现要点
-
私有构造函数:禁止外部通过
new创建实例。 -
私有静态成员变量:用于存储类中唯一的实例。
-
公有静态工厂方法:提供全局唯一的访问入口。
(6)软件架构的概念及其组成部分的含义
-
概念:软件系统的高层结构。
-
组成部分:
-
构件:计算或数据存储单元(如模块、数据库)。
-
连接件:构件之间交互的抽象(如管道、过程调用)。
-
约束:必须遵守的设计规则或性能限制。
-
(7)Kruchten “4+1” 视图模型
-
逻辑视图:描述功能需求(对应类图)。
-
开发视图:描述软件在开发环境下的静态结构(对应组件图)。
-
过程视图:描述系统的并发性与同步(关注性能)。
-
物理视图:描述软件如何映射到硬件(对应部署图)。
-
场景视图(+1):即用例视图,用于统筹其他视图,验证架构完整性。
(8)简述深克隆和浅克隆
-
浅克隆:只复制对象本身和值类型成员,引用类型成员仍指向原对象(共享内存)。
-
深克隆:递归复制所有引用类型成员,克隆对象与原对象在内存中完全独立。
(9)代理模式的定义以及几种常见的代理模式
-
定义:为某对象提供一个代理或占位符,由代理控制对原对象的访问。
-
常见类型:
-
远程代理:代表位于不同地址空间的对象。
-
虚拟代理:延迟加载开销大的对象(如图片预加载)。
-
保护代理:控制对原对象的访问权限。
-
智能引用:访问时执行额外操作(如引用计数)。
-
(10)比较饿汉式单例和懒汉式单例
-
饿汉式:类加载时立即创建。优点是天生线程安全;缺点是若不使用会浪费资源。
-
懒汉式:调用时才创建(延迟加载)。优点是资源利用率高;缺点是需处理多线程同步问题,否则不安全。
(11)简述依赖倒置原则 (DIP)
-
定义:高层模块不应依赖低层模块,二者都应依赖抽象;抽象不应依赖细节,细节应依赖抽象。
-
核心:针对接口编程,而非针对实现编程,实现模块间的松耦合。
(12)简述组合模式的定义和角色
-
定义:将对象组合成树形结构以表示“部分-整体”的层次结构,使用户对单个对象和组合对象的使用具有一致性。
-
角色:
-
Component(抽象构件):声明统一接口。
-
Leaf(叶子构件):无子节点的对象。
-
Composite(容器构件):包含子节点,实现子节点管理方法。
-
(13)简述接口隔离原则 (ISP) 及应用
-
定义:客户端不应依赖它不需要的接口;类间的依赖应建立在最小的接口上。
-
应用:避免建立臃肿的“胖接口”;将大接口拆分为职责单一的特定接口,实现角色隔离。

浙公网安备 33010602011771号