为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
- 174 道运维工程师面试题
- 128道k8s面试题
- 108道shell脚本面试题
- 200道Linux面试题
- 51道docker面试题
- 35道Jenkis面试题
- 78道MongoDB面试题
- 17道ansible面试题
- 60道dubbo面试题
- 53道kafka面试
- 18道mysql面试题
- 40道nginx面试题
- 77道redis面试题
- 28道zookeeper
总计 1000+ 道面试题, 内容 又全含金量又高
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
样例:
touch指令:
touch指令创建空文件
touch 文件名称
touch 文件名称1 文件名称2
cp指令:
cp 指令拷贝文件到指定目录
cp [选项] source dest
-r :递归复制整个文件夹
强制覆盖不提示的方法:\cp
rm指令:
rm 指令移除文件或目录
rm [选项] 要删除的文件或目录
-rf :递归删除整个文件夹
-f : 强制删除不提示
mv指令:
mv 移动文件与目录或重命名
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件)
样例:
cat指令:
cat 查看文件内容,cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 | more
cat [选项] 要查看的文件
-n :显示行号
样例:
more指令:
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
more 要查看的文件
more指令中内置了若干快捷键:
less指令:
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
less 要查看的文件
echo指令:
echo输出内容到控制台
echo [选项] [输出内容]
head指令
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
head 文件
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
tail指令:
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容。
tail 文件
tail -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
tail -f 文件 (功能描述:实时追踪该文档的所有更新)
案例1:
案例2: 实时监控 mydate.txt , 看看到文件有变化时,是否看到, 实时的追加日期
> 指令 和 >> 指令:
> 输出重定向:将原来的文件内容覆盖
>> 追加:不会覆盖原来的文件内容
ln 指令:
软链接也成为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
样例:
细节说明:当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。
history指令:
查看已经执行过历史命令,也可以执行历史指令
history (功能描述:查看已经执行过历史命令)
时间日期类
date指令-显示当前日期:
date (功能描述:显示当前时间)
date +%Y(功能描述:显示当前年份)
date +%m(功能描述:显示当前月份)
date +%d(功能描述:显示当前是哪一天)
date “+%Y-%m-%d %H:%M:%S”(功能描述:显示年月日时分秒)
date指令-设置日期:
date -s 字符串时间
cal指令:
查看日历指令
cal [选项] (功能描述:不加选项,显示本月日历)
案例:
搜索查找类
find指令:
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终
端。
find [搜索范围] [选项]
locate指令:
locaate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
locate 搜索文件
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
grep指令和 管道符号 | :
grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
grep [选项] 查找内容 源文件
案例:
压缩和解压类
gzip/gunzip 指令:
gzip 用于压缩文件, gunzip 用于解压的
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
zip/unzip 指令:
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
-r:递归压缩,即压缩目录
-d<目录> :指定解压后文件的存放目录
案例:
tar 指令:
tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。
tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
案例:
权限管理
0-9位说明:
-
第0位确定文件类型(
d:目录、 - :普通文件 、l :链接文件、 c:字符设备 、 b:块文件
) -
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—所有者权限
-
第4-6位确定所属组(同用户组的)拥有该文件的权限,—所在组的用户权限
-
第7-9位确定其他用户拥有该文件的权限 —其他组用户权限
修改权限-chmod:
通过chmod指令,可以修改文件或者目录的权限。
第一种方式:+ 、-、= 变更权限,u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
第二种方式:通过数字变更权限:用数字表示rwx: r=4,w=2,x=1,rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
chmod o+w 文件目录名
chmod a-x 文件目录名
chmod u=rwx,g=rx,o=x 文件目录名
||
chmod 751 文件目录名
样例:
修改文件所有者-chown:
chown newowner file #改变文件的所有者
chown newowner:newgroup file #改变用户的所有者和所有组
-R #如果是目录 则使其下所有子文件或目录递归生效
案例:
定时任务调度
任务调度crand:系统在某个时间执行的特定的命令或程序
任务调度分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
crontab 进行定时任务的设置:
crontab [选项]
crontab –e:编辑定时任务。
crontab –r:终止任务调度。
crontab –l:列出当前有那些任务调度
service crond restart [重启任务调度]
样例:
定时调度我们的脚本或这代码,如果只是简单的任务可以不用写脚本,直接再crontab中加入任务即可。
样例:每小时的每分钟执行ls –l /etc/ >> /tmp/to.txt
命令
5个占位符的说明:
特殊符号的说明:
案例:每隔1分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
实现文件的定时更新:
Linux磁盘分区与挂载
查看所有设备挂载情况:
lsblk
lsblk -f
案例:
磁盘情况查询:
df -h (查询系统整体磁盘使用情况)
du -h /目录 (查询指定目录的磁盘占用情况,默认为当前目录)
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
样例:
磁盘情况-工作实用指令
1. 统计/home文件夹下文件的个数
2. 统计/home文件夹下目录的个数
3. 统计/home文件夹下文件的个数,包括子文件夹里的
4. 以树状显示目录结构
网络配置
Linux网络配置原理图
查看网络IP和网关:
查看虚拟网络编辑器
查看ip地址、网关
查看windows环境的中VMnet8网络配置 (ipconfig指令)
ping 测试主机之间网络连通性
ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
应用实例
测试当前服务器是否可以连接百度
linux网络环境配置
第一种方法(自动获取):
说明:登陆后,通过界面的来设置自动获取ip
特点:linux启动后会自动获取IP,缺点是每次自动获取的ip地址可能不一样。
第二种方法(指定固定的ip)
直接修改配置文件来指定IP,并可以连接到外网(程序员推荐),编辑
vi /etc/sysconfig/network-scripts/ifcfg-eth0
要求:将ip地址配置的静态的, IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议),ip地址为192.168.42.131。
重启网络服务或者重启系统生效:service network restart 、reboot
进程管理
显示系统执行的进程:
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数.
ps –aux|grep xxx ,比如我看看有没有sshd服务
案例:
ps -ef
是以全格式显示当前所有的进程,-e 显示所有进程。-f 全格式。ps -ef|grep xxx
案例:
终止进程kill和killall:
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
kill [选项] 进程号 (通过进程号杀死进程)
killall 进程名称 (通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
-9 :表示强迫进程立即停止
案例1:踢掉某个非法登录用户
案例2: 终止远程登录服务sshd, 在适当时候再次重启sshd服务
案例3: 终止多个gedit 编辑器
killall gedit
案例4:强制杀掉一个终端
查看进程树pstree
pstree [选项] ,可以更加直观的来看进程信息
-p :显示进程的PID
-u :显示进程的所属用户
案例:树状的形式显示进程的pid
服务(service)管理
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。
service管理指令:在CentOS7.0后 不再使用service ,而是 systemctl
service 服务名 [start | stop | restart | reload | status]
使用案例:重启防火墙,查看当前防火墙的状况。
关闭防火墙:
关闭或者启用防火墙后,立即生效,[telnet 测试 某个端口即可]
。 这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。 如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令。
查看服务名:
方式1:使用setup
-> 系统服务 就可以看到。
方式2: /etc/init.d/服务名称
服务的运行级别(runlevel):
查看或者修改默认级别: vi /etc/inittab
开机的流程说明:
chkconfig指令:
通过chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭
chkconfig --list|grep xxx (查看服务)
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
案例:
案例:将sshd 服务在运行级别5下设置为不自动启动
案例: 在所有运行级别下,关闭和开启防火墙,chkconfig重新设置服务后自启动或关闭,需要重启机器reboot才能生效.
动态监控进程:
top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。
top [选项]
选项说明:
交互操作说明:
案例1.监视特定用户
top:输入此命令,按回车键,查看执行的进程。
u:然后输入“u”回车,再输入用户名,即可
案例2:终止指定的进程。
top:输入此命令,按回车键,查看执行的进程。
k:然后输入“k”回车,再输入要结束的进程ID号
监控网络状态:
查看系统网络情况netstat
netstat [选项]
-an 按一定顺序排列输出
-p 显示哪个进程在调用
案例:
案例:请查看服务名为 sshd 的服务的信息。
检测主机连接命令ping: 是一种网络检测检测工具,它主要是用检测远程主机是否正常,或是两部主机间的介质是否为断、网线是否脱落或网卡故障。
ping 对方ip地址
RPM 与 YUM
rpm包的管理:
一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
Linux的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。
rpm包的简单查询指令:
rpm –qa|grep xx
案例:查询系统中是否安装火狐,X86_64表示64位系统,i686、i386表示32位系统,noarch表示通用。
rpm包的其它查询指令:
rpm -qa :查询所安装的所有rpm软件包
rpm -qa | more
rpm -qa | grep X [rpm -qa | grep firefox ]
rpm -q 软件包名 :查询软件包是否安装
rpm -q firefox
rpm -qi 软件包名 :查询软件包信息
rpm -qi file
rpm -ql 软件包名 :查询软件包中的文件
rpm -ql firefox
rpm -qf 文件全路径名 查询文件所属的软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log
rpm包的管理:
卸载rpm包:
rpm -e RPM包的名称
rpm -e --nodeps RPM包的名称 (强制删除)
如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。如: $ rpm -e foo removing these packages would break dependencies:foo is needed by bar-1.0-1
, 如果我们就是要删除 foo这个rpm 包,可以增加参数 --nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行,如:$ rpm -e --nodeps foo
安装rpm包:
rpm -ivh RPM包全路径名称
-i=install 安装
-v=verbose 提示
-h=hash 进度条
案例:安装firefox浏览器
yum
Yum 是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
yum的基本指令:
查询yum服务器是否有需要安装的软件
yum list|grep xx软件列表
安装指定的yum包
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
efox
rpm -qi 软件包名 :查询软件包信息
rpm -qi file
rpm -ql 软件包名 :查询软件包中的文件
rpm -ql firefox
rpm -qf 文件全路径名 查询文件所属的软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log
rpm包的管理:
卸载rpm包:
rpm -e RPM包的名称
rpm -e --nodeps RPM包的名称 (强制删除)
如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。如: $ rpm -e foo removing these packages would break dependencies:foo is needed by bar-1.0-1
, 如果我们就是要删除 foo这个rpm 包,可以增加参数 --nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行,如:$ rpm -e --nodeps foo
安装rpm包:
rpm -ivh RPM包全路径名称
-i=install 安装
-v=verbose 提示
-h=hash 进度条
案例:安装firefox浏览器
yum
Yum 是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
yum的基本指令:
查询yum服务器是否有需要安装的软件
yum list|grep xx软件列表
安装指定的yum包
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!