运维面试中可能出现的面试问题总结

网络基础

OSI 7层模型及各层协议
  • 应用层:HTTP,FTP,SMTP
  • 表示层:TELNET
  • 会话层:SMTP,DNS
  • 传输层:TCP,UDP
  • 网络层:IP.ICMP,ARP
  • 数据链路层:PDN,PPP
  • 物理层:IEEE 802.1A ,IEEE 802.2到IEEE 802.11
TCP/IP模型
  • 应用层
  • 传输层
  • 网络层
  • 数据链路层
常见的http状态码
  • 200 请求成功
  • 301 永久重定向
  • 302 临时跳转
  • 304 请求资源成功
  • 400 请求错误
  • 401 未授权
  • 403 禁止访问
  • 404 请求的资源不存在
  • 405 请求的方法不允许
  • 500 内部服务器错误。
  • 502 服务器网关错误
  • 503 服务器不可用
  • 504 服务器网关超时
tcp和udp的区别
  • TCP 面向连接(如打电话要先拨号建立连接)提供可靠的服务,UDP 是无连接的,即发送数据之前不需要建立连接,UDP 尽最大努力交付,即不保证可靠交付。

  • UDP 具有较好的实时性,工作效率比 TCP 高,适用于对高速传输和实时性有较高的通信或广播通信。

  • 每一条 TCP 连接只能是一对一的,UDP 支持一对一,一对多,多对一和多对多的交互通信。

  • UDP 分组首部开销小,TCP 首部开销 20 字节,UDP 的首部开销小,只有 8 个字节。

  • TCP 面向字节流,实际上是 TCP 把数据看成一连串无结构的字节流,UDP 是面向报文的一次交付一个完整的报文,报文不可分割,报文是 UDP 数据报处理的最小单位。

UDP 适合一次性传输较小数据的网络应用,如 DNS,SNMP 等。

tcp三次握手和四次挥手

tcp三次握手:

  • 1.客户端发送syn请求,请求服务器连接,
  • 2.服务器响应syn/ack标志,告诉客户端我已经接收到信息了,
  • 3.客户端返回ack标志,表示自己知道了。

tcp四次挥手:

  • 1.:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态;

  • 2.:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态;

  • 3:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态;

  • 4:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手。

其中:FIN标志位数置1,表示断开TCP连接。

为什么四次挥手会发送两次FIN

因为TCP连接是全双工的,每个方向都必须单独关闭

为什么TCP请求比UDP请求慢

由于Tcp需要传输数据之前先建立连接,传输的时候也有一系列机制来保证可靠传输,所以传输效率比Udp更低

http请求全部过程
  • 1、使用DNS域名解析;

  • 2、发起TCP的3次握手

  • 3、建立TCP连接后发起http请求;

  • 4、服务器响应http请求,浏览器得到返回response;

  • 5、浏览器解析response,并请求其它的资源(如js、css、图片等);

  • 6、浏览器对页面进行渲染。

http和https的区别
  • HTTP协议以明文方式发送内容,不提供任何方式的数据加密。HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
  • https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。并且https协议需要到ca申请证书。
  • HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
session和cookie的区别
  • cookie是保存在客户端的

  • cookie有大小限制

  • session是保存在服务器端

  • session更加安全

  • session会比较占用服务器性能,当访问增多时应用cookie

get和post的区别
  • 1.get 提交的数据会放在 URL 之后,并且请求参数会被完整的保留在浏览器的记录里,由于参数直接暴露在 URL 中,可能会存在安全问题,因此往往用于获取资源信息。而 post 参数放在请求主体中,并且参数不会被保留,相比 get 方法,post 方法更安全,主要用于修改服务器上的资源。

  • 2.get 请求只支持 URL 编码,post 请求支持多种编码格式。

  • 3.get 只支持 ASCII 字符格式的参数,而 post 方法没有限制。

  • 4.get 提交的数据大小有限制(这里所说的限制是针对浏览器而言的),而 post 方法提交的数据没限制

  • 5.get 方式需要使用 Request.QueryString 来取得变量的值,而 post 方式通过 Request.Form 来获取。

  • 6.get 方法产生一个 TCP 数据包,post 方法产生两个(并不是所有的浏览器中都产生两个)。

常见的端口协议

20-21-FTP
22-SSH
23-Telnet
25-SMPT
53-DNS
80-HTTP
110-POP3
161-SMTP
443-HTTPS
445-CIFS
1433-MSSQL
1521-Oracle
2049-NFS
3306-mysql
3389-windows2003远程桌面协议
4000-QQ
6379-redis
7001-weblogic
8080-TOMCAT/JBOSS/XML(XML数据库)

DNS使用什么协议
  • DNS使用TCP和UDP两种协议,DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议。
  • UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。
DNS工作原理
  • 咱们以访问 www.163.com 这个域名为例,来看一看当你访问 www.163.com 时,会发生哪些事:

  • 先查找本地 DNS 缓存(自己的电脑上),有则返回,没有则进入下一步

  • 查看本地 hosts 文件有没有相应的映射记录,有则返回,没有则进入下一步

  • 向本地 DNS 服务器(一般都是你的网络接入服务器商提供,比如中国电信,中国移动)发送请求进行查询,本地DNS服务器收到请求后,会先查下自己的缓存记录,如果查到了直接返回就结束了,如果没有查到,本地DNS服务器就会向DNS的根域名服务器发起查询请求:请问老大, www.163.com 的ip是啥?

  • 根域名服务器收到请求后,看到这是个 .com 的域名,就回信说:这个域名是由 .com 老弟管理的,你去问他好了,这是.com老弟的联系方式(ip1)。

  • 本地 DNS 服务器接收到回信后,照着老大哥给的联系方式(ip1),马上给 .com 这个顶级域名服务器发起请求:请问 .com 大大,www.163.com 的ip 是啥?

  • .com 顶级域名服务器接收到请求后,看到这是 163.com 的域名,就回信说:这个域名是 .163.com 老弟管理的,你就去问他就行了,这是他的联系方式(ip2)

  • 本地 DNS 服务器接收到回信后,按照前辈的指引(ip2),又向 .163.com 这个权威域名服务器发起请求:请问 163.com 大大,请问 www.163.com 的ip是啥?

  • 163.com 权威域名服务器接收到请求后,确认了是自己管理的域名,马上查了下自己的小本本,把 www.163.com 的ip告诉了 本地DNS服务器。

  • 本地DNS服务器接收到回信后,非常地开心,这下总算拿到了www.163.com的ip了,马上把这个消息告诉了要求查询的客户(就是你的电脑)。由于这个过程比较漫长,本地DNS服务器为了节省时间,也为了尽量不去打扰各位老大哥,就把这个查询结果偷偷地记在了自己的小本本上,方便下次有人来查询时,可以快速回应。

转载链接超全总结!关于 DNS 看这一篇就够了

linux基础

常见的linux命令

1.mkdir
2.cd
3.ls
4.mv
5.cp
6.ps
7.cat
8.rm
9.rmdir
10.find
11.grep
12.sudo
13.chmod
14.kill
15.ping
16.top(重要)
17.man
18.echo
19.wget
20.head

top命令详解

top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况

如何查看Linux当前系统版本号和内核版本号

一.查看系统版本号
1.lsb_release-a 命令,即可查看所有版本信息。
2.cat /etc/issue
二.查看内核版本号
1.cat /proc/version
2.uname -a

已知80端口被一个进程占用,查找哪个进程占用了80端口

1.sudo lsof -i :80
2.sudo netstat -tlnp | grep 80
3.sudo ps -ef | grep 进程名

查看进程占用cpu的情况

1.ps -aux | grep name
2.ps -aux | grep pid
3.top -p 端口号

数据库基础

常见的关系数据库和非关系数据库
  • 关系数据库:Oracle、MySQL、SQL Server、Microsoft Access、DB2
  • 非关系数据库:Redis、MongBD、Hbase、CouhDB

网络安全基础

DDOS攻击

DDOS攻击原理
DDoS攻击的工作原理是通过控制发送大量的恶意流量,让目标网站瘫痪或服务器宕机,从而无法正常响应合法流量的访问请求。

  • ICMP Flood

    ICMP(Internet控制报文协议)用于在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。通过对目标系统发送海量数据包,就可以令目标主机瘫痪,如果大量发送就成了洪水攻击。

  • UDP Flood

    UDP协议是一种无连接的服务,在UDP Flood 中,攻击者通常发送大量伪造源IP地址的小UDP包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。100k bps的UDP Flood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。

上述传统的流量型攻击方式技术含量较低,伤人一千自损八百,攻击效果通常依赖受控主机本身的网络性能,而且容易被查到攻击源头,单独使用的情况已不常见。于是,具有四两拔千斤效果的反射型放大攻击就出现了。

  • NTP Flood

    NTP是标准的基于UDP协议传输的网络时间同步协议,由于UDP协议的无连接性,方便伪造源地址。攻击者使用特殊的数据包,也就是IP地址指向作为反射器的服务器,源IP地址被伪造成攻击目标的IP,反射器接收到数据包时就被骗了,会将响应数据发送给被攻击目标,耗尽目标网络的带宽资源。一般的NTP服务器都有很大的带宽,攻击者可能只需要1Mbps的上传带宽欺骗NTP服务器,就可给目标服务器带来几百上千Mbps的攻击流量。
    因此,“问-答”方式的协议都可以被反射型攻击利用,将质询数据包的地址伪造为攻击目标地址,应答的数据包就会都被发送至目标,一旦协议具有递归效果,流量就被显著放大了,堪称一种“借刀杀人”的流量型攻击。

  • SYN Flood

    这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。建立TCP连接,需要三次握手——客户端发送SYN报文,服务端收到请求并返回报文表示接受,客户端也返回确认,完成连接。

    SYN Flood 就是用户向服务器发送报文后突然死机或掉线,那么服务器在发出应答报文后就无法收到客户端的确认报文(第三次握手无法完成),这时服务器端一般会重试并等待一段时间后再丢弃这个未完成的连接。一个用户出现异常导致服务器的一个线程等待一会儿并不是大问题,但恶意攻击者大量模拟这种情况,服务器端为了维护数以万计的半连接而消耗非常多的资源,结果往往是无暇理睬客户的正常请求,甚至崩溃。从正常客户的角度看来,网站失去了响应,无法访问。

  • CC 攻击

    CC攻击是目前应用层攻击的主要手段之一,借助代理服务器生成指向目标系统的合法请求,实现伪装和DDoS。我们都有这样的体验,访问一个静态页面,即使人多也不需要太长时间,但如果在高峰期访问论坛、贴吧等,那就很慢了,因为服务器系统需要到数据库中判断访问者否有读帖、发言等权限。访问的人越多,论坛的页面越多,数据库压力就越大,被访问的频率也越高,占用的系统资源也就相当可观。

    CC攻击就充分利用了这个特点,模拟多个正常用户不停地访问如论坛这些需要大量数据操作的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的请求,网络拥塞,正常访问被中止。这种攻击技术性含量高,见不到真实源IP,见不到特别大的异常流量,但服务器就是无法进行正常连接。

操作系统基础
进程和线程的区别
  • 根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
  • 包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
  • 影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
  • 内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的

HR的一些问题总结

  • 你对运维的理解是什么?
  • 你对 Linux 操作系统的了解程度如何?你熟悉哪些 Linux 命令?
  • 你有哪些监控和诊断工具的经验?
  • 你有哪些自动化部署和配置管理的经验?
  • 你如何处理故障排除和恢复?
  • 你对容器化技术(如 Docker)有何了解?
  • 你了解哪些云计算平台(如 AWS、Azure、GCP)?你有使用它们的经验吗?
  • 你了解网络基础知识吗?如何排除网络故障?
  • 你有哪些项目经验和技能证书?
  • 你有哪些良好的工作习惯和团队合作能力?
  • 2
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Linux运维面试,常常会问到一些关于shell脚本的问题。其一个常见的问题是:#!/bin/bash的作用是什么?答案是:#!/bin/bash是shell脚本的第一行,称为shebang行。它的作用是告诉系统使用/bin/bash来执行该脚本。\[1\] 另一个常见的问题是:如何查看Linux系统每个IP的连接数?答案是使用以下命令:netstat -n | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -rn。这个命令可以列出系统每个IP的连接数。\[2\] 还有一个问题是:如何在Linux系统上查看BIOS版本、机器型号、序列号?以及如何查看网卡驱动版本和系统上的载体是实体机还是虚拟机?答案是使用以下命令:biosdecode命令可以查看BIOS版本,dmidecode | grep 'Product Name'可以查看服务器型号,dmidecode | grep 'Serial Number'可以查看主板的序列号,ethtool -i ens33可以查看网卡驱动版本,dmidecode | grep Product可以查看载体是物理机还是虚拟机。\[3\] 这些问题涉及到了shell脚本的基本知识和一些常用的命令,对于Linux运维人员来说是必备的技能。 #### 引用[.reference_title] - *1* *2* *3* [linux运维经典面试总结](https://blog.csdn.net/weixin_45548465/article/details/104986399)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值