【系统分析师之路】第七章 系统设计(习题汇总)

【系统分析师之路】第七章 系统设计(习题汇总)

■习题汇总

01.遵守面向对象设计原则可以有效地提高信息系统的复用性和可维护性,应用()原则可扩展已有的系统,并为之提供新的行为;()原则建立在面向对象程序设计中,应尽量针对接口编程,而不是针对实现编程。
A.开闭
B.里式替换
C.依赖倒置
D.接口隔离
A.依赖倒置
B.接口隔离
C.里式替换
D.最小知识

解答:答案选择A|A。具体看下面归纳的内容。

  1. 开闭原则:对扩展开放,对修改关闭,因为修改可能引入新的问题。
  2. 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。
  3. 单一职责原则:设计目的单一的类
  4. 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
  5. 最少知识法则:也叫迪米特法则,一个对象应当对其他对象有尽可能少的了解
  6. 组合重用原则:要尽量使用组合,而不是继承来达到重用目的。因为继承是一种紧耦合。
  7. 李式替换原则:子类可以替换父类。

02.某互联网公司正在设计一套网络聊天系统,为了限制用户在使用该系统时发表不恰当言论,需要对聊天内容进行特定敏感词的过滤,针对上述功能要求,采用()能够灵活配置敏感词的过滤过程。
A.责任链模式
B.工厂模式
C.组合模式
D.装饰模式

解答:答案选择A。敏感关键字的匹配需要一棒一棒的去筛选,这个时候推荐使用责任链模式。

03.某软件公司正在设计一个图像处理软件,该软件需求支持用户在图像处理过程中的撤销和重做等动作,为了实现该功能,采用()最为合适。
A.单例模式
B.命令模式
C.访问者模式
D.适配器模式

解答:答案选择B。设计模式的分类。
类模式和对象模式的区别,类模式趋向于静态化,没有对象级别的交互。静态类静态方法不需要实例化就可以调用,这就是类模式。工厂模式,适配器模式,解释器,模版方法都是类模式,其他的模式就都是对象模式了。

  • 装饰模式:动态的向类中增加职责。
  • 享元模式:一篇文章中有大量的重复的汉字,这个时候如果每一个汉字作为一个对象,那么对于重复的汉字来说空间的浪费是不可避免的。这个时候享元模式就共享第一次出现重复字的对象,之后的重复部分共享就可以了。
  • 代理模式:有时候不方便直接进行管控,所以增加一个中间层次作为代理。
  • 命令模式:封装一个对象请求,这个请求命令是可以撤销的。
  • 解释器模式:玩游戏的时候有自定义地图自定义关卡。需要一个解释器来支撑语法。
  • 中介者模式:不直接引用。让人想到代理模式。中介者解决信息不对称的问题,它把各方的信息都连接起来。比如国内有多家银行需要跨行转账,但并不能直接跨行转账,于是就产生了银联。银联作为中间节点将所有银行的转账业务都连接了起来。再比如房屋的买卖,以前是网状的依赖,现在变成了一对一,那么就需要使用中介者模式。ESB模式也使用到了中介者模式的思想。
  • 观察者模式:一个发生变化,会向观察他的人都发送消息。可以理解为发布订阅模式。
  • 模版方法:模版就是共性的东西。把不变的东西作为模版变得东西填进去就OK了。有算法的骨架,算法实现在子类。
  • 访问者模式:使用专门的第三方访问者来对其进行访问。比如你要统计书架上所有书的页数总和就可以使用访问者来实现。中介者是可以用来解耦的。
  • 桥接模式:继承的机制是否非常的复杂,是否需要拆分继承来简化。
    状态模式和策略模式的UML图都是一样的。

04.用户界面设计中,设计原则不正确的是()
A.为用户提供更多的信息和功能
B.减少用户记忆负担
C.保持界面的一致性
D.至于用户的控制之下

解答:答案选择A。此题考查人机界面设计。手机APP的流行让人机界面设计变得更加的重要。本题一眼就能选出A是错的。

  1. 保持界面的一致性包括了3项:
    允许用户将当前任务放入有意义的语境;在应用系列内保持一致性;
    如过去的交互模型已经建立起了用户期望,除非有迫不得已的理由,不要改变它。
  2. 减少用户的记忆负担
    减少对短期记忆的要求
    建立有意义的缺省
    定义直觉性的捷径
    以不断进展的方式揭示信息
    界面的布局应该基于真实世界的隐喻
  3. 置于用户的控制之下
    提供灵活的交互
    允许用户交互可以被中断或撤销
    使用户隔离内部技术细节
    设计应允许用户和出现在屏幕上的对象直接交互
    当技能级别增加时,可以使交互流水化,并允许定制交互。
    以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式。

04.()的选择是开发一个软件系统时的基本设计决策;()是最低层的模式,关注软件系统的设计与实现,描述了如何实现构件及构件之间的关系。引用计数是管理动态资源时常用的一种()
A.架构模式
B.惯用法
C.设计模式
D.分析模式

解答:答案选择A|B|B。

  • 架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策。
  • 设计模式:主要关注软件系统的设计,与具体的实现语言无关。
  • 惯用法:是最底层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用计数器就是C语言的一种惯用法。

05.某银行系统采用工厂方法描述其不用账户之间的关系。设计出的类图如下图所示。其中工厂方法中的Creator角色相对应的类是();与Product角色相对应的类是()。
A.Bank
B.Account
C.Checking
D.Savings

在这里插入图片描述
解答:答案选择A|B。

■知识点汇总

系统设计知识点汇总

Web程序设计知识点
有三个主要的方面分别是性能可用性安全性。如果web页面响应时间在十秒以上,那么就关掉页面,要么就切换到其他的页面。
和性能相关的技术:集群,负载均衡,缓存,主从技术,静态化。

  1. 单台机器到数据库与Web服务器分离
  2. 应用服务器集群
  3. 数据库读写分离化(主从数据库,读写分离)
  4. 用缓存缓解读库的压力

2.应用服务器集群

  • 2.1)可能产生的问题:用户的请求如何分发到服务器上来。如何去分配任务就是负载均衡的问题。
  • 2.2)多台服务器如何去维护Session的一致性,这样就涉及到有状态和无状态的问题。有两种方式解决,一种是专门弄一个Session服务器,另一种是自己的Session自己保存,保存在Cookie里面。Cookie保存在服务器端。

分布式与集群的区别
分布式是不同的服务分开,集群是相同的服务用多台机器去解决。分布式是处理和存储信息在不同的地方,集群是一群计算机联合在一起去处理某些任务。
CDN和P2P有相似的地方但是不一样。P2P是有意识的去部署节点。

负载均衡技术包括了

  1. 基于特定软件的负载均衡Http重定向(应用层)
  2. 反向代理负载均衡(应用层)
  3. 基于DNS的负载均衡(传输层)
  4. 基于NAT的负载均衡(传输层)
  5. 混合型负载均衡

负载均衡技术包括了静态算法和动态算法。
动态算法有:最小连接数算法,加权最小连接树算法,加权百分比算法。
静态算法:轮转算法,加权轮转算法,原地址哈希散列算法,目标地址哈希散列算法,随机算法。
应用层负载均衡:有Http重定向和反向代理服务器两种。

NO 应用层负载均衡技术 说明
01 反向代理服务器 由反向代理服务器根据算法转发到具体的服务器。它的特点是部署简单,但代理服务器可能成为性能的瓶颈
02 Http重定向 就是应用层的请求转发,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群

传输层负载均衡:

NO 传输层负载均衡技术 说明 特点
01 DNS域名解析负载均衡 在用户请求DNS服务器获取域名对应的IP地址时,DNS服务器直接给出负载均衡后的服务器IP 效率比Http重定向高,减少维护负载均衡服务器成本,但一个应用服务器故障,不能及时通知DNS,而且DNS负载均衡的控制权在域名服务器商那里
02 基于NAT的负载均衡 将一个外部IP地址映射为多个IP地址。对每次请求连接动态的转换为一个内部节点的地址 技术较为成熟,一般在网关位置,可以通过硬件实现。像四层交换机一般就采用这种技术。
发布了513 篇原创文章 · 获赞 299 · 访问量 89万+

猜你喜欢

转载自blog.csdn.net/Last_Impression/article/details/104176985
今日推荐