为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
执行上面这条命令之后,consul 会被启动起来,并且占用终端
加上 -client=0.0.0.0 参数是让我们能够通过本地浏览器来访问 consul 提供的 http 接口(即 consul 能够对外提供服务)
注册服务
接下来我们将简单注册一个服务并在 web 界面上实现健康检查
这是官方文档给出的一个注册服务的配置示例:
{
"id": "web1",
"name": "web",
"port": 80,
"check": {
"name": "ping check",
"args": ["ping", "-c1", "learn.hashicorp.com"],
"interval": "30s",
"status": "passing"
}
}
编写一个服务定义配置文件,假设有一个名为 web 的服务在端口 80 上运行
# vim /etc/consul.d/web.json
{"service": {"name": "web", "tags": ["rails"], "port": 80}}
ctrl+c 终止掉 consul 服务,重启 consul
consul agent -dev -client=0.0.0.0 -config-dir=/etc/consul.d
- 查询服务
一旦 consul 启动,我们可以通过 HTTP API 方式来查询
即使用 /v1/catalog/service/{name}
查询
#web是自己定义服务的名字
curl http://localhost:8500/v1/catalog/service/web
还可以,通过浏览器访问 consul web界面去查看
可以看到 web 服务已经注册上去了
自带健康检查功能
k-v操作
除了提供服务发现和健康检查之外,consul 还支持 kv 存储
通过 kv 存储,可以实现动态配置保存、修改等功能
举个例子
有一台 server 提供 web 服务,它将网络配置信息以键值对形式保存到 consul 上
当 client 需要去调用这个 web 服务的时候,就去 consul 上面找到相关的 key 然后获取对应的 value
而当 server 的网络配置发生变化时,可以在 consul 上面直接修改 value
如上图所示,key 为 webserver,value 为 ip 和 port,以 YAML 的形式保存
consul 上面的 value 有多种形式(JSON、HCL、XML、YAML)
一般我们对 kv 的操作有两种方式:
- 通过命令行来操作(CLI API)
- 通过 consul 提供的 web 界面(HTTP API)来操作
使用CLI API操作key/value
consul 命令操作 kv 文档:Commands: KV | Consul | HashiCorp Developer
- 增
#语法:
consul kv put
我们想新增一个叫做 webserver 的 key,它的 value 如下:
ip=1.1.1.1
port=80
查看发现没有 webserver 这个 key
[root@localhost ~]# consul kv get webserver
Error! No key exists at: webserver
我们添加一下
#方法1,通过eof实现换行输入
[root@localhost ~]# consul kv put webserver - <<EOF
> ip=1.1.1.1
> port=80
> EOF
#方法2,通过管道符结合 echo 换行
[root@localhost ~]# echo -e 'ip=1.1.1.1 \nport=80'| consul kv put webserver -
#方法3,通过文件上传实现
[root@localhost ~]# cat info.txt
ip=1.1.1.1
port=80
[root@localhost ~]#consul kv put webserver @info.txt
- 删
#语法
consul kv delete
假设我们提供 web 服务的 server 发生故障了,需要在 consul 上面删掉它的配置
#server配置
[root@localhost ~]# consul kv get webserver
ip=1.1.1.1
port=80
[root@localhost ~]# consul kv delete webserver
Success! Deleted key: webserver
#成功删除
[root@localhost ~]# consul kv get webserver
Error! No key exists at: webserver
- 改
假设你某一个 key 对应有多个value,如果修改 value 的话是全部修改的,不能说修改 value 中的某一个值
举个例子,我想修改 webserver 中的 port,将其改成100
[root@localhost ~]# consul kv get webserver
ip=1.1.1.1
port=80
我只能全部修改,不能单独改 port 字段
[root@localhost ~]# consul kv put webserver - <<EOF
> ip=1.1.1.1
> port=100
> EOF
有一种比较好的方法,就是使用 import 和 export 参数
第一步:我们先将当前的 kv 导出到本地来作备份
[root@localhost ~]# consul kv export webserver >> webserver01.json
第二步:将新配置文件 import 上去
#方法1
consul kv import @webserver02.json
#方法2
cat webserver02.json | consul kv import -
#方法3
consul kv import "$(cat webserver02.json)"
- 查
#语法
consul kv get
查看指定 key
[root@localhost ~]# consul kv get webserver
ip=1.1.1.1
port=80
[root@localhost ~]# consul kv get apiserver
ip=127.0.0.1
port=22
查看指定 key 的详细信息
[root@localhost ~]# consul kv get -detailed webserver
CreateIndex 141
Flags 0
Key webserver
LockIndex 0
ModifyIndex 141
Session -
Value ip=1.1.1.1
port=80
递归列出所有的 key 以及对应的 value
[root@localhost ~]# consul kv get -recurse webserver
webserver/1.0.0/config:ip=2.2.2.2
port=101
webserver/1.0.1/config:ip=2.2.2.3
port=102
递归列出所有的 key
[root@localhost ~]# consul kv get -keys
apiserver
webserver/
#注意加不加下划线的区别
[root@localhost ~]# consul kv get -keys webserver
webserver/
[root@localhost ~]# consul kv get -keys webserver/
webserver/1.0.0/
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618635766)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
ys
apiserver
webserver/
#注意加不加下划线的区别
[root@localhost ~]# consul kv get -keys webserver
webserver/
[root@localhost ~]# consul kv get -keys webserver/
webserver/1.0.0/
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618635766)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**