临沂河东建设局网站,什么网站可以请人做软件,肇庆网站建设维护,应用软件开发属于什么行业软件设计师错题集一、计算机组成与体系结构1.1 浮点数1.2 Flynn分类法1.3 指令流水线1.4 层次化存储体系1.4.1 程序的局限性1.5 Cache1.6 输入输出技术1.7 总线系统1.8 CRC循环冗余校验码二、数据结构与算法基础2.1 队列与栈2.2 树与二叉树的特殊性2.3 最优二叉树#xff08;哈…
软件设计师错题集一、计算机组成与体系结构1.1 浮点数1.2 Flynn分类法1.3 指令流水线1.4 层次化存储体系1.4.1 程序的局限性1.5 Cache1.6 输入输出技术1.7 总线系统1.8 CRC循环冗余校验码二、数据结构与算法基础2.1 队列与栈2.2 树与二叉树的特殊性2.3 最优二叉树哈夫曼树2.3.1 霍夫曼编码2.4 拓扑排序2.5 贪心法三、系统开发基础3.1 开发模型3.2 软件开发方法3.3 内聚性3.4 模块设计原则3.5 架构设计3.5.1 管道过滤器风格3.6 测试分类与阶段任务划分3.6.1 单元测试3.7 McCabe复杂度计算3.8 软件质量保证3.9 软件过程改进四、项目管理4.1 风险管理4.2 其他五、面向对象技术5.1 面向对象的基本概念5.1.1 多态5.1.2 类和对象5.2 面向对象开发各阶段划分及任务5.3 UML图的图示5.4 UML图的定义5.5 UML图中的关系5.6 设计模式的图5.7 其他5.7.1 基类中成员在派生类中的访问权限5.7.2 派生类所继承的基类成员的外部能见度外界对基类成员的访问权限六、操作系统6.1 进程资源图6.2 页式存储6.3 磁盘管理七、知识产权与标准化7.1 知识产权人确定7.1.1 委托开发与合作开发7.1.2 商标权/专利权申请八、数据库系统8.1 数据仓库8.2 数据库设计过程8.3 范式判断8.4 数据库安全九、计算机网络9.1 常见TCP/IP协议基础9.2 协议应用提升9.3 常用命令9.4 IPV69.5 路由配置9.6 其他十、信息安全10.1 对称加密和非对称加密10.2 信息摘要与数字签名10.3 数字证书10.4 计算机病毒与木马10.5 防火墙技术10.6 其他网络安全控制技术10.7 其他十一、多媒体技术11.1 其他十二、UML建模十三、专业英语13.1 语义网络13.2 SWIFT一、计算机组成与体系结构
1.1 浮点数
若浮点数的阶码用移码表示尾数用补码表示。两规格化浮点数相乘最后对结果规格化时右规的右移位数最多为1位
1.2 Flynn分类法
根据指令流和数据流分类SISD 单指令流单数据流机器SIMD 单指令流多数据流机器MISD 多指令流单数据流无实际意义MIMD 多指令流多数据流
1.3 指令流水线
当流水线各段所经理的时间不一样吞吐率的计算公式如下 流水线执行时间 一条指令顺序执行时间 (n-1)*流水线周期 流水线周期为指令耗时最长的一段 吞吐率指令数/流水线执行时间
1.4 层次化存储体系
1.4.1 程序的局限性
时间局部性程序中的某段指令一旦被执行则不久的将来该指令可能再次被执行空间局部性程序访问某个存储单元则不久的将来附近的存储单元也有可能被访问。
1.5 Cache
Cache的设计思想是在合理成本下提高命中率Cache是一个高速小容量的临时存储器可以用高速的静态存储器SRAM芯片实现以集成到CPU芯片内部或者设置在CPU和内存之间用于存储CPU最经常访问的指令或操作数据CPU的速度和性能提高很快而贮存速度较低且价格高其次是程序执行的局部性特点在于尽可能发挥CPU的高速度。
1.6 输入输出技术
程序控制查询方式CPU需要不断查询I/O是否完成因此一直占用CPU程序中断方式中断方式CPU无需等待提高传输请求的响应速度DMADMA是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式、中断方式更高效CPU只负责初始化。
1.7 总线系统
PCI总线是目前微型机上广泛采用的内总线采用并行传输方式SCSI总线小型计算机系统接口时一条并行外总线
1.8 CRC循环冗余校验码
循环冗余校验CRC采用模二除法运算。
二、数据结构与算法基础
2.1 队列与栈
普通队列先进先出元素在队列尾追加而从队列头删除优先队列元素被赋予优先级。访问元素具有最高优先级的元素最先删除。优先队列具有最高级先出的行为特征采用二叉堆数据结构实现二叉堆的插入和删除时间复杂度均为O(lgn)。
2.2 树与二叉树的特殊性
二叉树的二叉链表存储结构中每个结点有2个指针。每个结点有0个、1个或者2个空指针对应有2个、1个、0个非空指针边的个数非空指针的个数空指针的个数结点总个数1边数结点总个数-1叶子结点个数度为2的结点个数1
推论如下 设二叉树结点总个数N边数M度为0没有子节点的结点个数n0度为11个子节点的结点个数n1度为22个子节点的结点个数n2 推出N n0n1n2; 除根节点之外每个结点都有边进入结点M N - 1, M n1 2n2 根据上述条件推出 n0 n2 1 空结点就是空指针二叉树缺少的结点数KK2n0n1 推出K N 1 M N - 1n0 n2 1
2.3 最优二叉树哈夫曼树
2.3.1 霍夫曼编码
以每个字符的出现频率作为关键字构建最小优先级队列取出关键字最小的两个结点生成子树根节点的关键字为孩子结点关键字之和并将根节点插入到最小优先级队列中直至得到一颗最优编码树采用贪心算法每次获取当前情况的最优选择 计算规则
通用型6个字符需要3位表示100000个字符 总长度 100000*3霍夫曼编码(218%232%44%48%312%226%)*100000
2.4 拓扑排序
对有向图G进行拓扑排序顶点Vi在顶点Vj之前则可能 Vi和Vj是并列的;Vi到Vj有向弧
2.5 贪心法
分治法对于一个规模为n的问题若该问题可以很容易解决则直接解决否则分解为k个规模较小的子问题这些子问题互相独立且与原问题形式相同递归解决这些子问题然后将各子问题的解合并得到原问题的解动态规划法求解问题中对于每一步决策列出各种可能的局部解再依据某种判定条件舍弃那些肯定不能得到最优解的局部解在每一步都经过筛选以每一步都是最优解来保证全局是最优解回溯法回溯法是一种选优搜索法按选优条件向前搜索以达到目标但当搜索到某一步时发现原先选择并不优或达不到目标就退回一步重新选择贪心法总是做出在当前来说时最好的选择并不从整体上加以考虑。所做的每一步选择都是当前步骤的局部最优选择但从整体并不一定是最优的选择不必为寻找最优解而穷尽所有的解所以一般可以快速得到满意解但得不到最优解。
三、系统开发基础
3.1 开发模型
喷泉模型 面向对象开发方式迭代无间隙以用户需求为动力支持软件重用
3.2 软件开发方法
面向对象开发方法 BoochCoadOMT 面向数据结构开发方法 Jackson
3.3 内聚性
通信内聚一个模块的所有成分都操作同一数据集或生成同一数据集逻辑聚合模块内部的各个组成在逻辑上具有相似的处理动作但功能用途上彼此无关过程聚合模块内部各个组成部分所要完成的动作虽然没有关系但必须按特定的次序执行内容耦合一个模块需要涉及另一个模块的内部信息。
3.4 模块设计原则
模块化设计尽量考虑高内聚低耦合保持模块的相对独立性模块的控制范围不在其作用范围内模块的规模适中模块的宽度、深度、扇入和扇出适中
3.5 架构设计
3.5.1 管道过滤器风格
软件架构具有良好的隐蔽性和高内聚、低耦合的特点允许设计者将整个系统的输入/输出行为看成多个过滤器的行为的简单合成支持软件重用支持并行执行允许对一些如吞吐量、死锁等属性的分析。
3.6 测试分类与阶段任务划分
3.6.1 单元测试
模块接口测试 测试模块的输入参数和形式参数的个数、属性、单位上是否一致全局变量在各模块中的定义和用法是否一致输入是否改变了形式参数 局部数据结构测试路径测试错误处理测试边界测试
3.7 McCabe复杂度计算
McCabe度量法是一种基于程序控制流的复杂性度量方法。先画出程序图然后采用公式V(G) m - n 2计算环路复杂度其中m是图G中弧的个数n是图G中的结点数。
3.8 软件质量保证
外部和内部质量
功能性 适合性准确性互操作性安全保密性功能性的依从性 可靠性 成熟型容错性易恢复性可靠性的依从性 易用性 易理解性易学性易操作性吸引性易用性的依从性 效率 时间特性资源利用性效率依从性 维护性 易分析性易改变性稳定性易测试性维护性的依从性 可移植性 适应性易安装性共存性易替换性可移植性的依从性
3.9 软件过程改进
CMM是指软件过程能力成熟度模型CMM1级成熟度最低5级成熟度最高CMMI的任务是将已有的几个CMM模型结合在一起使之构成“集成模型”CMM可以提高最终产品的质量CMM将软件成熟度由低到高依次划分为初始级、可重复级、定义级、管理级和优先级其中管理级和优先级对软件过程和产品都有定量的理解与控制
四、项目管理
4.1 风险管理
风险避免即放弃或不进行可能带来的损失的活动或工作这是主动风险控制方法风险监控是指在决策主体的运行过程中对风险的发展与变化情况进行全程监督并根据需要进行应对策略的调整。风险管理是指在一个肯定有风险的环境里把风险减到最低的管理过程风险不可消除。
4.2 其他
花费时间最长的就是项目计划关键路径完成项目所需的最短时间就是项目计划关键路径所花费的时间。
五、面向对象技术
5.1 面向对象的基本概念
5.1.1 多态
参数多态应用广泛、最纯的多态包含多态同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。包含多态在许多语言中都存在最常见的例子就是子类型化即一个类型是另外一个类型的子类型强制多态编译程序通过语义操作把操作对象的类型强行加以变换以符合函数或操作符的要求过载多态同一个名操作符、函数名在不同的上下文中有不同的类型。
5.1.2 类和对象
对象的组成对象名状态属性行为操作类是对象共有属性和行为的抽象一个类定义的对象共享行为和属性
5.2 面向对象开发各阶段划分及任务
面向对象分析主要强调理解问题是什么面向对象设计侧重于理解解决方案面向对象分析描述软件要做什么面向对象设计要考虑实现细节问题。
5.3 UML图的图示
抽象类不能直接进行实例化所以没有直接对象只有非直接对象UML通常用于系统的词汇简单的协作逻辑数据库模式类图展现一组对象、接口、协作和它们之间的关系对象图展现了一组对象以及它们之间的关系用例图展现了一组用例、参与者以及它们之间的关系序列图是场景的图形化表示协作图强调收发消息的对象的结构组织交互图序列图和协作图都是交互图交互图展示一种交互由一组对象和它们之间的关系组成包括它们之间可能发送的消息状态图展现了一个状态机它由状态、转换、事件和活动组成活动图是一种特殊的状态图它展现了在系统内从一个活动到另一个活动的流程构件图展现了一组构件之间的组织和依赖部署图展现了运行处理结点以及其中的构件的配置。
5.4 UML图的定义
领域类模型中会涉及描述自身情况的属性和操作描述类之关系的关联不会存在对象层次的内容
5.5 UML图中的关系
关联关系描述了一组链链是对象之间的连接依赖关系一件事物发生改变影响到另一个事物聚合关系整体与部分生命周期不同的关系组合关系整体与部分生命周期相同的关系
5.6 设计模式的图
组合设计模式将对象组合成树形结构以表示”部分-整体“的层次结构使得客户对单个对象和组合对象的使用具有一致性
5.7 其他
5.7.1 基类中成员在派生类中的访问权限
public继承方式不改变基类中成员的访问权限private继承方式派生类所继承的基类成员的访问权限都改为privateprotected继承方式父类中private成员的访问权限不变其余的都改为protected。
5.7.2 派生类所继承的基类成员的外部能见度外界对基类成员的访问权限
基类的private成员只有基类的成员函数可以访问派生类不能访问通过private方式继承的基类成员非private成员只有派生类的成员函数可以访问外界以及派生类的子类都不能访问通过protected方式继承的基类成员非private成员只有派生类以及该派生类的子类非private、方式产生的可以访问外界不能访问。 方法F1是基类O的private成员虽然PQ继承该方法但是只有基类O的内部才能访问F1方法F2在P中的访问控制为protected所以在类P内部该方法可以被访问而类P的对象无法访问该方法在OQ中访问控制均为public故类OQ的对象都可以访问该方法。方法F3在OPQ的访问控制均为protected该方法只有在3个类的内部才能被访问
六、操作系统
6.1 进程资源图 R1与R2代表资源P1-P3代表进程从资源指向进程的箭头代表有资源分配给了进程从进程指向资源的箭头代表进程要申请这个资源阻塞点就是从这个进程开始执行会让程序陷入死锁执行不了例如上图P2就是阻塞点。
6.2 页式存储 分页存储管理将内存划分为大小相等的页面每一页物理内存叫页帧以页为单位对内存进行编号该编号可作为页数组的索引又称为页帧号淘汰页面应选择最近没被访问的页面进行淘汰页面大小为4K按2进制则需要12位数来表示存储空间逻辑地址3C18H转为2进制0011 1100 0001 1000低12位为页内地址高4位为页号0011转为十进制为3页号3对应页帧号为2。
6.3 磁盘管理 如果磁盘的旋转周期为33ms每个物理块读取时间是33/113ms每个记录处理时间3ms 所以R0花费时间为336ms此时磁头在R2如果要转到R1从R0开始一共花费一周时间一个记录时间33336ms 所以总的花费时间为6ms36*10366ms 如果对信息优化处理则读取时间处理时间 * 11 66磁头刚好处于能处理的记录上不需要等待时间。
七、知识产权与标准化
7.1 知识产权人确定
7.1.1 委托开发与合作开发
著作权归属由委托人和受托人通过合同约定合同中未作明确约定的著作权属于受托人
7.1.2 商标权/专利权申请
两方对同一个专利进行申请无法都授予专利权
八、数据库系统
8.1 数据仓库
遗传算法 初始化个体评价选择运算交叉运算变异运算
8.2 数据库设计过程
在数据库逻辑结构设计阶段需要需求分析阶段形成的需求说明文档、数据字典和数据流图作为设计依据
8.3 范式判断
自反律若Y属于X属于U则X - Y增广律若X-Y且Z属于U则XZ-YZ传递律X-Y Y-Z 则X-Z合并规则X - Y, X - Z则X-YZ;伪传递律若X-Y, WY-Z则XW-Z;分解规则 X-Y Z属于Y则X-Z在数据库逻辑设计阶段若实体存在多值属性那将E-R图转为关系模式将实体的码分别和每个多值属性独立构成一个关系模式得到的关系模式属于4NF
8.4 数据库安全
索引是数据库中提高查询效率的一种机制不能进行数据更新视图一般是提供查询数据的具有一定安全机制但是不能进行数据更新触发器可以作为更新机制但是无法避免数据库的关系模式被第三方获取不安全存储过程可以定义代码给用户使用避免向第三方提供系统表结构过程体现数据库安全机制。
九、计算机网络
9.1 常见TCP/IP协议基础
ARP和ICMP是网络层协议X.25是标准的接口协议SNMP是应用层协议协议报文封装在UDP协议中传送TLSTransport Layer Security Protocol传输层安全协议用在两个通信应用程序之间提供保密性和数据完整性通常位于某个可靠的传输协议上
9.2 协议应用提升
DHCP无效的IP地址169.254.X.Xwindows0.0.0.0linux
9.3 常用命令
ping windows系列自带的一个可执行命令用于验证与远程计算机的连接tracert命令 用来显示数据包到达目的主机所经过的路径arp 用来显示和修改地址解析协议ARP缓存中的项目。
9.4 IPV6
两个IPV6结点可以通过现有的IPV4网络进行通信则使用隧道技术纯IPV6结点可以和IPV4结点通信则使用翻译技术。
9.5 路由配置
对于多种不同的路由协议到一个目的地的路由信息路由器首先根据管理距离决定相信哪一个协议
9.6 其他
在ASP内置对象response可以修改cookie值也可创建cookierequest可以访问cookie中值;三网合一是指电信网广播电视网互联网
十、信息安全
10.1 对称加密和非对称加密
典型的对称加密算法DES,3DES,AES等典型的非对称加密算法RSA,ECC等典型二点摘要算法SHA,MD5
10.2 信息摘要与数字签名
数字签名是信息的发送者才能产生的别人无法伪造的一段数字串对信息的发送者发送信息真实性的一个有效证明但不能验证接收者的合法性。
10.3 数字证书
数字证书包含发送方公钥数字签名确保消息不可否认。
10.4 计算机病毒与木马
木马程序通过邮件附件、程序下载等形式传播通过伪装网页登录过程骗取用户信息进而传播通过攻击系统安全漏洞传播木马占用系统资源降低电脑效能危害本机信息安全将本机作为工具来攻击其他设备Sniffer适用于拦截通过网络传输二点TCP/IP/UDPP/ICMP等数据包的一款工具可用于分析网络应用协议用于网络编程的调试、监控通过网络传输的数据、检测木马程序等。
10.5 防火墙技术
DMZ是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题而设立的缓冲区这个缓冲区位于内部网络和外部网络之间的小网络区域内。
10.6 其他网络安全控制技术
防火墙是位于两个或多个网络间实施网络间访问控制的一组组件的集合是一套建立在内外网络边界上的过滤封锁机制。 过滤掉不安全服务和非法用户控制对特殊站点的访问提供监视internet安全和预警的方便端点。 漏洞扫描系统基于漏洞数据库通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测发现可利用的漏洞的 可以获取某FTP服务器中是否存在可写目录的信息 入侵检测是防火墙的合理补充帮助系统对付网络攻击扩展系统管理员的安全管理能力包括安全审计监视进攻识别和响应提高信息安全基础结构的完整性从计算机网络系统中的若干关键点收集信息并分析这些信息看网络中是否有违反安全策略的行为和遭到袭击的迹象。入侵检测被认为是防火墙过后的第二道安全闸门在不影响网络性能的情况下能对网络进行监测、从而提供对内部攻击外部攻击和误操作的实时保护病毒防御系统是一个用来防止黑客、病毒、木马的防御系统。
10.7 其他
数据的机密性保密性数据在传输过程中不能被非授权者偷看数据的完整性数据在传输过程中不能被非法篡改数据的真实性不可抵赖性信息的发送者身份的确认或系统中有关主体的身份确认保证信息的可信度可用性发送者和接收者双方的通信正常。
十一、多媒体技术
11.1 其他
面向对象程序设计语言为面向对象实现阶段提供支持若不能得到全部顶点的拓扑序列则说明该有向图一定包含回路一个文法定义的语言是终结符号串的集合这些终结符号串应能从文法的起始符号出发推导出来甘特图动态地反应项目开发进展情况PERT/CPM/鱼骨图可用来描述项目开发的进度安排设备驱动程序是直接与硬件打交道的软件模块设备驱动程序的任务是接受来自于设备无关的上层软件的抽象请求进行与设备相关的处理I/O设备与主机间进行数输入输出主要有直接程序控制方式、中断方式、DMA方式和通信控制方式在中断方式下、CPU需要执行程序来实现数据传送任务中断方式和DMA方式下CPU和I/O设备都可同步工作若同时接到DMA请求和中断请求CPU优先响应DMA请求。
十二、UML建模
当采用标准UML构建系统类模型Class Model若类B除具有类A的全部特性外类B还可以定义新的特性以及置换类A的部分特性那么类B与类A具有泛化关系若类A的对象维持类B对象的引用或指针并可与类C的对象共享相同的类B的对象那么类A和类B具有聚合关系
十三、专业英语
13.1 语义网络
The development of the Semantic Web proceeds in steps, each step building a layer on top of another. The pragmatic justification for this approach is that it is easier to consensus achieve on small steps, whereas it is much harder to get everyone on board if too much is attempted. Usually there are several research groups moving in different directions; this competition of ideas is a major driving force for scientific progress. However, from an engineering perspective there is a need to standardize. So, if most researchers agree on certain issues and disagree on others, it makes sense to fix the points of agreement. This way, even if the more ambitious research efforts should fail, there will be at least partial positive outcomes.
Once a standard has been established, many more groups and companies will adopt it, instead of waiting to see which of the alternative research lines will be successful in the end. The nature of the Semantic Web is such that companies and single users must build tools, add content, add use that content. We cannot wait until the full Semantic Web vision materializes - it may take another ten years for it to be realized to its full extent (as envisioned today, of course).
语义网络的发展是一步一步的每一步都建立在之前的基础之上。选择这种方法的现实理由就是因为很容易对一小步达成一致而如果想要一步到位就难的多。通常很多研究组织都是从不同方向考虑的这种思想的竞争的方式是科学进步的驱动力。然而从工程的角度来说是需要进行标准化的。因此如果大多数研究者统一某个观点不同意另一个的时候改正观点是有意义的这样即使再宏大的研究努力也会失败可能会有局部的积极效果。 一旦一个标准被建立许多组织和企业都会采纳而不是等待并查看其他研究先是否会获得成果。语义网络的性质就是让企业和单个用户必须构建工具添加内容并使用。我们不会等着整个语义网络被物化-因为实现它的全部内容需要再过十年时间当然是按照今天所设想。
13.2 SWIFT
There is nothing in this world constant but inconstancy. -SWIFT
Project after project designs a set of algorithms and then plunges into construction of customer-deliverable software on a schedule that demands delivery of the first thing built.
In most projecs, the first system built is barely usable, it may be too slow, too big, awkward to use, or all three. There is no alternative but to start again, smarting but smarter, and build a redesigned version in which these problems are solved. The discard and redesign may be done in one lump, or it may be done piece-by-piece. But all large-system experience shows that it will be done. Where a new system concept or new technology is used, one has to build a system to throw away, for even the best planning is not so omniscient as to get it right the first time.
The management question, therefore, is not whether to build a pilot system and throw it away. You will do that. The only question is whether to plan in advance to build a throwaway, or to promise to deliver the throwaway to customers. Seen this way, the answer is much clearer. Delivering that throwaway to customers buys time, but it does so only at the cost of agony for the user, distraction for the builders while they do the redesign, and a bad reputation for the product that best redesign will find hard to live down.
Hence plan to throw one away, you will, anyhow.
不变只是愿望变化才是永恒。 一个接一个的软件项目都是一开始设计算法然后将算法应用到待发布的软件中接着根据时间进度把第一次开发的产品发布给客户。 对于大多数项目第一个开发的系统并不适用。他可能太慢、太大、难以使用或者三者兼有。要解决所有的问题除了重新开始以外没有其他的办法-即开发一个更灵巧或者更好的系统。系统的丢弃和重新设计可以一步完成也可以一块块地实现。所有大型系统的经验都显示这是必须完成的步骤。而且新的系统概念或者新技术会不断出现因此开发的系统必须被抛弃但即使是最优秀的项目计划也不能无所不知的在最开始就解决这些问题。 因此管理上的问题不再是“是否构建一个实验性的系统然后抛弃它”你必须这样做。现在的问题是“是否预先计划抛弃原型的开发或者是否将该原型发布给用户”。从这个角度看待问题答案更加清晰。将原型发布给用户虽然可以获得时间但是其代价高昂-对于用户使用极其痛苦对于重新开发的人员分散了经精力对于产品影响了声誉即使是最好的再设计也难以挽回名声。 因此为舍弃而计划无论如何你一定要这样做。