运维开发面经总结汇总(1)

一、数据库

1.事务四大特性

原子性,要么执行,要么都不执行

隔离性,所有操作全部执行完以前,其它会话不能看到过程

一致性,事务前后,数据总额一致

持久性,一旦事务提交,对数据的改变就是永久的

2.索引的优缺点,什么时候使用索引,什么时候不能使用索引(重点)

索引最大的好处是提高查询速度,

缺点是更新数据时效率低,因为要同时更新索引

对数据进行频繁查询进建立索引,如果要频繁更改数据不建议使用索引。

3.数据库中join的inner join, outer join, cross join

4.什么叫视图?游标是什么?

视图:是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改会影响基本表。它使得我们获取数据更容易,相比多表查询。

游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

5.什么是主键?什么是外键?

主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。

外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。

主键在本表中是唯一的、不可为空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。


二、操作系统

1.进程和线程的区别

进程:一个程序在一个数据集上的一次运行过程。系统资源分配的单位。

一个程序在不同数据集合上运行或一个程序在同样数据集上的多次运行都是不同的进程。

进程是独立的,有自己的内存空间和上下文环境,无法获取其他进程的存储空间。同一进程的两段代码不能同时执行,除非引入线程。

线程:进程的一个实体,是被系统独立调度和执行的基本单位,CPU使用的基本单位。

同一进程的线程可以共享同一内存空间。线程是属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除。线程占用的资源少于进程占用的资源

进程和线程可以有优先级。

2.内存中的进程结构

栈区:函数参数、返回地址、局部变量(运行入口知道大小)

堆区:运行期间动态分配的内存空间(运行的时候才知道大小)

数据段:全局变量、静态变量、常量

3.进程状态

创建(信息设置完但资源有限)、运行(占用cpu)、就绪(等待分配cpu)、等待、终止(进程完成执行)


4.进程间的通信如何实现?(IPC)

进程间的通信方式有:信号,信号量、消息队列、共享内存。

管道是一种半双工的通信方式,数据只能单项流动,并且只能在具有亲缘关系的进程间流动,进程的亲缘关系通常是父子进程

命名管道也是半双工的通信方式,它允许无亲缘关系的进程间进行通信

信号量是一个计数器,用来控制多个进程对资源的访问,它通常作为一种锁机制。

消息队列是消息的链表,存放在内核中并由消息队列标识符标识。

信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

共享内存就是映射一段能被其它进程访问的内存,这段共享内存由一个进程创建,但是多个进程可以访问。

5.产生死锁有4个必要条件

1:互斥条件       --一个资源一次只能被一个进程使用

2:请求保持条件--一个进程因请求资源而阻塞时,对已经获得资源保持不放

3:不可抢占条件-- 进程已获得的资源在未使用完之前不能强行剥夺

4:循环等待条件--若干进程之间形成一种头尾相接的循环等待资源的关系

预防避免死锁的方法

1:破坏“请求和保持”条件:规定所有进程在开始运行之前,都必须一次性的申    请其在整个运行过程所需要的全部资源。

优点:简单,安全。 缺点:资源严重浪费,恶化了系统的利用率;

2:破坏“不剥夺”条件:进程逐个的提出资源请求,当一个已经保持了某些资源        的进程,再提出新的资源请求而不能立即得到满足时,必须释放它已经保持了的所        有资源,待以后需要时再重新申请。

缺点:实现复杂,代价大,反复地申请和释放资源,而使进程的执行无限的推迟、    延长了进程的周转时间增加系统开销、降低系统吞吐量。

3:破坏“环路等待”条件:将所有的资源按类型进行线性排队,并赋予不同的序        号。所有进程请求资源必须按照资源递增的次序提出,防止出现环路。

缺点:1、序号必须相对稳定,限制了新设备类型的增加2、作业(进程)使用资        源顺序和系统规定的顺序不同而造成资源的浪费3、限制了用户编程

注意:由于互斥条件是非共享设备所必需的,不能改变

6.作业调度的算法

1:先来先服务算法(FSFS)

最简单的调度算法,既可用于作业调度也可用于进程调度,系统按照作业到达的先后顺序进行调度,或者是优先考虑在系统中等待时间最长的作业

2:短作业优先调度算法(SJF)

实际情况短作业占有比例很大,为了使他们比长作业优先执行,而产生了短作业优先的调度算法,作业越短优先级越高,

缺点:是必须知道作业的运行时间,对长作业不利,人机无法实现交互,未完全考虑作业的紧迫程度

3:优先级调度算法(PSA)

优先级:对于先来先服务算法,作业的等待时间就是他的优先级,等待时间越长优先级越高,对于短作业优先级作业的长短就是他的优先级。在优先级算法中,基于作业的紧迫程度。

三、计算机网络

1.Http和Https的区别

Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。

二者之间存在如下不同:

端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443;

资源消耗:和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;

开销:Https通信需要证书,而证书一般需要向认证机构购买;

2.三次握手与四次挥手

(1).三次握手(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功):

第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。


(2).四次挥手(我要和你断开链接;好的,断吧。我也要和你断开链接;好的,断吧):

第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。


第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。此时TCP链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。

第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。


3.为什么TCP链接需要三次握手,两次不可以么,为什么?

为了防止已失效的链接请求报文突然又传送到了服务端,因而产生错误。

客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。这时,Server误以为这是Client发出的一个新的链接请求,于是就向客户端发送确认数据包,同意建立链接。若不采用“三次握手”,那么只要Server发出确认数据包,新的链接就建立了。由于client此时并未发出建立链接的请求,所以其不会理睬Server的确认,也不与Server通信;而这时Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。若采用“三次握手”,在这种情况下,由于Server端没有收到来自客户端的确认,则就会知道Client并没有要求建立请求,就不会建立链接。

4.TCP与UDP的区别

TCP和UDP协议属于传输层协议,它们之间的区别包括:

TCP是面向连接的,UDP是无连接的;

TCP是可靠的,UDP是不可靠的;

TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;

TCP是面向字节流的,UDP是面向报文的;

TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信;

TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大;

5.get和post的区别

6. Session与Cookie的对比

实现机制:Session的实现常常依赖于Cookie机制,通过Cookie机制回传SessionID;

大小限制:Cookie有大小限制并且浏览器对每个站点也有cookie的个数限制,Session没有大小限制,理论上只与服务器的内存大小有关;

安全性:Cookie存在安全隐患,通过拦截或本地文件找得到cookie后可以进行攻击,而Session由于保存在服务器端,相对更加安全;


服务器资源消耗:Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。

7.常见状态码及原因短语

HTTP请求结构: 请求方式+请求URI +协议及其版本

HTTP响应结构: 状态码+原因短语+协议及其版本

1××:请求处理中,请求已被接受,正在处理

2××:请求成功,请求被成功处理

200 OK

3××:重定向,要完成请求必须进行进一步处理

301 :永久性转移

302:暂时性转移

304: 已缓存

4××:客户端错误,请求不合法

400:Bad Request,请求有语法问题

403:拒绝请求

404:客户端所访问的页面不存在

5××:服务器端错误,服务器不能处理合法请求

500:服务器内部错误

503: 服务不可用,稍等

8. 在浏览器中输入url地址->>显示主页的过程(面试常客)


四、Linux

1.文件类型和权限:一共有10个字符,下面逐一解释每个字符的含义和取值。范例:-rwxrwx---

第一个字符代表这个文件是【目录、文件或者链接文件等】

*当为【d】则是目录

*当为【-】则是文件(范例就表示一个文件)

*当为【l】则表示连接档(类似Windows下的快捷方式)

接下来的字符中,以三个为一组,且均为【rwx】三个参数的组合,其中,【r】表示可读,【w】表示可写,【x】表示可执行(如果是目录表示是否有进入此目录工作的权限,linux系统中某一个文件是否可执行是此权限定义,但是,是否能够执行成功则是文件内容决定,一般程序才可执行成功)要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现【-】

第一组为【文件拥有者可具备的权限】,范例中可读可写可执行

第二组为【加入此群组账号的权限】,范例中可读可写可执行

第三组为【非本人且没有加入此群组的其他账号的权限】,范例中没有什么权限

2.改变文件属性和权限

chgrp:改变文件所属群组

语法:chgrp [-R] groupname dirname/filename(-R表示进行递归的持续变更,也就是连同次目录下所有文件、目录都会更新成这个群组的意思)

举例:chgrp user initial.cfg

chown:改变文件拥有者

语法:chown [-R] username:group dirname/filename(冒号也可以改变成.)

举例:chown root:root initial.cfg

3.改变权限

3.1数字类型改变权限

linux文件基本权限有9个,分别是owner/group/others三种身份各有自己的read/write/execute权限,而[rwx]权限对应数字如下r:4,w:2,x:1

举例:chmod [-R] 777 .bashrc

3.2符号类型改变文件权限

linux三种身份user/group/others分别用u,g,o来代表,此外,a代表all也就是全部身份。

范例:chmod u=rwx,go=rx .bashrc(go连在一起,中间没有空格)

#面经##运维工程师##秋招#
全部评论

相关推荐

15 125 评论
分享
牛客网
牛客企业服务