初级运维(二)

1、TCP为什么要进行三次握手?(考的频率不是一点把点啊,命中率80%)

答:主要是为了防止已失效的连接请求报文段突然又传到了服务端,因而产生错误。

分析:本来TCP连接已经断开,但是由于之前一个数据包在连接建立的过程中,由于网络延迟问题迟迟没有到达,当该失效报文到达服务端的时候,服务端又会认为客户端想要建立新的TCP连接,于是便会进行确认同意建立连接,假如是2次握手,那么连接建立成功,服务端就会一直等待客户端传输数据,导致服务端浪费资源。


2、如果第三个ACK报文丢失了,会发生什么情况?(这算是比较不容易想到的了,命中率50%)

答:当客户端收到服务端的SYN+ACK应答后,其状态变为ESTABLISHED,并会发送ACK包给服务端,准备发送数据了。如果此时ACK在网络中丢失,过了超时计时器后,那么Server端会重新发送SYN+ACK包,重传次数根据/proc/sys/net/ipv4/tcp_synack_retries来指定,默认是5次。如果重传指定次数到了后,仍然未收到ACK应答,那么一段时间后,Server自动关闭这个连接。但是Client认为这个连接已经建立,如果Client端向Server写数据,Server端将以RST包响应,方能感知到Server的错误。


3、TCP连接的时候,服务端在什么情况下会发送RST包?(这就是真的难了,没学习过的不可能知道,命中率20%)

答:一般是发生错误,才会发送RST包。(1)对方端口未打开

(2)TCP连接被终止(就是前面说的ACK包丢失,重传次数到了,就要自动关闭)

(3)请求超时

(4)在一个已关闭的 socket 上收到数据


4、TCP和UDP区别(面试官最最最喜欢考的就是这个了,命中率高达90%)

答:(1)TCP称为传输控制协议,UDP称为用户数据包协议,TCP是面向字节流的,而UDP是报文段

(2)TCP是通过三次握手以及序列号、重传机制面向连接,从而保证可靠传输,而UDP没有这些手段,只是将数据报简单投递给网络层就算完成任务了,所以它是不可靠的。

(3)正因为TCP复杂的功能手段例如拥塞控制和流量控制,UDP跟他比起来,UDP系统开销大大减小

(4)从数据包的格式来说,TCP不加填充选项的时候首部是20字节,而UDP固定首部8字节。同时,TCP具有非常复杂的报文格式,而UDP很简单,比如源端口目的端口校验和以及数据总长度

(5)TCP适合路由信息报文以及普通数据包的这样的类似流量,而UDP适合传输大的流量,比如VOIP流量,视频流量。


5、tcp为什么是可靠传输的?(这题也喜欢啊,网络就考TCP协议和HTTP协议,变态一点出一个SSL协议, 让你懵逼,命中率60%)

答:(1)本身面向连接的三次握手机制(2)序列号保证它无重复无遗漏。重传机制用来对客户端进行反馈,表示我已经收到你的信息了(3)TCP校验和字段,如果在传输过程有错误,那么到达目的端,进行校验码比对,就知道有无错误了


6、四次挥手释放连接时,等待2MSL的意义?(四次挥手不常考,但考到不容易回答的漂亮,命中率30%)

第一,为了保证A发送的最后一个ACK报文段能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN和ACK报文段的确认。B会超时重传这个FIN和ACK报文段,而A就能在2MSL时间内收到这个重传的ACK+FIN报文段。接着A重传一次确认。

第二,就是防止上面提到的已失效的连接请求报文段出现在本连接中,A在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。


7、网站打开太慢的原因分析?(中档题,命中率60%)

答:(1)网络问题:ping、dig命令测试客户机和服务端网络情况以及DNS解析问题,如果DNS能解析但是很慢的话,使用CDN

(2)前端问题:浏览器落后,页面设计不佳

(3)服务端问题:(a)检查系统负载、CPU、内存、网络以及磁盘情况。(b)PHP响应慢,依据资源情况对FastCGI配置合适的参数(c)MySQL响应慢,SQL代码效率低下,读取慢,查询慢查询日志,show processlist 查看当前数据库状态,看哪些请求停留较多,磁盘IO率太大,my.cnf配置文件优化不够好(d)被攻击,

webserver进程数受限,甚至内网流量过高等原因


参考文档:http://www.wtoutiao.com/p/1a4rCZ2.html


8、tcp三次握手的过程中,accept发生在三次握手哪个阶段?(腾讯题目)

答:accept发生在三次握手之后,accept只是把内核中的已完成连接队列取出。

## connect才是发生在三次握手阶段,另一个队列是“未完成连接队列,并且这两个队列总和的最大值是backlog


9、常用的HTTP方法有哪些?

GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器

POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。

PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。

HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。

DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。

OPTIONS:查询相应URI支持的HTTP方法。

TRACE:远程诊断服务器


10、GET方法与POST方法的区别

区别一:

get重点在从服务器上获取资源,post重点在向服务器发送数据;

区别二:

get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;

post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;

区别三:

Get传输的数据量小,因为受URL长度限制,但效率较高;

Post可以传输大量数据,所以上传文件时只能用Post方式;

区别四:

get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;

post较get安全性较高;

区别五:

get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。

post支持标准字符集,可以正确传递中文字符。


11、HTTP请求报文与响应报文格式

请求报文包含三部分:

a、请求行:包含请求方法、URI、HTTP版本信息

b、请求首部字段

c、请求内容实体

响应报文包含三部分:

a、状态行:包含HTTP版本、状态码、状态码的原因短语

b、响应首部字段

c、响应内容实体


12、常见的HTTP相应状态码

200:请求被正常处理

204:请求被受理但没有资源可以返回

206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。

301:永久性重定向

302:临时重定向

303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上

304:发送附带条件的请求时,条件不满足时返回,与重定向无关

307:临时重定向,与302类似,只是强制要求使用POST方法

400:请求报文语法有误,服务器无法识别

401:请求需要认证

403:请求的对应资源禁止被访问

404:服务器无法找到对应资源

500:服务器内部错误

503:服务器正忙


11、HTTP1.1版本新特性

a、支持长连接

b、高并发连接请求

c、断点续传


13、URL和URI的对比(这是好题)

答:(1)URL是统一资源定位符,URI是统一资源标识符,URL是URI的一种

(2)URL用来标识某一个资源的具体位置,而URI标识某一类资源,如html、jpg、mp4

(3)组成部分不同,URL由协议名称、主机地址端口号、路径名构成,而URI由访问资源的命名机制、主机名、路径名构成。

(4)绝对路径和相对路径的区别


14、Cookie&Session的格式、传输的内容(网易题目,真尼玛难啊,我还打算笔试通过就去面试,这尼玛找死啊)

答:(1)Set-Cookie:NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN-NAME;SECURE

其中NAME是该Cookie的名称,VALUE是该Cookie的值;Expires变量是一个只写变量,它确定了Cookie有效终止日期;Path属性定义了Web服务器上哪些路径下的页面可获取服务器设置的Cookie;Domain=DOMAIN-NAME它确定了哪些Internet域中的Web服务器可读取浏览器所存取的Cookie,即只有来自这个域的页面才可以使用Cookie中的信息,Secure:在Cookie中标记该变量,表明只有当浏览器和WebServer之间的通信协议为加密认证协议时,浏览器才向服务器提交相应的Cookie。当前这种协议只有一种,即为HTTPS。

  Cookies以键值的方式记录会话跟踪的内容

(2)session包含一个session ID, SessionID是一个由24个字符组成的随机字符串。

当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。这个SessionID就是保存在客户端的,属于客户端Session


15、数据库的组合索引和单索引,查询的时候有什么区别 ?

答:在多条件查询时,联合索引效率要高,查询条件中出现联合索引第一列,或者全部,则能利用联合索引。而单一索引只要条件中出现索引列,无论在什么位置,都能利用索引查询。


16、进程与线程区别,什么时候采用多进程,什么时候采用多线程?

答:(1)进程是CPU分配的基本单位,线程是CPU调度的基本单位

(2)进程独占资源,而一个进程中的多个线程共享资源,如地址空间和进程代码段等

(3)相对于进程而言,线程是一个更切近执行体的概念,线程产生和撤销快,线程通信和切换也快。

(3)需要频繁创建销毁的优先用线程、多线程适合在对称多处理机上运行,而多进程适合在跨主机上运行。


17、进程间通信方式,共享内存方式如何实现?

答:消息队列、信号、信号量、管道通信、套接字、共享内存

共享内存方式:这段共享内存由一个进程创建,但多个进程都可以访问。

<1>创建/打开共享内存

<2>映射共享内存,即把指定的共享内存映射到进程的地址空间用于访问

<3>撤销共享内存映射

<4>删除共享内存对象


18、进程的调度方式,进程什么时候被调度,什么时候会退出?

答:调度方式:先来先服务、最高优先级、时间片轮转法、最高响应比、多级反馈队列。

什么时候调度:从阻塞到就绪,从就绪到运行,三个基本态的变化都会涉及到调度

什么时候退出:执行完毕或终止则退出。


19、线程太多有什么问题,任务太多怎么处理?

答:线程太多,同步是个麻烦问题,任务太多,就不断创建线程



20、shell:终端输入字符串如何一个字符一个字符地读到终端?(如果现场做,肯定做不出来的)

答:     

 

1
2
3
4
5
6
7
8
       #!/bin/bash
       read  -p  "please input the string: "  STRING
       3 num=1
       while  (( $num<=${ #STRING} )) ##当num小于字符串总长度的时候
       do
       echo  ${STRING}| cut  -c $num  ##截取第几个字符
       let  num=num+1
       done

                                                                          


21、聚集索引与非聚集索引的区别?

答:(1)聚集索引的物理顺序和索引顺序一致,非聚集索引的物理顺序和索引顺序不一致

(2)先创建聚集索引,然后才能创建非聚集索引

(3)一个表只能有一个聚集索引,但是可以有多个非聚集索引

(4)在聚集索引中,数据存储在B+树的叶子节点上,而非聚集索引的叶子节点存放的是索引值而不是数据


22、事务特性

(1)一致性:将事务中所做的操作捆绑成一个原子单元,即对于事务所进行的数据修改等操作,要么全部执行,要么全部不执行。

(2)原子性:事务在完成时,必须使所有的数据都保持一致状态,而且在相关数据中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都应该是正确的。

(3)隔离性:由并发事务所做的修改必须与任何其他事务所做的修改相隔离。事务查看数据时数据所处的状态,要么是被另一并发事务修改之前的状态,要么是被另一并发事务修改之后的状态,即事务不会查看由另一个并发事务正在修改的数据。这种隔离方式也叫可串行性。

(4)持久性:事务完成之后,它对系统的影响是永久的,即使出现系统故障也是如此。


23、匹配文本中的key,并打印出该行及下面的5行?

grep -A5 key filename


24、源码编译安装apache,要求为:安装目录为/usr/local/apache,需有压缩模块,rewrite,worker模式;并说明在apache的workerMPM中,为什么ServerLimit要放到配置段最前面?

答:./configure --prefix=/usr/local/apache --enable-so --with-rewrite --with-mpm-worker

ServerLimit指定了Maxclients最大配置数目的上限值


25、A文件的内容是1.1.1.1,B文件的内容是2.2.2.2 要求shell编程实现C文件的内容是1.1.2.2 ?(这是个好题啊)

答:sed 'H;N;s#\(1.1.\).*\n\(2.2\).*#\1\2#' a.txt b.txt   ##完全看不懂


26、mysql中,给本地用户webedit赋予webedit数据库中test表的查询权限,禁止其增加和删除的权限

grant select on wededit.test to 'webedit'@'localhost';

revoke update,delete on webedit.text from 'webedit'@'localhost';


27、目前,有一个文件,内容如下:

     172.16.100.1

     172.16.100.2

     172.16.100.3

     172.16.100.4

   请使用while和ssh命令,登录文件内的ip并执行hostname命令

   

#!/bin/bash

while read line

do

ssh root@$line hostname 

done <test.txt   


28、请使用awk命令将如下两份文件中名字相同的两行合并起来(卧槽,这题是真难啊,如果是当场要求当场做,很难的)

   A文件:

      韩海林 21岁

      海林韩 23岁

      韩林海 22岁

      林海韩 24岁

   B文件:

      韩林海 男

      海林韩 男

      韩海林 男

      林海韩 男

输出效果:

    韩海林 21岁 男

awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' 2.txt  1.txt > 3.txt

##NR是所有读取的文件行数,而FNR是正在读取文件的行数,NR最大值为8,FNR则重新从1-4计数

参考文档:http://www.linuxdiyf.com/linux/13007.html


29、Linux查看某个进程的线程的3种方法

答:(1)ps -T -p 3306【进程pid】(2)top -H (3)htop


30、请写出五种系统性能分析工具,并简述其作用和特点

答:sysbench(磁盘IO性能)、Awstats(web服务日志分析)、ab和httperf(测量web并发服务)、mysqlslap(mysql压力测试)

 

31、用什么命令查询指定IP地址的服务器端口?

nmap -p80,21,23 192.168.1.1

参考文档:http://www.nxadmin.com/tools/600.html


32、用什么命令定义某个程序执行的优先级别?

nice renice


33、如何让history命令显示具体时间?

vi ~/.bash_profile 

export HISTTIMEFORMAT='%F %T'

source ~/.bash_profile


34、查看Linux系统当前指定用户的邮件队列命令是

mailq 或者mail -u root


35、查看文件系统的类型

df -Th /dev/sda1


36、Ext4文件系统如何恢复rm命令删除文件 

Linux下删除文件并不是真实的删除磁盘分区中的文件,而是将文件的inode节点中的扇区指针清除,同时释放这些数据对应的数据块,当释放的数据块被系统重新分配时,那些被删除的数据就会被覆盖,所以误删除数据后,应马上卸载文件所在的分区,umount /dev/sda1

yum install e2fsprogs-devel  libcom_err-devel -y  、

tar -jxf extundelete-0.2.0.tar.bz2  

cd extundelete-0.2.0 2 && ./configure && make&& make install 

文件恢复:extundelete /dev/sda1 --restore-file 文件名

目录恢复:extundelete /dev/sda1 --restore-directory 目录名


37、简述linux下编译内核的意义与步骤?

答:编译内核的意义在于让硬件设备更稳定的发挥其应有的效能。

(1)下载内核源码包,解压并进入该目录

(2)make mrproper --清理内核源代码树(清理垃圾信息) 

(3)make menuconfig   --配置内核以及内核模块   

(4)make dep --生成依赖关系

(5)make bzImage --生成新内核

(6)make moudulds --编译新模块

(7)make modules_install --安装内核模块

(8)make install --安装内核


38、你说下你技术的强项和不足?(50%要问)

答:强项:iptables、网络基础   不足:selinux和shell脚本


39、如果给你300台服务器,你该怎么去管理?(对于一个应届生来说,很难回答,但要是被问到了呢)

答:如果是linux服务器,那安装的话使用kickstart,监控nagios少不了的,甚至zabbix,自动化部署用ansible或者puppet

如果是windows服务器,做域控和组策略


49、简述调整哪些内核参数?

答:主要分为两类:一类是core,一类是tcp,vi /etc/sysctl.conf,包括缓冲大小,窗口大小,tcp队列大小,共享内存段


50、查看某个进程打开的文件数  

答:lsof -p 3306 |wc -l 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值