又到了一年一度的秋招,做为运维方向,看了一些面经,收集了一些笔试面试题,总结了一下,贴出来仅供参考,有错误的地方还请指出.java
1.Linux设置环境变量面试
暂时的:export MYNAME=”new name”算法
echo $MYNAME后端
new name浏览器
永久的:经过改变/etc/profile实现安全
EG: export CLASSPATH=./java_HOME/lib;$JAVA_HOME/jre/lib服务器
更改文件后执行 source /etc/profile网络
2.TCP链接的特色运维
(1)面向链接:采用C/S模型socket
(2)全双工
(3)安全可靠:①流量控制:解决接收方不能不及时处理数据的问题
②拥塞控制:解决因网络通讯延迟带来的数据丢失问题
③差错控制:解决数据被破坏、重复、时序和丢失的问题
(4)基于字节流
3.为何TCP链接须要三次握手,两次不能够吗?为何?
两次不能够
三次握手链接过程
(1)创建链接时,客户端发送SYN(SYN=j)包到服务器,并进入SYN_SEND状态,等待服务器响应、、确认
(2)服务器收到SYN包,必须确认客户端的SYN(ACK=j+1),同时本身也发送一个SYN包,即SYN+ACK包此时服务器进入SYN_RECV状态
(3)客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕客户端和服务器端进入ESTABLISHED状态,完成三次握手
为了保证服务端能收到客户端的信息并能作出正确的响应而进行前两次握手,为了保证客户端可以收到服务端的信息并能作出正确的响应而进行后两次响应
四、代理的实现原理
代理服务器有不少种,大致分为三类:HTTP、FTP、SOCKS,其中又分为透明代理和不透明代理,透明代理通常是网关,为硬件
过程:
(1)客户端先和代理服务器通信,创建TCP链接,目的IP是代理服务器的IP
(2)客户端发出GET命令,GET命令中包含URL或IP地址、明文
(3)代理服务器将其中的URL转换为IP地址,可能会有DNS,将源数据包中的数据拷贝下来,去掉URL,从新组包再发出去
(4)代理服务器和真实服务器通信,源IP是代理服务器的IP
五、TCP和UDP分别有什么优缺点
TCP:
优势:可靠、稳定
TCP的可靠体如今TCP在传输数据以前,会有三次握手来创建链接,并且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完以后,还会断开链接用来节约系统资源
缺点:慢,效率低,占用系统资源高,易被***
在传递数据以前要先创建链接,这会消耗时间,并且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量时间,并且要在每台设备上维护全部的传输链接。然而,每一个连接都会占用系统的CPU、内存等硬件资源。由于TCP有确认机制、三次握手机制,这些也致使TCP容易被利用,实现DOS、DDOS、CC等***
UDP:
优势:快,比TCP稍安全
UDPm没有TCP拥有的各类机制,是一个无状态的传输协议,因此传递数据很是快,没有TCP的这些机制,被***利用的机制就少一些,可是也没法避免被***
缺点:不可靠,不稳定
由于没有TCP的那些机制,UDP在传输数据时,若是网络质量很差,就会很容易丢包,形成数据的缺失
适用场景:
TCP:当对网络通信质量有要求时,好比HTTP、HTTPS、FTP等传输文件的协议, POP、SMTP等邮件传输的协议
UDP:对网络通信质量要求不高时,要求网络通信速度要快的场景
六、面向对象和面向过程的区别
面向过程就是分析出解决问题所须要的步骤,而后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就行。
面向对象是把构成问题事物分解成各个对象,创建对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。面向对象是以功能来划分问题,而不是步骤
七、HTTP请求的过程与原理
HTTP是一种无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你以前打开这个服务器上的网页之间没有任何联系。HTTP遵循请求/应答模型
(1)创建TCP链接
(2)Web浏览器向Web服务器发送请求命令
(3)Web浏览器发送请求头信息
(4)Web服务器应答
(5)Web服务器发送应答头信息
(6)Web服务器向浏览器发送数据
(7)Web服务器关闭TCP链接
HTTP的长链接与短链接:
在HTTP/1.0中,默认使用的是短链接。也就是说,浏览器和服务器每进行一次HTTP操做,就创建一次链接,但任务结束就中断链接,在服务端不保留链接的有关信息。
从 HTTP/1.1起,默认使用长链接,用以保持链接特性。使用长链接的HTTP协议,会在响应头有加入这行代码:
Connection:keep-alive
在使用长链接的状况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP链接不会关闭,若是客户端再次访问这个服务器上的网页,会继续使用这一条已经创建的链接。Keep-Alive不会永久保持链接,它有一个保持时间,能够在不一样的服务器软件(如Apache)中设定这个时间。实现长链接要客户端和服务端都支持长链接。
HTTP协议的长链接和短链接,实质上是TCP协议的长链接和短链接。
长链接短链接操做过程
短链接的操做步骤:
创建链接----数据传输-----关闭链接。。。创建链接-----数据传输----关闭链接
长链接的操做步骤:
创建链接---数据传输。。(保持链接)。。数据传输---关闭链接
长链接和短链接的优势和缺点
长链接能够省去较多的TCP创建和关闭的操做,减小浪费,节约时间。对于频繁请求资源的客户来讲,较适用长链接。可是会存在一个问题,随着客户端链接愈来愈多,server迟早有扛不住的时候,这时候server端须要采起一些策略,如关闭一些长时间没有读写事件发生的链接,这样能够避免一些恶意链接致使server端服务受损;若是条件再容许就能够以客户端机器为颗粒度,限制每一个客户端的最大长链接数,这样能够彻底避免某一个客户端连累后端服务。
短链接对于服务器来讲管理较为简单,存在的链接都是有用的链接,不须要额外的控制手段。但若是客户请求频繁,将在TCP的创建和关闭操做上浪费时间和带宽。
HTTP报文格式:
请求消息格式:请求行
头部行
附属行
响应消息格式:状态行
头部行
八、常见HTTP状态码
成功的状态码(基本以2开头):这一类型的状态码,表明请求已成功被服务器接收、理解、并接受
200--请求已成功,请求所但愿的响应头或数据体将随此响应返回
202--服务器已接受请求,但还没有处理
205--服务器成功处理了请求,且没有返回任何内容
内容被重定向(基本以3开头):须要客户端采起进一步的操做才能完成请求
301--被请求的资源已永久移动到新位置
302--请求的资源临时从不一样的 URI响应请求
303--对应当前请求的响应能够在另外一个 URI 上被找到,并且客户端应当采用 GET 的方式访问那个资源
305--被请求的资源必须经过指定的代理才能被访问
307--请求的资源临时从不一样的URI 响应请求
请求失败的状态码(基本以4开头):
400--语义有误,当前请求没法被服务器理解。除非进行修改,不然客户端不该该重复提交这个请求或者请求参数有误
401--当前请求须要用户验证
403--服务器已经理解请求,可是拒绝执行
404--请求的网页不存在
405--请求行中指定的请求方法不能被用于请求相应的资源
408--请求超时
服务器端的错误(基本以5开头):了服务器在处理请求的过程当中有错误或者异常状态发生
500--服务器内部错误
503--服务器暂时不可用
九、什么是死锁
进程死锁,它是操做系统或系统软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程自己或其余进程占用时,就造成了死锁
产生死锁的缘由:①系统资源不足
②进程运行推动的顺序不合适
③资源分配不当等
产生死锁的四个必要条件:
①互斥条件:一个资源每次只能被一个进程使用
②请求与保持条件:一个进程因请求资源而阻塞时,对已得到的资源保持不放
③不剥夺条件:进程已得到的资源,在未使用完以前,不能强行剥夺
④循环等待条件:若干进程之间造成一种头尾相连的循环等待资源关系
避免死锁的方法:①有序的资源分配法
②银行家算法
解决死锁:①进行系统的从新启动(最简单粗暴)
②撤销进程,剥夺资源
银行家算法
银行家算法是一种最有表明性的避免死锁的算法
咱们能够把操做系统看做是银行家,操做系统管理的资源至关于银行家管理的资金,进程向操做系统请求分配资源至关于用户向银行家贷款。操做系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,若是系统现存的资源能够知足它的最大需求量则按当前的申请量分配资源,不然就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源可否知足该进程尚需的最大资源量,若能知足则按当前的申请量分配资源,不然也要推迟分配。
十、close_wait
在被动关闭链接的状况下,在已经接收到FIN,可是尚未发送本身FIN的时刻,链接处于close_wait状态。一般来说,close_wait状态持续的时间应该很短,如SYN_RECV状态,可是在一些特殊状况下,就会出现链接长时间处于close_wait状态的状况。出现大量close_wait的现象,主要缘由是某种状况下对方关闭了socket链接,可是我方忙于读或者写。没有关闭链接,代码须要判断socket,一旦读到0,断开链接,read返回负,检查一下errno,若是不是AGAIN,就断开链接。
十一、time_wait
主动关闭的socket端会进入此状态,而且持续2MSL(最大分节生命期)时间长度,这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络消失。
做用:
a:可靠的实现TCP全双工链接的终止
b:容许老的重复分节在网络中消失
十二、进程间通讯机制
管道、消息队列、共享内存(速度最快)、信号量、文件映射、匿名/命名管道
做者:11944248
来源:http://11954248.blog.51cto.com/11944248/1965927