综合题笔记整理
(一)计算机组成原理与体系结构
1.原码的计算方式:转化成二进制,补成七位。最左边那位,正数0,负数1。范围:-127~127
反码的计算方式:正数不变,负数符号位不变,其他位取反范围:-127~127
补码的计算方式:正数不变,负数为反码+1(符号位保持1)-128~127
移码的计算方式:补码的基础上,符号位取反
2.浮点数运算
浮点数表示形式为:尾数*基数^指数
两个浮点数相加:对阶时,指数以较大的为准。指数较小的,尾数右移(小数点左移)
3.寄存器
计算机分为主机和外部设备。
主机分为CPU和内存。
CPU中存在运算器和控制器两类寄存器。
“指令”相关的,都属于控制器。程序计数器也是一种控制器,它存放的是下一条指令的位置。
4.CISC是复杂指令系统(Complex),RISC是精简指令系统(Reduced)
5.流水线周期为,一条指令分为多个阶段,其中中耗时最长的那个阶段的周期就是流水线周期。
n条指令执行完需要的时间:流水线周期+(n-1)*一条指令所有阶段的时间相加。
吞吐率:指令数n 除以 n条指令执行完需要的时间
流水线加速比:n*一条指令所有阶段的时间相加/n条指令执行完需要的时间,也就是优化前时间除以优化后时间(加速比越大越好)
6.cache工作与CPU和内存间(主机中),按内容来存取。依据:局部性原理
cache的访问命中率指CPU访问cache时能成功找到内容的概率(若找不到,只能去内存中寻找)
cpu-cache-内存体系的平均周期:cache命中率*cache周期+(1-cache命中率)*内存周期
7.ROM是只读存储器(read only),断电时会保存。
RAM是(random access),断电清除。
8.内存按字节编址的计算:
B==Byte==字节
bit==位
K=1024
M=1024*1024
1KB=1024B=1024*8bit
共存多少字节怎么算:大-小+1 注意是16进制的减法。借位时高位+16。这里的16进制的数的单位就是字节。
1kB = 1024B所以选项里是几k几k的。算出来还要除以1024(也就是2的十次方)
问至少需要几片芯片:共存字节数/每个芯片的存储容量
9.可靠度计算
串联系统:相乘
并联系统:1-(1-R1)(1-R2)...
10.海明校验码
1 2 4 8 16 32.。。是校验位。
最高位必位信息位。
如何看某个信息位由哪几个校验位校验:
第7位:7 = 2^2+2^1+2^0
则由4 2 1位的校验码校验
校验位的计算:找出这个校验码与哪几个信息位有关,所有信息位做异或运算(一样取0,不一样取1)
软件工程师学习笔记(二)—— 操作系统基本原理
1.进程三态:运行,就绪,等待
就绪态是不会直接回到等待态的。
等待态也不能直接到运行态。
就绪状态和运行态互转的因素:时间片
2.pv操作:前置操作v,后置操作p。箭头指向的就是v。
3.死锁问题
n个进程,分别需要a1,a2,a3,。。。个进程。
则至少需要a1+a2+。。。+an-n+1个资源,就不会死锁。
4.索引文件结构
告诉你一个逻辑块号n,问你这个在什么位置。
直接地址索引有a个,直接先减掉。n-a
一个二级索引块有几个?索引块大小除以每个地址项大小。例如:1024/4=256
若由5个直接索引,2个间接索引。问518号在哪?
5+2*256=517 显然518在二级间接索引的第一个了。
5.绝对路径:从父节点开始写。
相对路径:从当前位置的下一个开始写(当前位置不写)
6.位示图法
告诉你将n号物理块分配给某文件,在位示图的第几个字中描述。
就这么算:n/32(取整)+1
7.内存与外设之间数据传输控制的三种方法:
程序控制:cpu不断询问
中断:外设完成后发中断
DMA方式:DMA控制器监管
4.页面淘汰算法:
FIFO先进先出算法:淘汰最先进入的
LRU最近最少使用算法:淘汰最久没使用的。即队列中有0,又访问到0时,两种算法都会识别到队列中已有的0。但LRU会将0标记位最先使用,免于下次淘汰。
5.索引文件结构
间接索引逻辑个数:索引块大小除以地址块大小
碰到的题目里面都是1024/4=256个
直接索引一个就算一个
软件工程师学习笔记(三)—— 数据库系统
1.数据库设计各个阶段产物
需求分析阶段:根据数据流图和数据字典生成需求说明书
概念设计阶段:生成ER模型
逻辑结构设计:根据规范化理论生成关系模式
物理设计:生成表
2.数据字典的组成
数据流,数据项,数据存储,基本加工
3.数据流图的组成
数据流(箭头),加工(圆角块),数据存储(半框),外部实体(方框)
2.ER模型
方框是实体,椭圆是属性,菱形是关系
3.找候选键的方法
把依赖图画出来(画的时候注意,AB---->C,表示AB加起来才能推出C)找入度为0的属性,尝试遍历全图。
若AB联合起来才能推出全图,则候选键为AB。若A或B都能推出全图,则候选键为A和B。
若有多个候选键,则选其中之一,则确定为主键。
4.三大范式:
第一范式:满足每个项都是原子项则满足第一范式。
第二范式:不存在部份依赖则满足第二范式。部分依赖:码包含多个属性,非码属性里面有的只依赖码中的部分属性。优化方法:把这个码-非码组单独成表,原表剔除这个非码。
第三范式:不存在传递依赖则满足第三范式。若非码属性中还存在依赖,则说明存在传递依赖。
5.伪传递律(X—Y,WY—Z,则XW—Z)
WY能推出Z可不代表WX能推出Z哦。
6.据库体系三层模式
外模式——视图,内模式——存储文件,模式——基本表
7.给关系和关系表达式填充SQL
两个三角(自然连接)要去重,乘号(笛卡尔积)不去重
8.共享锁(读锁)和排他锁(写锁)
读锁上可以且只能叠加读锁,写锁上不能叠加任何锁
9.分布式数据库:
分片透明:操作全局,最高层次的透明
复制透明:不用关心各个节点复制情况
位置透明:不必知道操作的数据存放在何处
逻辑透明:不用关心支持哪种数据库,最低级的透明
分布式数据库特点:
分布式:数据存储位于多个不同节点
逻辑相关性:数据逻辑相关联
场地透明:使用数据时不需要指明数据位置
场地自治:每一个单独的节点能够执行局部应用请求
10.事务四个属性:
原子性:事务是原子的,要么都做要么都不做
一致性:交易场景,A减了100元,B必须增加100元。
隔离性:多个事务之间隔离,A提交前,B看不见A的结果
持久性:一旦事务提交,即使数据库崩溃,更新也永久有效。
软件工程师学习笔记(五)—— 系统安全分析与设计
1.数字证书(目的:用户身份认证)
CA证书授权中心发行。包含主体公钥信息,CA的签名。
用户获取申请方的数字证书后,通过CA的公钥验证CA的签名,确认数字证书的有效性,验证申请方的真伪。
2.对称加密,又称共享密钥加密,包括DES,三重DES,RC-5,IDEA,AES。
非对称加密,又称公开密钥加密,包括:RSA,ECC,DSA
3.MD5是摘要算法,对任意长度的输入计算得到的结果长度为128位。
4.重放攻击:截获某次合法数据拷贝,重新发送。解决方法:加时间戳。
5.防火墙技术
网络级:层次低,效率高,不会开箱
应用级:层次高,效率低,会开箱
6.加密技术总结
要求:一封邮件要求加密传输,发送者不可抵赖,第三方截获无法篡改。
发送方要做的事:
将邮件用对称加密进行加密,对称加密密钥为K1。
将K1用接收方公钥加密。
将邮件形成摘要,用自己的私钥加密。
接收方要做的事:
用自己的私钥解出对称密钥K,再用K打开邮件。
用发送方的公钥解开摘要(发送方不可抵赖)。将摘要与实际收到的邮件形成的摘要进行对比(防止第三方篡改)。
软件工程师学习笔记(六)—— 数据结构与算法
1.邻接矩阵存储时间复杂度:n^2
2.循环单链表表示队列,入队列和出队列都不需要遍历链表。
单链表表示栈,入栈和出栈都不需要遍历链表。
3.构造排序树的关键码序列:不越层即可。
4.二分查找:(左+右)/2 舍弃余数
若不符合,舍弃当前该数
5.排序算法:
平均时间复杂度:堆,快速,归并是nlog2n。希尔是n^1.3。其他都是n或n+k。基数排序n*k
最坏情况下时间复杂度:堆排序和归并排序是nlog2n(最优秀)
软件工程师学习笔记(七)—— 程序设计语言语言处理程序基础
1.编译方式各阶段的特点
词法是拼写,语法是结构,语义是含义
记号流(词法分析输出),源程序(词法分析的输入),分析树(语法分析输出)
2.表达式的后缀式
先根据计算方式画成树,然后后序遍历
3.各种语言
Fortran:科学计算,执行效率高
Dascal:为教学而开发,执行效率高
Lisp:函数式程序语言
Prolog:逻辑推理,简洁,适用于数据库和专家系统
4.编译方式生成目标程序,解释方式不生成
5.语法制导翻译是静态语义分析
软件工程师学习笔记(八)—— 法律法规
1.保护著作权的两个基本法律文件
《中华人民共和国著作权法》
《计算机软件保护条例》——国务院颁发
2.商标权可无限期拥有,其他都有期限
3.软件著作权默认归公司(除特别商议)常考!
4.委托创作(著作权默认归创作方)
软件工程师学习笔记(十)—— 软件工程
1.增量模型:管理成本高,第一个可交付版本成本低
瀑布模型:适合需求明确,或二次开发
原型模型:适合需求不明确的情况,不能指导代码优化
演化(迭代)模型:演化原型成为最终产品
螺旋模型:融合多个模型的特点
2.CMMI模型(两种模型每个阶段干嘛的),
3.软件维护(不包括配置管理工具),
改正性——改正缺陷,适应性——配置,使软件适应数据变化,改善性——用户改需求,满足新的需求,预防性——预先提高可维护性
5.耦合程度不取决于模块提供的功能数
耦合类型区分:
1.数据耦合(通过简单参数耦合)
2.公共耦合(很多模块访问同一个环境)
3.外部耦合(一组模块访问同一全局简单变量,且不通过参数表传递)
4.标记耦合(一组模块通过参数表传递信息))
6.mccabe计算复杂性(弧数-节点数+2)
自己画图时,开始,输入,语句,if判断都是节点,else不是节点
9.极限编程XP(简单,用户代表全程配合,迭代周期2周左右)
11.软件设计原则(信息隐蔽,高内聚低耦合,过程抽象数据抽象),
12.内聚类型
过程内聚(各自相关,特定次序执行)
时间内聚(时间因素关联)
顺序内聚(均与同一个功能相关,收尾相接)
逻辑内聚(逻辑相关)
13.敏捷开发方法(productbacklog,sprintbacklog,sprint等,不包含refactoring)
软件工程师学习笔记(十一)—— 需求工程
1.面向对象设计原则
单一职责,开闭原则等