1.SE
1.1 描述软件体系结构的分层风格
分层风格:根据不同的抽象层次将系统组织为层次式结构,每个层次被建立为一个部件,不同部件之间通常用程序调用方式进行连接。
优点:1.设计机制清晰易于理解。2.支持并行并发。3.更好的可复用性和内部可修改性。
缺点:1.交互协议难以修改。2.性能损失。3.难以确定层次数量和粒度。
1.2 请为下面用例描述建立分析类图
建立分析类图的具体几个步骤如下:
1.识别候选类
2.筛选候选类
3.识别关联
4.确定重要属性
写完上面每一步所需要的对象的类后,画图,画图包括中文的类名,如(用户)和属性(姓名,编号),然后每个类直接用直线连起来,直线中间写两个类之间的动作,如(提交、发起、申请、响应),然后直线的两端可以用(1-1、*-*)表示是1对多还是多对多的关系。
1.3 软件工程
1.应用系统的、规范的、可量化的方法来开发、运行和维护软件、即将工程应用到软件。
2.对以上各种方法的研究。
1.4 软件需求
1.需求就是用户的一种期望,用户为了解决问题或达到某些目标所需要的条件或能力。
2.系统或系统部件为了满足合同、标准、规范或其他正式文档所规定的要求而需要具备的条件或能力。
3.对上述的一个条件或一种能力的一种文档化表述。
1.5 请解释面向对象式软件体系结构风格,说明其优缺点
面向对象式:该风格将系统组织为多个独立的对象,每个对象封装其在内部的数据,并基于数据对外提供服务,不同对象之间通过协作机制共同完成系统任务。
优点:1.内部实现的可修改性。2.易开发、易理解、易服用的结构组织。
缺点:1.无法消除接口的耦合,标识耦合,面向对象编程中的副作用。
1.6 软件质量保障主要有哪三种手段
1.评审:由作者之外的其他人来检查产品问题。
2.测试:主要包括单元测试、集成测试、系统测试。
3.质量度量:用数字量化的方式描述软件产品。
1.7 请以ATM取款任务为主题,编写取款的用例
编写用例题的模板:
ID:WithDrawProcess
参与人:xxx,目标是xxx
触发条件:xxx将银行卡插入卡槽
前置条件:xxx
后置条件:xxx
正常流程:1.xxx 2.xxx 3.xxx
扩展流程:(异常情况)1.xxx 2.xxx
特殊需求:1.响应时间 2.xxx
1.8 持续集成
持续集成:尽早集成和频繁集成,即在开发之初就利用stub开始集成和每次开发完成一些任务后就可以替换stub中的相应组件。
1.9 需求分为哪三个层次
1.业务需求:用于描述为什么开发系统。
2.用户需求:执行实际工作的用户对系统所能完成的具体任务的期望。
3.系统级需求:用户对系统级行为的期望,每个系统级需求反映了一次外界与系统的交互行为,或者系统的一个实现细节。
1.9.1 从三个层次出发,各描述一条图书管理系统中的需求
1.业务需求:提供在线借阅、归还图书服务。
2.用户需求:系统应该允许用户在线搜索馆内图书信息。
3.系统级需求:用户在输入图书名或其他检索信息后,系统应该提供所有可借阅书籍列表。
1.10 什么是黑盒测试
将测试对象看成一个黑盒子,完全基于输入和输出数据来判定测试对象的正确性。
1.10.1 设计黑盒测试用例的方法
1.等价类划分:把所有可能的输入域划分成若干子集,然后从每个子集中选取具有代表性的数据作为测试用例。
2.边界值分析:对等价类划分的补充,针对边界情况设计测试用例。
3.决策表:用于设计复杂逻辑的测试用例。
4.状态转换:用户处理输入输出与状态相关联的复杂测试对象。
1.11 说明下工程和科学的区别
1.科学是关于事务的基本原理和事实的有组织、有系统的知识。
2.科学的主要任务是研究世界万物变化的客观规律,他解决“为什么”的问题。
3.工程是自然科学或各种专门技术应用到生产部门中而形成的各种学科的总称,其目的在于利用和改造自然来为人类服务。
4.通过工程可以生产和开发出对社会有用的产品。
5.科学可以作为工程的指导知识,譬如软件工程的指导知识是计算机科学。
1.12 什么是集成测试,什么是单元测试,单元测试用例和集成测试用例有什么区别
1.单元测试对程序单元进行正确性检验的测试工作。
2.集成测试:通过大爆炸式的集成策略或者增量集成策略对系统的接口进行正确性检验的测试工作。
测试用例的区别:
单元测试主要关注代码段内部的具体逻辑,因此用例选择要尽可能的验证代码逻辑的正确性。
集成测试则侧重于测试单元间的结合,因为用例选择也要侧重于选择能够使单元间交互的用例。
1.13 功能性需求和非功能性需求
功能需求是软件系统需求中最常见、最主要和最重要的需求,同时它也是最为复杂的需求,是一个软件产品能够解决用户问题和产生价值的基础。
非功能性需求主要包括性能需求、质量属性、对外接口、约束和数据需求等。其中质量属性是非功能性需求中影响最大的需求。
1.14 写出四个体系结构视角
1.组合视角:关注功能分解和运行时分解、子系统的构造,构建的复用。
2.逻辑视角:关注静态结构,类型和实现的复用。
3.依赖视角:关注互联、共享。
4.信息视角:关注持久化信息。
5.接口视角:关注服务的定义、服务的访问。
1.15 质量模型的可用性
1.易学性:新手用户容易学习,能够很快的使用系统。
2.效率:熟练用户使用系统完成任务的速度。
3.易记性:以前使用过软件系统的用户,能够有效记忆或者快速的重新学会使用该系统。
4.出错率:用户在使用系统时,会犯多少错,错误有多严重,以及是否能从错误中很容易的恢复。
5.主管满意度:让用户有良好的体验。
1.16 举例说明软件生命周期模型描述的是什么
软件生命周期模型是描述软件开发过程中各种活动如何执行的模型。有瀑布模型、原型模型、增量模型、迭代模型、螺旋模型等。
以瀑布模型为例,它要求软件开发分为需求分析、软件设计、软件构成、软件测试、软件交付与维护阶段,每个阶段需要编写相应文档,且只有经过审核才能进入下一个阶段。
1.17 黑盒测试和白盒测试的差别
1.黑盒测试是基于规格的,将测试对象看成一个黑盒子,完全基于输入和输出数据来判定测试对象的正确性。白盒测试是基于代码的,将测试对象看作透明,按照测试对象内部的程序结构来设计测试用例进行测试。
2.黑盒的测试方法有:1.等价类划分 2.边界值分析 3.决策表 4.状态转换 白盒测试方法有:1.语句覆盖 2.条件覆盖 3.路径覆盖
3.白盒和黑盒测试的优缺点:
白盒优点:1.覆盖率较高 2.发现缺陷的数量较多 缺点:1.测试开销大 2.不能检验需求规格
黑盒优点:1.测试效率高 2.可以检验需求规格 缺点:1.覆盖率低,发现缺陷的数量较少
1.18 抽象和分解的关系
分解是横向将系统分割为几个相对简单的子系统以及各子系统之间的关系,分解之后每次只需关注经过抽象的相对简单的子系统及其相互间的关系,从而降低了复杂度;
抽象则是在纵向上聚焦各自系统的接口,抽象可以分离接口和实现过程,让人更好地关注系统本质,降低复杂度。
分解和抽象一般是一起使用的,可以既将系统分解为子系统,又通过抽象分离接口与实现。
1.19 重构是什么,在什么情况下发生
重构:修改软件系统的严谨方法,在不改变代码外部表现(即系统功能)的情况下改进其内部结构(即提升详细设计结构的质量)
重构发生在新功能增加完成之后,用于消除新功能所带来的负面影响。
1.20 单元测试、集成测试、系统测试的区别
单元测试:测试一个单元接口,是对程序单元(软件设计的最小单位)进行正确性检验和测试工作。
集成测试:测试多个单元接口,即对程序模块一次性或采用增量方式组装起来,对系统的接口进行正确性检验的测试工作。
系统测试:测试全部单元接口,测试关注整个系统的行为。
单元测试和集成测试更加专注技术上的正确性,重在发现设计缺陷和代码缺陷。系统测试更关注不符合需求的缺陷和需求自身的内在缺陷。
1.21 配置管理有哪些内容,例举五个
1.标识配置项
首先要确定有哪些配置项需要被保存和管理。其次要给配置项确定标识,设置唯一的ID。最后要详细说明配置项的特征,包括生产者,基线建立时间,使用者等。
2.版本管理
为每一个刚纳入配置管理的配置项赋予一个初始的版本号,并在发生变更时更新版本号。
3.变更管理
4.配置审计
5.状态报告
6.软件发布管理
2.OS
2.1 进程映像包括哪些组成部分
1.程序段 2.数据段 3.栈 4.属性
2.2 I/O软件一般分为四层结构,请按照自顶向下的顺序写出四层结构的名称
1.用户级I/O软件:进行I/O系统调用,格式化I/O。
2.设备无关软件:实现一般性的I/O功能,并向用户软件提供接口。
3.设备驱动程序:负责将用户提交的逻辑I/O请求映射为物理I/O操作的启动和执行。
4.中断处理程序:当I/O结束时负责唤醒驱动程序。
2.3 模式切换
CPU从核心态切换到用户态或者从用户态切换到核心态。
2.4 临界区
进程中用于访问临界资源的那段代码。
2.5 死锁的四个必要条件
1.互斥条件:资源只能互斥访问。
2.不剥夺条件:进程获得的资源只能由自身释放。
3.请求与保持条件:每次只申请部分资源,且继续占用已分配资源。
4.循环等待条件:每个进程已经获得的资源被循环等待链中的下一个进程请求。
2.6 七进程状态模型
1.新建态 2.挂起就绪态 3.就绪态 4.运行态 5.等待态 6.挂起等待态 7.终止态
画图的话,用椭圆表示状态,箭头表示动作
双箭头有三组:
挂起就绪——就绪
就绪——运行
挂起等待——等待
2.7 特权指令
只能由操作系统内核部分使用,不允许用户直接使用的指令。
2.8 程序的局部性原理
在一个较短的时间内仅使用程序代码的一部分,相应的,程序所访问的存储空间也局限在某个区域内。
时间局部性:循环结构 空间局部性:数组
2.9 内部碎片
已经分配给作业但未被利用的内存空间
2.10 系统调用
操作系统提供给程序使用的系统服务函数或过程。
2.11 原语
底层可被调用的运行时间较短的公用小程序,原语是不可中断的指令序列。
2.12 Spooling系统结构示意图
输入设备、预输入程序、输入井、输出井、井管理程序、缓输出程序、输出设备
3.CN
3.1 Split horizon
水平分割:路由器从某个接口接收到的更新消息不允许再从这个接口发回去。
3.2 RAPR
反向地址转换协议:用于将局域网中某个主机的物理地址转换为IP地址。
3.3 Time division multiplexing
时分多路复用:将物理信道按时间划分为若干时间片,不同信号轮流使用。
3.4 PPP
点对点协议:面向字节的数据链路层协议,应用于直接连接在两个节点的链路上,用来通过拨号或者专线方式建立点对点连接发送数据。
3.5 CSMA/CD
CSMA/CD即带有冲突检测的载波侦听多路访问协议,在发送前先检测总线是否有其他计算机在发送数据,没有则发送数据。并在发送数据的同时检测信道是否有冲突,若有则停发并等待一段时间后重新发送。碰撞检测就是边发送边侦听,以便判断自己在发送数据时其他站点是否也在发送数据。
3.6 试描述单域OSPF工作过程
1.OSPF服务器相互发送HELLO报文,建立邻居关系。
2.邻居路由器之间相互通告自身的链路状态信息(LSA)。
3.经过一段时间的LSA泛洪后所有路由器形成统一的LSDB(链路状态数据库)。
4.路由器根据SPF(最短路径优先)算法,以自己的根计算最短生成树,形成路由转发信息。
3.7 试描述具有五层协议的网络体系各层的主要功能
1.物理层(传输单位:bit):物理层的任务是透明的传输比特流。
2.数据链路层(传输单位:帧):将网络层传下来的IP数据包封装成帧。具体功能包括:1.封装成帧。2.差错控制。3.流量控制。4.传输管理 。
3.网络层(传输单位:数据报/IP分组):1.将传输层产生的报文段或用户数据报封装成分组。2.选择合适的路由。3.差错控制。4.流量控制。5.拥塞控制。
4.传输层(传输单位:TCP报文段/UDP用户数据报):负责主机中两个进程之间的通信。
5.应用层:处理高级协议,显示问题,编码和会话控制等问题。
扩展:OSI七层模型中
会话层:管理主机间的会话进程,即建立、管理、终止会话。
表示层:主要用户处理在两个通信系统中交换信息的表现方式,如编码。
应用层:提供系统与用户的接口。
3.8 ICMP
网络控制报文协议,用来给主机或路由器报告差错和异常情况。
3.9 SMTP
简单邮件传输协议,规定了两个相互通信的SMTP进程之间如何交换信息。
3.10 ARP
地址解析协议,源主机在向目标主机发送IP包前,通过广播ARP请求包,将目标主机的IP地址映射为MAC地址。
3.11 TCP
提供一种面向连接的、可靠的字节流服务。
3.12 HTTP
超文本传输协议。使用TCP连接进行可靠的传输,HTTP是客户端和服务端交互的协议。
3.13 TCP/IP协议分为哪几层,各层分别有什么功能
1.网络接口层:相当于7层模型中的物理层+数据链路层,将接收到的IP分组发送到指定的物理网络。
2.网际层:1.将传输层产生的TCP报文段或UDP用户数据报封装成分组 2.选择合适的路由 3.差错控制 4.流量控制 5.拥塞控制
3.传输层:负责主机中两个进程之间的通信。
4.应用层:处理高级协议,显示问题,编码和会话控制等问题。
3.14 试说明某些场景下使用静态路由协议的原因
静态路由应用场景:
1.网络本身结构极为简单,使用静态路由足够应付
2.出于安全方面的考量,有时会使用静态路由。
3.15 TCP/IP
传输控制协议/网络协议。是一个协议族,主要有网络层的IP协议和传输层的TCP协议组成。
3.16 RIP
是基于距离向量算法的路由协议。利用跳数来作为计量标准。在带宽、配置和管理方面要求较低,主要适合于规模较小的网络中。
特点:仅和相邻路由器交换信息,路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表,按固定的时间间隔交换路由信息,如每隔30s。
3.17 NAT
网络地址转换。实现专用网络地址和公用网络地址之间的相互转化。对外隐藏内部管理的IP地址,它使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网本地IP地址时可重用的,所以NAT大大节省了IP地址的消耗。
NAT的基本工作原理时,当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。
3.18 DNS
域名解析协议,将域名转换成IP地址,主要有递归和迭代两种
3.19 FTP
用于在异构网络中任意计算机之间传送文件。
3.20 简述三次握手过程并说明为什么要进行第三次握手
1.客户端向服务端发送请求连接报文段,请求建立TCP连接。
2.服务端收到该请求后,发回确认报文段,确认报文段不会携带数据。
3.客户端收到确认报文段后,向服务端发送确认报文段,TCP连接建立完成。
原因:
为了保证服务端能接收到客户端的信息并能做出正确的应答而进行前两次握手
为了保证客户端能收到服务端的信息并能做出正确的应答而进行后两次握手
3.21 比较RIP和OSPF的区别
1.RIP属于距离向量协议,OSPF属于链路状态协议。
2.RIP与相邻路由器交互所有路由信息,OSPF与所有路由器交换相邻链路信息。
3.RIP定时进行信息交换,OSPF只有在链路状态发生变化时,路由器才使用洪泛法向所有路由器发送此信息。
4.RIP存在”坏消息传得慢“,OSPF更新收敛快,不存在此类问题。
5.使用OSPF,所有路由器都将得到一张全网拓扑,RIP不是。
RIP在传输层使用UDP,是应用层协议,OSPF直接使用IP数据报传送,是网络层协议。
3.22 CSMA/CA
带有冲突避免的载波侦听多路访问协议,发送数据时广播告知其他节点,让其他节点在某段时间内不要发送数据,利用ACK信号,对信道进行预约,以免出现碰撞。
3.23 LLC
逻辑链路控制主要负责1.建立和释放数据链路层的逻辑连接 2.提供与网络层的接口。
3.24 OSPF
基于链路状态路由算法,使用IP,与全部路由器交换相邻节点链路状态。
3.25 ADSL
属于DSL技术的一种,亦可称作非对称数字用户环路,采用频分复用技术把电话线分为电话、上行、下行三个相互独立信道,使得用户可以边打电话边上网。
3.26 DHCP
动态主机配置协议,是一个局域网的网络协议,使用UDP协议工作,常用的两个端口67(DHCP server),68(DHCP client)。DHCP通常被用于局域网环境,主要作用时集中的管理、分配IP地址,使client动态的获得IP地址、GateWay地址、DNS服务器地址等信息,并能够提升地址的使用率。
3.27 BGP
BGP是路径向量协议(域间路由协议),运行在TCP上的一种自治系统的路由协议。BGP是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。
3.28 HTML
超文本标记语言,是一种标识性的语言,包括一系列的标签,通过这些标签可以将网络上的文档格式统一,使分散的因特网资源连接为一个逻辑整体。