面试题

发布于 29 天前  120 次阅读


用过哪些liunx操作系统

centos 7.6 7.9
麒麟 v10 sp3 sp2
Ubuntu  22.04.4

2024.6 centos7停止更新了 请问怎么办

更换:国产liunx(信创) 
	kylin v10 sp3
	UOS(统信)
	欧拉OpenEuler(华为)
	龙溪OpenAnonlis(阿里)
其他Liunx系统
	Rher(红帽企业版)
	Ubuntu
	Debian
不更换 继续使用

你拿到一个linux后一般做什么?

1.巡检

1.别名检查
alias 
2.系统版本
cat /etc/os-release
3.系统内核
uname -a
4.主机名
hostname
5.ip地址
ip a
6.cpu
lscpu
7.内存
free -h
8.磁盘
df -h

2.优化

1.配置yum源/apt源  添加额外的elep仓库
2.优化远程连接服务 sshd
3.优化防火墙
4.定时任务同步时间
5.安装常用的工具
6.配置命令行颜色

3.根据需求安装软件

内容替换

sed 's#需要替换掉的内容#替换后的内容#g' firename

运行级别

init 0		关机
init 1		单用户模式
init 2		多用户模式 没有网络服务
init 3		完全多用户模式,默认运行级别
init 4		待开发
init 5		图形化操作
init 6		重启

RAID卡

级别		磁盘数		实际容量		安全级别		读写速度		      应用场景
 0		最少1块	磁盘容量之和		一块都不能坏	  读写速度最快	 只要求速度,对安全没有要求的场景
 1		只能2块	  一半		   可以坏一块	  读还行,写入慢	 对安全有要求,且对读写速度没有要求的场景
 5		最少3块	   n-1			 可以坏一块		0-1中间		  业务较为稳定的场景
10 最少4块,2的倍数	一半			可以坏一半	   读写速度较快	   高并发场景	

小于2T和大于2T的磁盘分别用什么命令分区

小于2T使用:fidsk
大于2T使用:parted

实时查看某日志输出的命令

tail -f

查看磁盘信息、内存信息、和系统负载的命令

查看磁盘:df -h
查看内存:free -h
系统负载:uptime  w 

磁盘无法正常写入了,可能是什么原因导致的

1.磁盘空间不足
2.权限不足

让一个进程在后台持续运行的方式

screen

Screen -S wget_test		#启动一个子bash空间
  输入在后台一直运行的命令
  
  Ctrl+a+d 退出screen空间  # exit摧毁此空间
  Screen -r  wget_test  # 进入到screen空间
  Screen -list # 查看启动的screen空间

nohup

nohup  需要在后台运行的命令	&
ps auxf |grep		#查看进程

OSI 的七层模型

应用层:为应用软件提供接口,使应用程序可以使用网络服务  
		常见的应用层协议	http(80) https(443)  ftp(20/21) smtp(25) pop3(110) telnet(23) dns(53)
表现层:对数据进行编码、解码;数据的压缩、解压;数据的加密、解密
会话层:建立、维护、管理应用程序之间的会话
	   功能:对话控制 同步
传输层:负责网络中端到端的连接(TCP、UDP),保证报文在端到端之间的传输  #端口号
	   功能:服务点编址、分段与重组、连接控制、流量控制、差错控制	
网络层:主要作用就是路由和寻址,主要接触的是IP协议,即ip地址
	   功能:为网络设备提供逻辑地址,进行路由选择、分组转发
数据链路层:负责数据到达局域网后传输 	核心概念: mac地址 设备:二层交换
物理层:负责把数据转换为介质可以识别信号(数据),通过介质传输

dns解析流程

当浏览器输入一个 域名
1.系统在本地浏览器DNS缓存查找是否有这个域名对应的ip
2.系统hosts配置中是否有域名对应的ip
3.本地DNS服务中查询是否知晓域名对应的ip
4.本地DNS访问,访问根域名解析服务器(根的DNS),但是根的DNS只有顶级域名的记录,告诉我们顶级域名com的DNS地址
5.本地DNS访问,访问顶级域的DNS是否知晓域名对应的ip,但是告诉我们权威域对应的DNS
6.本地DNS访问,权威域名的DNS,知晓我们的域名对应的ip地址,IP返回给本地的DNS
7.本地DNS把域名与ip对应关系,给浏览器/命令行

三次握手

1.客户端向服务端发送一个报文SYN=1,ACk=0,请求建立连接,选择了一个初始序号:seq=x
客户端进入SYN-SEND状态
2.服务端接收到SYN=1,ACK=0的请求报文后,返回一个SYN=1,ACK=1的确认报文,同时确认号seq=x+1,为自己选择一个初始序号seq=y
服务器进入SYN-REVD状态
3.客户端收到服务端的返回信息后,给服务端返回一条确认信息,ACK=1,确认号为seq=y+1
客户端进入ESTABLISHED状态

四次挥手

1.客户端向服务端发送FIN=1,seq=z的断开连接请求 z是之前传输过来的最后一个字节的序号+1
客户端进入FIN-WAIT-1状态,等着服务器返回确认;
2.服务端收到客户端发送到断开连接请求后,发送确认信息ACK=1,seq=v ack=u+1
服务器进入CLOSE-WAIT状态。
3.当服务器也没有了可以传的信息之后,给客户端发送请求结束的报文。FIN=1,ACK=1,ack=u+1,seq=w。
这个时候的状态:服务器进入LAST-ACK状态。
4.客户端接收到FIN=1的报文之后,返回确认报文,ACK=1,seq=u+1,ack=w+1。
发送完毕之后,客户端进入等待状态,等待两个时间周期。关闭
# 为什么最后还要等待两个时间周期呢?
1、客户端的最后一个ACK报文在传输的时候丢失,服务器并没有接收到这个报文。这个候。服务器就会超时重传这个FIN消息,然后客户端就会重新返回最后一个ACK报文,等待两个时间周期,完成关闭。如果不等待这两个时间周期,服务器重传的那条消息就不会收到。服务器就因为接收不到客户端的信息而无法正常关闭。
2、预防上一次在三次握手中提到的失效的报文干扰。两个时间周期过去之后,所有的报文都会在网络中消失,保证下一次重新连接的时候有乱七八糟的报文影响。

软连接和硬链接的区别

软连接:ln -s创建,可以给文件和目录创建,可以跨文件系统 软连接inode号不同,相当于Windows的快捷方式,删除源文件软连接失效,删除软连接,对源文件没有影响
硬链接:ln 创建,可以给文件创建,不能给目录创建,不可以跨文件系统,inode号相同,删除源文件对硬链接没有影响,删除硬链接对源文件也没有影响,防止误删除

应用层协议,ssh默认端口等

FTP         21          明文协议,文件传输协议,基于TCP
TFTP        69          简单文件传输协议,基于UDP
SSH         22          安全外壳协议,远程连接,加密	#
Telnet      23          明文协议,远程连接     # 连接路由器交换机常用
SNMP        161/162     简单网络管理协议,基于UDP
SMTP        25          简单邮件传输协议,基于TCP
HTTP        80          超文本传输协议		#
HTTPS       443         超文本传输安全协议		#
DHCP        67/68/546   动态主机设置协议,C(67),S(68),546(V6)

用户访问网页的流程

dns解析

TCP三次握手

HTTP请求

1.请求行
请求方法 请求地址(URL) 请求主机
2.请求头
Accept:客户端能够处理的媒体类型
accept-language: 请求的语言
cache-control: 是否缓存
connection:	连接方式 默认长链接
host: 请求主机
user-agent: 客户端信息

HTTP响应

响应头
accept-ranges: 响应长度
connection: 连接 长连接
content-length: 资源大小
content-type: 响应的资源类型
date: 响应时间

nginx动态处理流程和静态处理流程

TCP四次挥手

location匹配规则优先级

1.精确匹配(=) 使用=进行匹配 只有完全匹配URL才会应用		#最高优先级
2.前缀匹配(^~) 使用^~表示URL路径的前缀匹配,如果匹配成功,则不再匹配其他正则表达式的location。	#优先级在正则匹配前
3.正则匹配(~)区分大小写的正则匹配 		#优先级在不区分大小写正则匹配前
4.正则匹配(~*)不区分大小写的正则匹配	    #优先级在通用匹配前
5.通用匹配(/) 任何未匹配到其他location的请求都会匹配到以/结尾的location,相当于默认匹配 	#优先级最低

https加密流程

1.浏览器请求网站
2.服务器响应请求,返回一个数字证书,证书包含公钥信息
3.浏览器验证证书的合法性,如果不合法则提示HTTPS警告;如果合法下一步
4.浏览器生成一个随机数R并使用网站公钥对R进行加密
5.浏览器将加密的R传送给服务器
6.服务器用自己的私钥解密的到R
7.服务器以R为密钥使用了对称加密算法加密网页内容并传输给浏览器
8.浏览器以R为密钥使用之前约定好的解密算法获取网页内容

Nginx负载均衡调度算法有哪几种?

1.rr轮循      默认使用的调度算法
2.weight     加权轮询  后端服务器配置不同的时候
3.ip_hash    以IP地址的方式进行转发,第一次10.0.0.1请求的是WEB01 那么以后每次来访问都是web01来响应你
4.url_hash   以url来转发到不同的web服务器
5.least_conn 最少链接数 看哪台web服务器的TCP链接少,我就分给谁。

负载均衡和高可用的区别

负载均衡作用:将网络流量和请求均匀的分配到多个服务器上,防止单个服务器过载过高,从而提高提高吞吐量和响应速度
高可用做用:高可用性的目标是确保系统即使在部分组件发生故障的情况下也能继续运行,防止单点故障,从而减少系统停机时间

实现方式不同:负载均衡通过分配请求来实现,而高可用通过冗余和故障转移来实现

LVS的四种网络模式

1.DR模式
2.NAT模式
3.FULL NAT模式
4.TUN隧道模式

负载均衡会话保持如何实现

session 同步进行会话保持
1.通过数据库进行session同步 使用缓存数据库redis
2.利用cookie同步session 
3.利用memcache同步session 

nginx-location 匹配规则的优先级

匹配符 匹配规则 优先级
= 精确匹配 1
^~ 以某个字符串开头 2
~ 区分大小写的正则匹配 3
~* 不区分大小写的正则匹配 4
/ 通用匹配,任何请求都匹配到 5                        

nginx优化

1、CPU亲和、worker进程数、调整每个worker进程打开的文件数 # 必做
	nginx配置文件开启worker_cpu_affinity auto; 
2、使用额pool网络模型、调整每个worker进程的最大连接数  默认是1024  # 必做
	worker_connections  10240;
3、文件的高效读取sendfile、nopush  # 看需求
	use epoll; # 使用epoll高效网络模型
4、文件的传输实时性、nodealy		  # 看需求
	
5、开启tcp长连接,以及长连接超时时间keepalived # 配置如果有负载均衡
	
6、开启文件传输压缩gzip				# 看需求

7、开启静态文件expires缓存			# 看需求 静态文件缓存天数 N年

8、隐藏nginx版本号				  # 必做
	server_tokens off; # 禁止浏览器显示nginx版本号
9、禁止通过ip地址访问,禁止恶意域名解析,只允许域名访问	# 必做 空的主机头部 用IP地址访问业务

10、配置防盗链、以及跨域访问			# 看需求

11、防DDOS、cc攻击,限制单IP并发连接,以及http请求	# 看需求

12、优雅显示nginx错误页面		   # 看需求

13、nginx加密传输https优化		    # 必做

如何实现负载均衡

使用nginx负载均衡
通过proxy_pass模块和upstream模块实现转发

云实现负载均衡的流程

软连接可以做平滑升级 新版本有问题可以回滚

nginx和LVS做四层代理的区别?

nginxLVS
工作原理web请求,URL等应用信息,工作在应用层ip+端口,工作在网络层
优点stream模块内核态
适用场景适合需要处理复杂HTTP请求的中小型Web系统,也可以用于四层的TCP/UDP负载均衡适合需要处理大量四层请求的场景,如数据库请求、TCP服务等高并发、高吞吐的业务需求

keepalived的工作原理

keepalived基于VRRP协议生成虚拟路由组
keepalived正常工作时会主MASTER不断发送心跳报文给备BACUP节点 来确定是否发现故障 没有收到心跳报文 备BACKUP会接管主节点的IP资源和服务 配置抢占式的时候 当主节点恢复时,备节点会释放接管的资源和服务

redis是什么

 redis是一个开源的内存中数据结构存储系统,可以用作数据库、缓存和消息中间件。

如何测试一个端口服务不通

telnet 命令
nmap 命令

系统日志在哪里查看

var/log/messages

如何查看路由信息

route -n 
netstat -rn

group怎么过滤空行

grep -v '^$' 

查看磁盘信息

fdisk -l

小棱
最后更新于 2024-12-24