赞
踩
第1题:解释器,管道过滤器,隐式调用三种架构风格从机器学习流程定义的灵活性和学习算法的可扩展性两个方面进行对比与分析,哪个更适合于机器学习平台?
解释器:机器学习流程定义的灵活性高,可扩展能力强,因为解释器风格可以通过自定义流程规则及配套流程解释引擎开发,做到用户层面的流程完全定义,而不需要修改代码,所以无论是修改已有的业务流程,还是要扩展不同的角色,创建新角色的流程都非常便利。
管道过滤器:机器学习流程定义的灵活性较低,可扩展能力较弱。因为管道过滤器是把数据处理职能做成过滤器,把数据传递做成管道,此时如果流程不发生变化,是可以通过这种方式实现的,但一旦流程变化,或是扩展功能,需要对过滤器进行修改调整,或是流程在程序层面重建,此时必须修改代码完成任务。
隐式调用:机器学习流程定义的灵活性一般,可扩展能力一般。隐式调用强调的是通过间接方式进行调用,如采用事件机制,要完成某个动作时先触发事件,事件与相关动作关联,以提升灵活度,比管道过滤器强,但弱于完全自定义的解释器。
第2题:针对用户级别和折扣规则管理功能的架构设计问题,李工建议采用面向对象,王工建议采用基于规则,请从用户级别和折扣规则定义的灵活性、可扩展性、性能三个方面进行比较,更适合采用哪种架构风格?
灵活性:面向对象将用户级别、折扣规则等封装为对象,在系统启动时加载,灵活性较低。基于规则将用户级别、折扣规则等描述为可动态改变的规则数据,灵活性高。
可扩展性:面向对象加入新的用户和折扣规则时需要重新定义新的对象,并需要重启系统,可扩展性差。基于规则加入新的用户级别和折扣规则时只需要定义新的规则,解释规则即可进行扩展。
性能:面向对象的用户级别和折扣规则已经在系统内编码,可直接运行,性能较好。基于规则需要对用户级别和折扣规则进行实时解释,性能较差。
综上可以得出,针对用户级别和折扣规则管理功能更适合采用基于规则的架构风格。
第3题:针对手机应用程序集成开发环境,李工建议采用管道-过滤器,王工建议采用数据仓库,请从交互方式、数据结构、控制结构、扩展方法四个方面进行比较,更适合采用哪种架构风格?
交互方式:管道-过滤器数据在管道中传递,采用顺序结构或有限循环结构;数据仓库的数据在中心位置,中心为语法结构树,与周边结点都可以交互,采用星型结构。
数据结构:管道-过滤器在过滤器之间传递数据流;数据仓库采用文件或模型存储数据。
控制结构:管道-过滤器采用数据流驱动;数据仓库采用业务功能驱动。
扩展方法:管道-过滤器通过过滤器提供的标准接口适配;数据仓库采用数据模型适配。
第4题:什么是用例图?用例图中的参与者是什么?用例之间的关系有哪些?用例图中的用例模型和分析模型分别包括哪些步骤?
用例图是静态图,展现了一组用例、参与者以及它们之间的关系。用例图包括参与者、用例、通信关联三种元素。
用例图中的参与者是人、硬件或其它系统可以扮演的角色。用例之间的关系有包含、扩展、泛化。用例图用例模型包括(适合细调):1.识别参与者; 2.合并需求获得用例; 3.细化用例描述; 4.调整用例模型。
用例图分析模型包括:1.定义概念类; 2.识别类之间的关系; 3.为类添加职责; 4.建立交互图。
第5题:UML中顺序序列图与通信协作图之间的区别是什么?
顺序序列图是一种强调时间顺序的交互图,其中对象沿横轴排列,消息沿纵轴按时间顺序排列。对象生命线是一条垂直的虚线,它表示一个对象在一段时间内存在。
通信协作图是一种交互图,它强调的是发送和接收消息的对象之间的组织结构,强调通信的方式。
第6题:采用面向对象方法开发软件,通常需要建立三种形式的模型,它们是什么以及区别是什么?
功能模型定义“做什么”,描述系统功能。一般使用数据流图或用例图来建模。
动态模型定义“何时做”,描述系统控制结构。一般使用状态图来建模。
对象模型定义“对谁做”,描述系统静态数据结构。一般使用对象图或类图来建模。它是整个体系中最基础,最核心的部分。
第7题:请用300以内的文字,说明什么是数据库建模中的反规范化技术,指出采用反规范化技术能获得哪些益处,可能带来哪些问题?
规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种规范化设计的回退方法就叫做反规范化技术。
优点:降低了连接操作的需求,降低了外码和索引的数目,还可能减少关系表的数目,提高查询的效率。
缺点:数据重复存储,浪费了存储空间,可能出现数据库完整性的问题。为了保障数据库的一致性,增加了数据维护的复杂性,会降低修改的速度。
第8题:请用200以内的文字说明常见的反规范化设计方法?
1.增加冗余列; 2.增加派生列; 3.重新组表; 4.水平分割表; 5.垂直分割表;
第9题:请用200以内的文字说明在反规范化设计中,解决数据不一致性问题的三种常见方法?
1.触发器数据同步; 2.应用程序数据同步; 3.物化视图; 4.批处理维护;
第10题:解决Redis和MySQL数据实时同步的常见方案有哪些?
1. 实时同步方案。读时先查缓存,查不到再从DB查询,并保存到缓存;写时先写数据库,成功后,再更新或失效掉缓存。
2. 异步队列方式同步,可采用kafka等消息中间件处理。
3. 通过数据库插件,基于binlog来完成数据同步。
4. 利用触发器进行缓存同步。
第11题:请用300以内的文字从数据传输可靠性的角度对比分析TCP和UDP通信协议的不同?
1. TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP之所以可靠,是因为建立连接时有3次握手,通信时有回应机制,丢了包能重传,能保障通信可靠性。
2. UDP是一种面向无连接的传输层通信协议,丢了包不会重传,不能保障通信可靠性。
第12题:关系型数据库开发的阶段包括哪些?其中逻辑数据模型设计包含哪些任务?什么是超类实体?什么是派生属性?
数据库开发包括:需求分析,概念设计,逻辑设计,物理设计,实施阶段,运行维护。
其中逻辑设计阶段包括:
1. 确定数据模型。
2. 将ER图转换成表,将ER模型转换成关系模型。
3. 确定完整性约束。
4. 确定用户视图。
超类实体:将一些子实体所共有的属性抽象为一个单独的新实体,这个新的实体就是超类实体。
派生属性:根据其他属性计算得出的属性就是派生属性。如快递包裹费用中的总计就是派生属性。
第13题:软件系统中可行性分析包括哪4个方面?系统设计约束包括哪4类?
可行性经济用法:1.经济可行性; 2.技术可行性; 3.用户使用可行性; 4.法律可行性;
设计约束进城计策:1.进度约束; 2.成本约束; 3.技术约束; 4.政策标准约束;
第14题:什么是SQL注入攻击,并列举出两种抵御SQL注入攻击的方式?
SQL注入攻击就是把SQL命令插入到web表单,输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意攻击的目的。
抵御SQL注入攻击方式:
1. 使用正则表达式;
2. 使用参数化过滤性语句;
3. 检查用户输入合法性;
4. 用户相关数据加密处理;
5. 使用专业的漏洞扫描工具;
第15题:什么是软件架构风格?常见的架构风格有哪些?(架构风格数独虚调仓)
软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个架构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。架构风格反映了领域中众多系统共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
常见的架构风格包括:
一.数据流风格:面向数据流,按照一定的顺序从前向后执行程序。代表有批处理、管道-过滤器。
批处理:构件为一系列固定顺序的计算单元,构件之间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,数据必须是完整的,以整体的方式传递。
管道-过滤器:每个构件都有一组输入和输出,构件读取输入的数据流,经过内部处理,产生输出数据流。前一个构件的输出作为后一个构件的输入,前后数据关联。过滤器是构件,管道是连接件。
二.调用返回风格:构件之间存在相互调用的关系,一般是显示的调用。代表有主程序/子程序、面向对象、层次结构。
主程序/子程序:单线程控制,把问题划分为若干个处理步骤,构件是主程序和子程序,子程序通常可合成为模块。过程调用作为交互机制,充当连接件角色。
面向对象:构件是对象,对象是抽象数据类型的实例。在抽象数据类型中,数据的表示和它们的相应操作被封装起来,对象的行为体现在其接受和请求的动作。连接件是对象间交互的方式,对象是通过函数和过程调用来交互的。
层次结构:构件组成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己相邻的层。
三.独立构件风格:构件之间是相互独立的,不存在显示调用关系,而是通过某个事件触发、异步通信的方式来执行。代表有进程通信、事件驱动(隐式调用)。
进程通信:构件是独立的进程,连接件是消息传递。构件通常是命名过程,其消息传递的方式可以是点对点、异步或同步方式或远程调用的方式。
事件驱动(隐式调用):构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。
四.虚拟机风格:自定义了一套规则供使用者使用,使用者基于这个规则来开发构件,能够跨平台适配。代表有解释器、规则系统。
解释器:它含有一个虚拟机,通常包括一个完成解释工作的解释引擎、一个包含将被解释的代码存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度数据结构。
规则系统:包括规则集、规则解释器、规则/数据选择器和工作内存,一般用于人工智能和DSS中。
五.仓库风格:以数据为中心,所有的操作都是围绕建立的数据中心进行的。代表有数据库系统、黑板系统、超文本系统。
数据库系统:构件主要有两大类,一类是中央共享数据源,保存当前系统的数据状态;另一类是多个独立处理单元,处理单元对数据元素进行操作。
黑板系统:包括知识源、黑板和控制三部分。知识源包括若干独立的不同计算单元,提供解决问题的知识。知识源响应黑板的变化,也只修改黑板;黑板是一个全局数据库,包含问题域解空间的全部状态,是知识源的唯一媒介;知识源响应是通过黑板状态的变化来控制的。
超文本系统:构件以网状链接方式相互连接,用户可以在构件之间任意跳转到相关构件。
六.闭环-过程控制风格。
七.C2风格。
第16题:质量属性中性能,互操作性,功能性,安全性,可用性,可变性,可靠性,可修改性(幸福公安用遍可靠修改)是什么?以及系统架构风险、敏感点、权衡点、风险点和非风险点是什么?
1. 性能:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。如响应时间、吞吐量。设计策略:优先级队列、引入并发、资源调度等。
2. 互操作性:作为系统组成部分的软件不是独立存在的,经常与其它系统或自身环境相互作用。
3. 功能性:系统所能完成所期望的工作的能力。
4. 安全性:指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。如保密性、完整性、不可抵赖性、可控性等。设计策略:入侵检测、用户认证、追踪审计。
5. 可用性:系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。如故障间隔时间。设计策略:心跳、Ping/Echo、冗余、选举。
6. 可变性:指体系结构经扩充或变更而成为新体系结构的能力。
7. 可靠性:软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。如MTTF、MTBF。设计策略:心跳、Ping/Echo、冗余、选举。
8. 可修改性:指能够快速的以较高的性价比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价来衡量。包括可维护、可扩展、可移植、结构重组。设计策略:接口与实现分离、抽象、信息隐藏。
9. 可测试性:指软件发现故障并隔离和定位其故障的能力。设计策略:记录/回放、内部监视。
系统架构风险:指架构设计中潜在的、存在问题的架构决策所带来的隐患。
敏感点:为了实现某种特定的质量属性,一个或多个构件所具有的特性。
权衡点:影响多个质量属性的特性,是多个质量属性的敏感点。
风险点:某个做法有隐患,可能引起风险的因素可称为风险点。
非风险点:如果某件事是可行的,可接受的,则为非风险点。
第17题:数据库引入主从复制机制,能带来哪些好处?
1. 可扩展性更优。采用单台数据库服务器,随着访问量增加,必然会产生访问瓶颈,而主从结构大大方便服务器扩容,不影响系统使用。
2. 性能大大提升。商务平台用户量大,并发访问高,主从方式采用一主多从,满足不同用户可以从不同数据库读取数据,提高访问速度。
3. 负载均衡功能。一主多从相当于分担了主机任务,做了负载均衡。
4. 保证数据安全。主从方式实现了数据冗余,不会因为某台机器硬件故障而引起数据丢失。
第18题:信息工程方法中的“实体entity” 与面向对象方法中的“类class”之间有哪些不同之处?
实体用于数据建模,而类用于面向对象建模。实体只有属性,而类有属性和操作。
第19题:在面向对象方法中通常采用用例来捕获系统的功能需求。用例可以按照不同的层次来进行划分,其中的Real Use Cases和Essential(基本的,必需的) Use Cases有哪些区别?
Real Use Cases为基础用例,Essential Use Cases为抽象用例。他们的区别在于:
基础用例是实实在在与用户需求有对应关系的用例,是从用户需求获取的渠道得到的,而抽象用例是从基础用例中抽取的用例的公共部分,是为了避免重复工作,优化结构而提出的用例。
抽象用例用于分析阶段,它描述了用例的本质属性,它与如何实现这个用例无关,独立于实现该用例的软硬件环境;而基本用例用于设计阶段,描述了用例的实现方式。
第20题:什么是面向服务架构SOA?ESB在SOA中的作用和特点是什么?(ESB总描注,传转发)
SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义的接口进行通信,不涉及底层编程接口和通信模型。SOA是一个组件模型,它将应用程序的不同功能单元(服务)通过服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它独立于实现服务的硬件平台、操作系统和编程语言,这使得构件在各系统中的服务以一种统一和通用的方式进行交互。
ESB企业服务总线在SOA中的作用和特点:
1. ESB是一种实现方式,ESB在面向服务的架构中起到总线作用,将各种服务进行连接和整合。
2. 描述服务的元数据和服务注册管理。
3. 在服务请求者和提供者之间传递数据,并且对这些数据进行转换,支持同步模式和异步模式。
4. 具有发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力包括对安全的支持、服务质量保证、可管理性和负载均衡等。
第21题:MVC架构中包含哪三种元素,它们的作用分别是什么?
MVC是一种架构模式,它分离了表现与交互,包括模型、视图、控制器三个部分。
1、模型:是程序的主体部分,包括业务数据和业务逻辑,一个模型能为多个视图提供数据。
2、视图:是用户看到并与之交互的界面,视图向用户显示相应的数据,并能接收用户的输入。
3、控制器:接收用户的输入并调用模型和视图来完成用户的需求。一方面负责从视图读取数据,控制用户输入;另一方面将模型处理的数据调用视图来展示给用户。
第22题:EJB构件中的Bean构件分为哪三种类型,每种类型Bean的职责是什么?
1、会话Bean:维护一个短暂的会话。
2、实体Bean:维护一行持久稳定的数据。
3、消息驱动Bean:异步接受消息。
第23题:请用200字以内文字描述什么是"响应式Web 设计”,并列举2个响应式Web设计的实现方式?
响应式Web设计是指我们设计与开发的页面可以根据用户的行为和不同的设备环境作出相应的响应来调整页面的布局,以提供用户可感知的流畅的阅读和操作体验。
实现方式有:1、弹性布局; 2、媒体查询; 3、流式布局;
第24题:什么是Redis?什么是MemCache?它们两者之间的差异是什么?
Redis是一个开源的使用C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value型数据库,并提供多种语言的API。
MemCache是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它在内存中维护一个巨大的Hash表,能够存储各种格式数据,包括图片,视频,文件等。
Redis和MemCache的差异:
1. Redis和Memcache都是内存数据库,都支持Key-Value数据类型。MemCache可以缓存其它东西,如图片,视频等。Redis支持string、list、set、zset、hash等数据结构的存储。
2. Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启时可以再次加载进行使用。而MemCache挂掉后数据会丢失。
3. 灾难恢复方面,MemCache挂掉后数据不可恢复。Redis数据丢失后可以恢复。
4. Redis并不是所有数据都一直存储在内存中,当物理内存快用完时,会将一些很久未使用的value值交换到磁盘。这是和MemCache相比一个最大的区别。
5. Redis在很多方面支持数据库的特性,可以说它就是一个数据库系统。而MemCache只是简单的Key-Value缓存。
第25题:文件存储系统与关系数据库在设计难度、数据冗余程度、数据架构、应用扩展性方面的差异?
1. 设计难度:文件系统针对特定应用系统设计,难度较小;关系数据库数据结构需要符合关系模式,设计难度较大。
2. 冗余程度:文件系统数据冗余较大,可能在多个文件中复制相同的数据属性;关系数据库遵循数据库范式,数据冗余较少。
3. 数据架构:文件系统以应用系统要求为中心组织和管理数据;关系数据库以数据库为中心组织和管理数据。
4. 应用扩展性:文件系统符合特定应用系统要求的文件数据很难在不同应用系统之间共享数据。关系数据库数据独立于应用系统,很容易在不同的应用系统之间共享数据。
第26题:内存数据库与关系型数据库在数据模型、读写性能、存储容量、可靠性方面的差异?
1. 数据模型:内存数据库使用Key-Value键值对模式;关系数据库使用关系模式。
2. 读写性能:内存数据库直接读写内存,性能较高;关系数据库读写外存,性能较低。
3. 存储容量:内存数据库基于内存存储,容量受限;关系数据库基于磁盘存储,容量大。
4. 可靠性: 内存数据库恢复机制复杂,可靠性低;关系数据库内建恢复机制,可靠性高。
第27题:J2EE架构的四层结构是什么?其对应功能分别是什么?
1. 表示层:J2EE应用程序有基于Web方式的Html页面和Applets客户层组件。
2. 应用层:J2EE的web层组件可以是JSP页面或Servlet。JSP用于显示、收集数据,是MVC的视图层。Servlet用于处理复杂的业务逻辑,会调用service方法处理服务,是MVC的控制器层。DAO用于连接数据库以及对数据库进行操作,是MVC的模型层。
3. 服务层:包含EJB的三种企业级bean,会话bean,实体bean,消息驱动bean。
4. 系统层:包含企业资源计划ERP,大型机事务处理,数据库系统等。
第28题:什么是ORM?请用300以内文字说明数据库程序访问方式与采用ORM方式的优缺点?
ORM即对象关系映射Object-Relational Mapping,它在关系型数据库和对象之间建立一个映射,这样我们在操作数据库的时候,就不需再和复杂的SQL语句打交道,只要像平时操作对象一样即可。
1. 程序访问方式:
优点:性能比直接使用SQL好;可以处理复杂查询语句。
缺点:要求程序员懂SQL语句;修改与维护相对困难。
2. ORM方式:
优点:程序员不用再写SQL来进行数据库操作,大大降低学习和开发成本;减少代码量,降低由于SQL代码质量差而带来的影响。
缺点:性能比直接使用SQL差;不太容易处理复杂查询语句。
第29题:请用300以内文字说明什么是数据持久层?使用数据持久层能为项目开发带来哪些好处?
数据持久层是一组软件服务,将应用程序与该程序使用的数据源分离,为整个项目提供一个统一、安全、并发的数据持久机制。
使用数据持久层好处有:
1. 程序代码重用性强,即使更换数据库,只需要更改配置文件,不必重写代码。
2. 业务逻辑代码可读性强,在代码中不会有大量的SQL语句,提高程序的可读性。
3. 持久化技术可以自动优化,以减少对数据库的访问量,提高程序的运行效率。
4. 简化开发工作,让开发人员更关注于业务逻辑的开发。
5. 通过ORM对象关系映射向业务逻辑提供面向对象的数据访问。
第30题:请用300以内文字说明数据流图DFD的基本元素及其作用?
数据流图DFD包括数据流、加工、外部实体、数据存储。其作用分别是:
1. 数据流是数据在系统内传播的途径,因此由一组成分固定的数据组成。
2. 加工是对数据进行处理的单元,它接受一定数据的输入,对其进行处理,并产生输出。
3. 外部实体代表系统之外的实体,可以是人、物或其它软件系统。
4. 数据存储表示信息的静态存储,可以是文件、数据库元素等等。
第31题:什么是设计模式?它的四个基本要素是什么?设计模式按照其目的可分为创建型、结构型、行为型,三者的作用是什么,包含哪些具体设计模式?7大设计原则是什么?
设计模式是前人经验的总结,它使人们可以方便地复用成功的设计和架构。它的四个基本要素是模式名称、问题、解决方案、效果。
创建型模式用于描述“怎样创建对象”,主要特点是“将对象的创建与使用分离”。创建型5种(建原工抽单)包括:建造者、原型、工厂、抽象工厂、单例模式。
结构型模式用于描述如何将类或对象按照某种布局组成更大的结构。结构型7种(桥代理组装外箱适配器)包括:桥接、代理、组合、装饰器、外观、享元、适配器模式。
行为型模式用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。行为型11种(责备三者两器,命令状态莫策)包括:责任链、备忘录、访问者、中介者、观察者、迭代器、解释器、命令、状态、模板方法、策略模式。
7大设计原则(狄依杰合理开单原则):
迪米特最少知道原则(Law of Demeter Principle):一个实体应尽量少的与其它实体发生相互作用。
依赖倒转原则(Dependency Inversion Principle):抽象不依赖细节,细节应依赖抽象。针对接口编程,而不要针对具体实现编程。
接口隔离原则(Interface Segregation Principle):使用多个专门的接口来取代一个统一的接口。
合成复用法则(Composite Reuse Principle):尽量多使用组合/聚合关系,而少使用继承关系。
李氏替换原则(Liskov Substitution Principle):任何基类可以出现的地方,子类一定可以出现。子类可以扩展父类的功能,但不能改变父类原有的功能。子类继承父类时尽量不要重写父类的方法。
开闭原则(Open-Closed Principle):对扩展开放,对修改关闭。
单一职责原则(Single Responsibility Principle):类的职责要单一,不要将太多的职能放在一个类中。
一. 创建型: 建原工抽单。
建造者模式Builder:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。
原型模式Prototype:用一个已经创建的实例作原型,通过复制该原型对象来创建一个和原型相似的新对象。
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,它使一个类的实例化延迟到子类。
抽象工厂模式:提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类。
单例模式Singleton:一个类只有一个实例,且该类能自行创建这个实例,有懒汉式单例和饿汉式单例。
二. 结构型: 桥代理组装外箱适配器。
桥接模式Bridge:将抽象与实现分离,使他们可以独立变化。
代理模式Proxy:为其他对象提供一种代理以控制对这个对象的访问。
组合模式Composite:将对象组合成树型结构以表示“整体-部分”的层次结构,使访问具有一致性,如访问目录。
装饰器模式Decrator:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责的模式。
外观模式Facade:为多个复杂的子系统提供一个一致的高层接口,使这些子系统更加容易被访问的模式。
享元模式Flyweight: 运用共享技术来有效地支持大量细粒度对象的复用,如星际中创建兵种。
适配器模式Adapter:将一个类的接口转换成另一个接口,使原本由于接口不兼容而不能一起工作的类能一起工作。
三. 行为型:责备三者两器,命令状态莫策。
责任链模式:将所有请求的处理者通过前一对象记住其下一对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
备忘录模式Memento:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态,它提供了一种可以恢复状态的机制。
访问者模式Visitor:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素新的操作,为数据结构中的每个元素提供多种访问方式。
中介者模式Mediator:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散。
观察者模式Observer:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
迭代器模式Iterator:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。
解释器模式Interpreter :给分析对象定义一个语言,定义该语言的文法表示,再设计一个解析器来解释语言中句子。
命令模式Command:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,方便将命令对象进行储存、传递、调用、增加与管理。
状态模式: 对有状态的对象,把复杂的判断逻辑提取到不同对象中,允许状态对象在内部状态改变时改变其行为。
模板方法模式Template Method:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
策略模式Strategy:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,如各种排序算法。
第32题:采用面向对象方法进行软件系统的分析与设计时,一项重要的工作是建立分析类图和设计类图,它们两者的差异是什么?什么是边界类、实体类和控制类?什么是接口对象、实体对象和控制对象?
分析类图是从业务领域获取信息的,在描述上更多的使用了业务领域的语言和词汇。
设计类图是从编程实现的角度来设计类图的,更多的考虑类编码的实现。
边界类:一种用于对系统外部环境与内部运作之间的交互进行建模的类。接口对象是用来表示用户与系统之间交互方式的对象类型。如窗口、通信协议、打印机接口等。
实体类:用于对必须存储的信息和相关行为进行建模的类。实体对象是用来表示业务域的事实数据并需要持久化存储的对象类型。如事件、人员等。
控制类:对一个或几个用例所特有的控制行为进行建模的类。控制对象是用来表示业务系统中应用逻辑和业务规则的对象类型。通常控制其它对象。
第33题:什么是构件?什么是连接件?什么是软件重用?构件的三个特性是什么?
构件又称组件,是一个功能相对独立的、具有可重用价值的软件单元。在面向对象方法中,一个构件由一组对象组成,包含了一些协作的类的集合。
连接件是一种架构元素,它通过对构件之间交互规则的建模来实现构件之间的连接。
软件重用是使用已有的软件产品(如设计、代码、文档等)来开发新的软件系统的过程。可分为垂直式重用和水平式重用。
构件的三个特性是:1.独立部署单元;2.作为第三方的组装单元;3.没有外部可见的状态。
第34题:什么是中间件?中间件的作用和特点是什么?
中间件是一种独立的系统软件或服务程序,可以帮助分布式应用软件在不同的技术之间共享资源。
中间件的作用:
1. 负责客户机与服务器之间的连接与通信,以及客户机与应用层之间的高效通信。
2. 提供应用层不同服务之间的互操作机制,以及应用层与数据库之间的连接和控制机制。
3. 提供多层架构的应用开发和运行的平台。
4. 屏蔽硬件、操作系统、网络和数据库的差异。
5. 提供应用的负载均衡和高可用性、安全机制与管理功能。
6. 提供一种通用的服务去执行不同的功能,避免重复的工作和使应用之间高效协作。
第35题:什么是软件产品线?
软件产品线是一个产品集合,这些产品共享一个公共的,可管理的特征集,这个特征集能满足特定领域的特定需求。它包括核心资源和产品集合两个方面。
第36题:什么是特定领域软件架构DSSA?它的2个领域,3个阶段,4种角色分别是什么?
特定领域软件架构DSSA是在一个特定应用领域中为一组应用提供组织结构参考的标准软件架构,是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考架构等组成的开发基础,其目标是支持在一个特定领域中多个应用的生成。
2个领域:垂直域是在一个特定领域中通用的软件架构,是一个完整的架构。水平域是在多个不同的特定领域之间相同的部分的小工具。(如收费系统)。
3个阶段:领域分析(获得领域模型)、领域设计(获得DSSA)、领域实现(开发和组织可重用信息)。
4种角色:领域专家、领域分析师、领域设计人员、领域实现人员。
第37题:什么是基于架构的软件开发方法ABSD?它的6个过程是什么?(ABSD虚设档,复现演)
ABSD方法是架构驱动,强调由业务、质量和功能需求组合驱动架构设计。它强调采用视角和视图来描述软件架构,采用用例和质量属性场景来描述需求。用例描述的是功能需求,质量属性场景描述的是质量需求。开发过程包括6步:架构需求,设计,文档化,复审,实现,演化。
第38题:架构权衡分析方法ATAM,它的含义是什么?它的四个阶段9个步骤是什么?
架构权衡分析方法ATAM是一种基于场景的系统架构评估方法,主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。ATAM分为4个主要的活动包括场景和需求收集、架构视图描述、属性模型构造和分析、架构决策和折中,整个评估过程强调以属性作为架构评估的核心概念。
它的四个阶段9个步骤是:
一.描述和介绍阶段(包括1.描述ATAM方法 2.描述业务动机 3.描述架构);
二.调查和分析阶段(包括4.确定架构方法 5.生成质量属性效用树 6.分析架构方法);
三.测试阶段(包括7.讨论和对场景分级 8.分析架构方法);
四.报告阶段(包括9.描述评估结果);
第39题:软件架构分析方法SAAM,它的6个步骤是什么?
软件架构分析方法SAAM是一种基于场景的系统架构评估方法,最初是用来分析架构的可修改性的,但实践证明也可用于对许多其它质量属性及系统功能的快速评估。它的6个步骤包括:
1,形成场景;
2,描述架构;
3,对场景进行分类和确定优先级;
4,对间接场景的单个评估;
5,评估场景的相互作用;
6,形成总体评价;
第40题:PERT图和甘特图之间的区别是什么?
PERT项目评估与评审技术图是一种图形化的网络模型,描述一个项目中任务和任务之间的关系。每个节点表示一个任务,通常包括任务编号、名称、开始和结束时间、持续时间和松弛时间。
甘特图是一种简单的水平条形图,它以一个日历为基准描述项目任务,横坐标表示时间,纵坐标表示任务,图中的水平线段表示对一个任务的进度安排,线段的起点和终点对应在横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长度表示完成该任务所需的时间。
PERT图主要描述不同任务之间的依赖关系;甘特图主要描述不同任务之间的重叠关系。
第41题:关系数据库中实体完整性、参照完整性、用户定义完整性是什么?
实体完整性:保证关系中的每个元组都是可识别和唯一的。指关系数据库中所有表都必须有主键,不允许表中存在无主键值的记录,不允许存在主键值相同的记录。
参照完整性:是指多个实体或关系之间的关联关系,就是定义外键与被参照的主键之间的引用规则。外键一般要求为空或者等于其所参照的关系中的某个元组的主键值。
用户定义完整性:指关系中属性的取值范围,防止属性的值与应用语义矛盾。
第42题:商业智能AI包括:
1. 数据预处理ETL(指数据抽取、数据转换和数据加载);
2. 建立数据仓库;
3. 数据分析。分为OLAP联机分析处理(包括数据汇总/聚集、切片、切块、下钻、上卷、旋转);和数据挖掘(包括OLTP联机事务处理、关联分析、分类、聚类);
4. 数据展现;
第43题:软件架构的4+1视图分别是什么?(进场勿开锣4+1视图)
1. 进程视图(对应UML进程视图):侧重于系统的运行特性。一般用状态图或活动图来表示。
2. 场景视图(对应UML用例视图):是最重用的需求抽象。一般用用例图表示。
3. 物理视图(对应UML部署视图):考虑如何将软件映射到硬件上。一般用部署图来表示。
4. 开发视图(对应UML实现视图):侧重于软件模块的组织和管理。一般用构件图来表示。
5. 逻辑视图(对应UML逻辑视图):描述系统的功能需求。一般用类图来表示。
第44题:用户界面设计的3条黄金原则是什么?
1. 置于用户的控制之下;
2. 减少用户的记忆负担;
3. 保持界面的一致性;
第45题:结构化需求分析需要建立三个模型分别是什么?结构化设计包括哪些?
结构化需求分析阶段建立:功能模型(使用DFD)、行为模型(使用STD)、数据模型(使用E-R图)和数据字典。结构化设计包括:架构设计、接口设计、数据设计、过程设计。
第46题:什么是软件需求?需求按层次怎么分类?需求开发和需求管理两大过程具体包括哪些内容?
软件需求是指用户对系统在功能、性能、行为、设计约束等方面的期望。
需求按层次分为业务需求、用户需求、系统需求。系统需求包括功能需求、非功能需求和设计约束。
需求开发包括:需求获取、需求分析、需求定义(生成需求规格说明书SRS)、需求验证。
需求管理包括:变更控制、版本控制、需求跟踪、需求状态跟踪。
第47题:什么是需求分析?需求分析的主要任务包括哪些?
需求分析是把杂乱无章的用户要求和期望转化为用户需求的过程。需求分析的主要任务包括:
1. 绘制系统上下文范围关系图;2. 创建用户界面原型;3. 分析需求的可行性;4. 确定需求的优先级;5. 建立需求模型;6. 创建数据字典;7. 使用QFD质量功能部署,确定常规需求、期望需求和意外需求。
第48题:请说明状态图与活动图的含义及其区别?
状态图主要用于描述一个对象在其生命期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件,以及因状态转移而伴随的动作。
活动图主要用于描述系统的工作流程和并发行为。它描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,可以表达并发执行的过程,可以有多个结束状态。
两者最大的区别是:状态图侧重于描述行为的结果,而活动图侧重描述行为的动作。活动图可描述并发行为,而状态图只能描述一个处理过程。
第49题:请说明数据流图和系统流程图之间有哪些方面的区别?
1. 数据流图处理过程可以并行,系统流程图在某个时间点只能处于一个处理过程。
2. 数据流图展现系统的数据流,系统流程图展现系统的控制流。
3. 数据流图展现的是全局的处理过程,遵循不同的计时标准,系统流程图中处理过程遵循一致的计时标准。
第50题:请说明流程图和活动图之间有哪些方面的区别?
1. 流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。而活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
2. 流程图只能表达顺序的执行过程,活动图则可以表达并发执行的过程。
3. 活动图可以有多个结束状态,而流程图只有一个结束状态。
结构化设计中 数据流图 与 流程图 特点区别:
数据流图:并发执行,展现数据流,遵循不同计时标准。
流程图: 1个处理过程,展现控制流,遵循一致的计时标准。
面向对象设计中 活动图 与 状态图 特点区别:
活动图:并发执行,强调行为动作。
状态图:1个处理过程,强调行为结果。
第51题:UML的14种图分为静态图7种,动态图7种,分别是什么?
静态类组织部队购包,动态用交互定顺通活状。
静态图包括类图、组合结构图、制品图、部署图、对象图、构件图、包图。
动态图包括用例图、交互概览图、定时图、顺序序列图、通信协作图、活动图、状态图。
类的6种关系依赖强度:泛化/实现(三角形箭头) > 组合/聚合(菱形) > 关联/依赖(普通箭头)
第52题:信息系统生命周期分为哪5个阶段,每个阶段产出物是什么?
1.系统规划阶段。六个步骤是:1.确定系统目标;2.确定实施方案;3.确定建设方案;4.对现有系统进行初步调查;5.分析子系统的组成和基本功能;6.进行可行性研究。产出物是可行性研究报告,系统设计任务书。
2.系统分析阶段。也称逻辑设计阶段。主要任务是回答系统“做什么”问题,指出现行系统的局限性和不足之处,确定新系统的基本目标和逻辑功能要求,提出新系统的逻辑模型。产出物是系统说明书。
3.系统设计阶段。也称物理设计阶段。主要任务是回答系统“怎么做”的问题,根据系统说明书规定功能要求,具体设计实现逻辑模型的技术方案,设计新系统的物理模型。可分为总体设计(概要设计)和详细设计两个阶段。产出物是系统设计说明书,即概要设计说明书和详细设计说明书。
4.系统实施阶段。将设计的系统付诸实施。产出物是实施进展报告,系统测试分析报告。
5.系统运行与维护阶段。
第53题:能力成熟度模型CMM和能力成熟度模型集成CMMI分别包括哪5个级别?
都包括初始级和优化级。CMM重定管,包括:可重复、已定义、已管理。
CMMI管定量,包括:已管理、已定义、定量管理。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。