计算机网络部分:

tcp三次握手过程,能用两次握手吗:

三次握手:连接建立过程采用客户端-服务器端模式。假设A为客户端。B为服务器端。A向B发送连接请求,B对其确认。A再对其确认报文再进行确认。为三次握手过程。

若采用二次握手,会出现A发送的失效的请求报文又突然传送到B,而发生错误。失效的请求报文是指A发送的请求报文由于网络延时没有及时到达B,A再次发送请求报文给B,成功与B建立第二次连接。而后第一次请求报文到达B后,B误以为A又要进行连接,即对A发送确认,此时A不再理会。B主机就一直等待A主机发送数据,导致B主机资源浪费。三次握手很好得避免这种情况。

 四次挥手:

1,主动关闭方发送一个FIN,用来关闭主动关闭方到被动关闭方这个方向的数据连接

2.被动关闭方发送一个确认,表示收到FIN.确认关闭连接,此时主动关闭方到被动关闭方这个方向的数据连接关闭。主动关闭方还可以接收数据。

3.被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方这个方向的数据连接。告诉 主动关闭方,我的数据也发完了,不会在发送数据了。

4.主动关闭方发送一个确认,表示收到FIN.确认关闭连接,此时被动关闭方到主动关闭方这个方向的数据连接关闭

交换机,路由器,集线器作用

 集线器hub是指多条以太网双绞线或光纤连接在同一个物理介质下的设备

1.工作在哪一层?物理层

2.集线器会把传送给它的帧广播每一个端口,不能区分传送到具体哪个帧,都传送能确保达到目的

3.不能划分冲突域和广播域

 

交换机switch意为开关,是一种为接入交换机的两台设备提供独享的电信号通路,把传输的信息送到符合要求的相应路由上。

1.工作在哪一层?数据链路层

2.有目的发送。记住与它连接的设备的MAC地址。根据MAC地址来确定转发数据的目的地址,不会显著增加网络响应时间。

3.能划分冲突域和不能划分广播域

 

路由器router是指连接因特网和广域网的设备,根据信道情况自动选择路由,根据最佳路径,按前后顺序发送信号。

1.工作在哪一层?网络层

2.有目的发送。根据IP地址来确定转发数据的目的地址。

3.能划分冲突域和广播域

 

在浏览器中输入www.baidu.com后执行的全部过程

(1)浏览器获取输入的域名www.baidu.com

(2)浏览器向DNS请求解析www.baidu.com ip地址

(3)DNS解析出www.baidu.com的ip地址

(4)浏览器与该ip地址对应的服务器建立tcp连接

(5)浏览器发出Http请求,请求百度首页

(6)服务器通过Http响应把百度首页发送给浏览器

(7)tcp连接释放

(8)浏览器再将首页文件解析,将web页展示给用户

ARP协议,简述工作原理:

每个主机都会建立一个ARP列表里面存有ip地址到ARP地址映射

源主机通过广播发送一个ARP请求数据包给本网络各个主机,数据包内容是源主机MAC地址,ip地址,目的主机ip地址。

各主机收到数据包后检查目的ip地址是否是自己的,不是就忽略。是就从数据包中取出源主机的ip地址和MAC地址写入ARP列表中。并把自己的MAC地址放入arp响应包,告诉源主机就是它想要的MAC地址。列表已经存在就覆盖掉。

广播发送ARP请求。单播发送ARP响应。

CSMA协议:

(1)1坚持:发送数据时先侦听,空闲发。忙则等待同时监听如果空闲立刻发数据

(2)非坚持:发送数据时先侦听,空闲发。忙则等待。放弃监听

(3)p坚持 发送数据时先侦听,空闲发。忙则等待下一个时隙监听。空闲则P概率发送数据,1-p概率推迟到下一个时隙发送数据

CSMA-CD协议:

 碰撞检测协议

先听后发,边听边发,冲突停发。随机重发。

流量控制拥塞控制区别:

拥塞控制是从整体情况上看,防止过多数据注入网络中,

流量控制:两个相邻节点,点对点之间。AB结点通信。B结点根据自己缓存大小通过窗口值告诉A。A结点发送数据不超过窗口值

osi模型和tcp/ip网络区别:

osi7层。物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

tcp/ip网络 4层。分别是网络接口层,网际层,传输层 应用层

不同有以下几点:

网络模型层数不同。

支持连接数目不同。

应用规模不同。

数据报和虚电路服务区别:

数据报和虚电路都是物理层的分组交换

1.数据报服务在传输前不需要和目的地址建立连接。虚电路要

2.数据报每个分组都有完整的目的地址。虚电路服务仅在连接建立阶段使用,之后用虚电路号

3.数据报的每个分组独立地进行路由选择和转发。虚电路服务属于同一条虚电路的分组按同一路由转发。

4.数据报服务不保证有序到达。虚电路保证有序到达。

 

DNS协议:

将域名地址转换为ip地址。   ip地址到域名映射的分布式数据库。方便用户使用互联网

如何实现可靠传输?

定时器

检验和

序号

确认(记忆:怎么样才可靠?1.有deadline定时,2.验算 [检验和] 3.编序号,丢了也知道丢哪个。4.事事有回音即确认  ==  非常可靠)

其他各种协议的介绍

ICMP协议: 网络报文控制协议,可以报告错误信息或差错情况,封装在Ip数据报中

常见应用

tracerouter:探测ip数据报走过的路径

ping:排查网络故障

FTP协议:用于在客户机和服务器之间进行简单的文本传输的协议,提供不复杂,开销不大的文本传输服务

HTTP协议: 所有www文件必须遵守的应用最广泛的超文本传输协议

常见http请求方法

PUT 给给定的URL文档存储一个文档

DELETE 删除指定URL所标志的文档

POST 给服务器添加信息如注释

GET 从指定的URL获取信息

 

其中GET 和POST区别

1.get是从服务器获取信息。post向服务器发送信息

2.get获得的信息量不超过2KB    post获取的信息量无限制

3.get获得的信息是安全的幂等的(从同一个URL获取的信息每次都相同)

4.get在URL中如果带参数会被用户看到,值和表单一一对应   post 会将表单各个字段放到html header中,用户不可见。

 

NAT协议:将私有ip地址转为合法ip地址技术。

DHCP协议:动态主机配置协议。给内部网络分配ip地址或给用户或网络管理员对所有计算机作中央管理功能。

 

 

TCP和UDP的区别?

从 建立连接 阶段 ,传输可靠吗,速度快吗,应用场合是什么角度 分析区别

 

BGP OSPF RIP协议

BGP 路径向量。边界网关路由协议,用于自治系统之间的唯一一个处理像因特网大小规模的网络协议。

OSPF 开放的最短路径优先算法

RIP 基于距离向量的路由选择

归纳:

1.交换结点:BGP和RIP都是和本结点相邻的结点路由器  OSPF是网络中所有路由器    

2.交换内容:RIP交换内容是当前本路由器知道的全部信息  OSPF 虽然和所有路由器交谈,但是交换内容只是与本路由器相邻的所有路由器的链路状态

       BGP处理网络很大,所以第一次交流的是整个路由表,后来只是交流有变化的部分

3.封装协议:RIP传递协议UDP OSPF封装在IP数据报中 BGP必须建立TCP连接 

4.为什么选择对应协议: BGP较好,但非最佳。ospf协议代价最低  RIP协议是跳数最少。

 5.rip和ospf内部网关路由协议    BGP是外部网关路由协议

 

VLAN介绍

 将一个物理上的LAN在逻辑上划分为多个广域网技术。VLAN内主机可以通信,VLAN之间主机不可以通信,从而把广播报文限定在一个VLAN中。

 

数据结构部分

数组和链表区别

逻辑存储:

数组是物理空间上连续的一片存储空间

链表是逻辑上连续,空间上随意放置。每一个结点指针都存放下一个结点的位置。

内存存储:数组从栈中,链表从堆中分配空间

访问方式类看:数组通过下标访问,链表只能通过线性方式访问。

 

简述快速排序过程

(1)选定一个基准元素,通常是第一个或最后一个

(2)通过一趟排序,使待排序元素分成两个部分,一部分比基准元素小,一部分比他大

(3)基准元素在排好序的正确位置

(4)分别对每个子部分进行上述操作直到每个元素都找到正确位置

栈的特点和应用

特点:后进先出

应用:

括号匹配的检验

表达式求值

二叉树的遍历

KMP算法

利用匹配失败的信息。尽量减少模式串和主串匹配次数,达到快速匹配目的。具体是用Next()函数,函数中包含局部匹配信息。

如模式串与主串已经有2位匹配了,部分匹配值就是2,模式串向后移动位数不是右移一位,是移动(模式串长度-部分匹配值)位数。

排序算法

冒泡:线性表元素两个两个比较

快速排序:

 

几种基本结构

集合 线性表  树 图 

什么是时间复杂度

定性描述该算法的运行时间。是一个代表算法输入值的字符串的函数。

解决hash冲突方法

线性探测

平方探测

伪随机探测

 拉链法:创建一个链表数组,数组的每一格就是一个链表,若遇到hash冲突,就将冲突值放入链表中即可。

具体:key得到一个hashvalue.根据hashvalue定位到data[hashValue]即一条链表

data[hashValue]为空即插入,不为空则加入链表末尾。

B树 

平衡的二叉查找树

 

B树和B+区别

 B+树相对B树更多查询优势:

1.范围查找来看:b+树只需要遍历叶子结点单链表即可,b树查找结点要重复地中序遍历

2.关键字个数不同:b+树叶子结点也有m个,有m个关键字,其关键字只是索引,不存储具体信息。B树叶子结点也有m个,有m-1个关键字

3.b+树中间结点不保存信息,磁盘页可以保存更多的结点信息,更加矮胖。

邻接表和邻接矩阵

邻接矩阵用一维数组存储顶点,二维数组表示顶点与顶点边的权值

邻接表用一个一维数组表示顶点,图中每个顶点vi的所有邻接点构成单链表

 二叉树的顺序存储怎么实现的 

从根结点开始从上到下从左到右给结点按层次顺序编号,依次存储在数组中。该方法只适用于完全二叉树,如果是数组存储普通二叉树,需要提前把二叉树转化为普通二叉树。

二分查找过程

又称为折半查找,适用于已经有序序列。

把待排序的序列分成大致相等的两个子序列。

将最中间元素和待查找元素关键字key进行比较,等于就返回。大于key就在前一个数据集合中查找。否则就在后一个子集中查找。直到找到为止。没找到就返回-1

 

选择排序算法考虑因素 最小生成树

n为待排序元素个数

1.当n非常大时,时间复杂度要求nlon2n 用快速排序,堆排序,归并排序,

2.当n非常大时,稳定,用归并排序

 3.当n较小时,直接插入或直接选择排序

4.一般不使用或直接使用传统冒泡。

5.基数排序有局限性:

关键字数比较小,密集

如果是数字。最好选择无符号的

关键字可分解

 

 

 最小生成树

包含图G全部顶点的树,树中各边权值之和为树的权值。树的权值最小是树的最小生成树。

克鲁斯卡尔算法:图的边按照权值从小到大排列,当新加入的边不会使得已加入边形成环路就把它加入生成树边集合

prim算法:贪心选择初始点集的最短邻边n-1条,同时避免构成环。

 

 

操作系统部分

 

 

数据库部分

1.事务的四个特征

原子性,不可分割的操作序列,必须一气呵成执行,要么成功,要么失败。

一致性,数据查询修改后事务一旦提交多次查询的结果一样

永久性:数据查询修改后事务一旦提交数据永久变化。

隔离性,并发执行的事务执行过程和单独执行事务结果一样。互相不干扰。 

2.存储过程

保存在服务器端已经编译过的一组sql语句及基本循环语句组成

3.数据ER图概念应用

实体属性图,是现实世界的抽象模型概述。用矩形表示实体,实线表示实体与实体之间关系。椭圆表示实体属性。菱形表示实体与实体之间的关系。

4.数据库设计的几个阶段

需求分析 概念设计(er图) 逻辑设计 物理设计 数据库实施 数据库运行维护

5.数据库的事务

一个或一组SQL组成的操作序列,不可分割,必须一气呵成执行,要么成功,要么失败。

6.查询语句

select from 表 order by 等

7.结合项目说一下数据库的连接方式

两张表以公共关键字进行左连接,左表有的属性右表没有,相应属性就置空。

8.数据库日志作用

若有不确定正确的数据,使用数据库撤销功能,根据日志重做事务,使得数据库数据回到之前的某个正确状态。 

9.事务故障

某一事务不能正常提交使得全部操作都要重做。

10.数据库管理系统的功能

对数据库对象操作

11.数据库定义语言和数据库操作语言

create/drop/alter等创建删除修改数据库对象

数据库操作语言:增删改查

12.索引

方便对庞大数据量进行查找,类似字典的检字法

13 视图及作用

从基本表及其他视图中抽取出来的查询数据的虚表

视图可以

(1)简化用户操作,

(2)方便用户从不同看待同一数据

(3)对重构数据库提供逻辑支持

14数据库系统

包括数据库和数据库管理系统(对数据库数据进行查询操作等)数据库管理员DBA 应用程序

15数据库系统的故障

事务故障:事务不能正确执行

系统故障:软故障。如操作系统漏洞等  指的是

介质故障:磁头损坏等

计算机病毒:病毒入侵数据库

16.数据库基本的逻辑运算

交,并,差,广义笛卡尔积

17.数据库三范式

1范式:任何属性都具有原子性,不可分割

2范式:消除了非主属性对码的部分依赖 如AB->C  B->C 存在部分依赖

3范式:消除了非主属性对码的传递依赖

BC范式:消除了主属性对码的部分依赖及主属性对码的传递依赖。若码都是单属性,不会有部分依赖(传递依赖还可能)。

18.数据流图:

以图形方式描绘数据流在系统中从输入到输出的过程。它只反映系统必须完成的功能,是需求分析阶段产生的结果。

 19.软件过程模型:

瀑布:把软件开发过程分成若干阶段,每个阶段任务相互独立。在软件生存期的每个阶段都采用科学的管理技术和良好技术。阶段结束后都从技术和管理两个角度进行严格审查,经确认才进行下一个阶段工作。

快速原型:快速建立一个反映用户主要需求的原型模型,让用户在计算机上试用,提出修改意见。开发人员安置用户的意见快速修改原型系统。直到原型系统满足用户要求。适用于已有产品或产品原型,只需要客户化工程项目

增量:把待开发软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析,设计,编码和测试

螺旋:兼顾快速原型迭代特征和瀑布模型的系统化和严格监控。每个项目阶段用瀑布模型。周期性迭代,每迭代一次,软件开发又前进了一个层次。

 20.触发器:存储在数据库中预编译程序,由一组数据库自动执行SQL组成。

21.

一级封锁协议:事务T在修改数据R时必须加写锁,直到事务结束时释放。

二级:在一级封锁基础上,事务T在读数据R时。必须加读锁,读完释放。

三级: 在一级封锁基础上,事务T在读数据R时。必须加读锁,直到事务结束时释放。

两段锁协议:在对任何数据读写操作之前,首先要先申请并获得对该事务的封锁。在释放一个锁之后,事务不再申请和获得其他任何封锁。

22.无损连接:一个关系模式分解为多个关系模式后可由自然连接和投影等运算恢复为原来状态。

23.数据模型和规范化

数据模型:标识实体类型和实体联系的模型。

规范化:从关系数据库表中除去冗余数据。包括精简数据库结构,除去多余列,标识依赖于其他数据的数据。

 

 

 

组成原理部分

 虚拟存储器概念

页式:将虚拟存储空间和实际物理内存等分为大小相等的页。各虚拟页可以调入主存任意位置。页面管理用一个页表。页表是实际页号到虚拟页号的映射表。

段式:主存按段分配的存储管理方式

 Cache基本工作原理

CACHE基于程序局部性原理,把经常要用到的程序和数据放在一个高速缓冲存储器里,提高cpu输入输出数据速率。

cache与主存的映射方式

直接映射方式:把主存地址映射到cache中某个指定位置,在任何时候,主存单元地址只能调入cache中某个确定的固定的位置,若这个位置已有数据,则产生冲突,原来的块将无条件替换出去。

全相连:任何主存地址映射到cahce任何位置,主存单元地址可以调入cache任意地址。只有当cache块已满时发生冲突。

组相连:把存储空间的页面分成若干组,每组之间直接映射,组内每块之间全相连映射

 

cache中主存块替换算法

随机算法

先进先出

近期最少使用

 

虚拟存储器基本概念

TLB快表

指令流水线基本概念

(1)流水线基本原理

(2)影响流水线线性能因素

I/O方式区别

程序查询方式:cpu每时每刻都要不断查询IO设备是不是准备好,如果准备好,cpu就执行io操作。否则就一直等待。cpu大部分时间都处于等待状态,效率不高

程序中断方式:cpu查询IO设备是不是准备好,若没准备好cpu并行做自己的事,io设备准备好了给cpu发中断信号。cpu响应后执行中断服务程序,io操作。

DMA:外部设备不通过CPU而直接和系统内存交换的技术。

 

指令执行过程

取指

分析指令

执行

中断

程序访问的局部性原理:

时间:访问过程序不久时间会继续访问

空间:如果某一个存储单元被访问,则该单元及邻近的单元不久也会被访问。

程序设计

1.面向对象和面向过程区别:

面向对象:把构成问题的事务分解成各个对象,描述某一事务做一件事情的行为作为一个功能。以功能划分问题。

面向过程:分析出解决一个问题需要哪些步骤,用函数把这些步骤一个个实现

2.面向对象三大特征:

封装:把客观事物封装成抽象的类,留一个接口给外界调用,隐藏其内部细节。

继承:让一个对象无需重新编写原来的类情况下自动拥有另一个类的属性和方法,同时该对象又拥有独立的属性和方法。

多态:让一个方法面对不同的对象做出不同响应,

3.java和c区别:

内存管理方面:若需要一个对象,java只管new出来,背后过程是由jre为对象分配一定的内存,当jre发现你不再使用这个对象时,自动回收

c则不同,当你需要一片内存时,用malloc函数显式申请,不用时用free自己归还。

java没有指针,没有全局变量和结构体

4.黑盒白盒测试

白盒:知道产品内部工作过程。按照程序内部的结构测试程序,检验程序每条通路是否都能按照预定要求工作。

5预处理

在源代码被编译之前,由预处理器对程序源代码进行处理。

预处理器就是通过预处理的内建功能对一个资源进行等价替换

最常见的预处理:文件包含,条件编译,宏替换。

6简述C语言中指针及其作用

一个变量的地址称为该变量的指针

一个专门用来存放另一个变量的地址即指针的变量

B/S和C/S的优缺点

 C/S客户端服务器端

B/S

 

LINUX系统

 

软件工程

1.软件开发的生命周期:

可行性分析--需求分析--软件设计(概要设计和详细设计)--软件编码--测试--维护

 

云计算相关

 

 

项目相关