初级运维(二)


       哎卧槽,,终于知道如何用代码号排版了!准备运维工程师面试,固然得很全面了,网络+MYSQL+linux+OS,找一些有水准的题目练练,分析深入点。html

       特么的哪家公司会是我人生的第一家落脚地,反正劳资不将就,不甘心!前端



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

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

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


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

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


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

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

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

(3)请求超时

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


四、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流量,视频流量。


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

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


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

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

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


七、网站打开太慢的缘由分析?(中档题,命中率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


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

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

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


九、经常使用的HTTP方法有哪些?

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

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

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

HEAD: 得到报文首部,与GET方法相似,只是不返回报文主体,通常用于验证URI是否有效。

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

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

TRACE:远程诊断服务器


十、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支持标准字符集,能够正确传递中文字符。


十一、HTTP请求报文与响应报文格式

请求报文包含三部分:

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

b、请求首部字段

c、请求内容实体

响应报文包含三部分:

a、状态行:包含HTTP版本、状态码、状态码的缘由短语

b、响应首部字段

c、响应内容实体


十二、常见的HTTP相应状态码

200:请求被正常处理

204:请求被受理但没有资源能够返回

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

301:永久性重定向

302:临时重定向

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

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

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

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

401:请求须要认证

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

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

500:服务器内部错误

503:服务器正忙


十一、HTTP1.1版本新特性

a、支持长链接

b、高并发链接请求

c、断点续传


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

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

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

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

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


1四、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


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

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


1六、进程与线程区别,何时采用多进程,何时采用多线程?

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

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

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

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


1七、进程间通讯方式,共享内存方式如何实现?

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

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

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

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

<3>撤销共享内存映射

<4>删除共享内存对象


1八、进程的调度方式,进程何时被调度,何时会退出?

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

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

何时退出:执行完毕或终止则退出。


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

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



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

答:     

 

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

                                                                          


2一、汇集索引与非汇集索引的区别?

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

(2)先建立汇集索引,而后才能建立非汇集索引

(3)一个表只能有一个汇集索引,可是能够有多个非汇集索引

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


2二、事务特性

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

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

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

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


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

grep -A5 key filename


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

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

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


2五、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   ##彻底看不懂


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

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

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


2七、目前,有一个文件,内容以下:

     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   


2八、请使用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


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

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


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

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

 

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

nmap -p80,21,23 192.168.1.1

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


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

nice renice


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

vi ~/.bash_profile 

export HISTTIMEFORMAT='%F %T'

source ~/.bash_profile


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

mailq 或者mail -u root


3五、查看文件系统的类型

df -Th /dev/sda1


3六、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 目录名


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

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

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

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

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

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

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

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

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

(8)make install --安装内核


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

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


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

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

若是是windows服务器,作域控和组策略


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

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


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

答:lsof -p 3306 |wc -l 

相关文章
相关标签/搜索