最新运维工程师面试总结(含答案)_运维面试(1),神操作

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

mysql> show variables like 'datadir%';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| datadir       | /usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.00 sec)

9. mysql数据库文件后缀名有哪些?用途什么?

  • myisam

.frm文件:保护表的定义
.myd:保存表的数据
.myi:表的索引文件

  • innodb

.frm:保存表的定义
.ibd:表空间

10. 如何修改数据库用户的密码?

  • mysql8之前
set password for 用户名@localhost = password('新密码'); 
mysqladmin -u用户名 -p旧密码 password 新密码  
update user set password=password('123') where user='root' and host='localhost';

  • mysql8之后
# mysql8初始对密码要求高,简单的字符串不让改。先改成:MyNewPass@123;
alter user 'root'@'localhost' identified by 'MyNewPass@123';
# 降低密码难度
set global validate_password.policy=0;
set global validate_password.length=4;
# 修改成简易密码
alter user 'root'@'localhost'IDENTIFIED BY '1111';

11. 如何修改用户权限?如何查看?

  • 授权:
grant all on *.* to user@'%' identified by 'passwd'

  • 查看权限
show grants for user@'%';

三、nosql

1. redis数据持久化有哪些方式?

  • rdb
  • aof

2. redis集群方案有哪些?

  • 官方cluster方案
  • twemproxy代理方案
  • 哨兵模式
  • codis
    客户端分片

3. redis如何进行数据备份与恢复?

  • 备份

redis 127.0.0.1:6379> SAVE
创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。

  • 还原

只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可
redis 127.0.0.1:6379> CONFIG GET dir

  1. “dir”
  2. “/usr/local/redis/bin”

4. MongoDB如何进行数据备份?

mongoexport / mongoimport
mongodump / mongorestore

5. kafka为何比redis rabbitmq快?

https://www.zhihu.com/question/22480085

四、docker

1. dockerfile有哪些关键字?用途是什么?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UhHwOzJW-1685248088363)(https://api.cuiliangblog.cn/v1/public/imgProxy/?url=https://cdn.nlark.com/yuque/0/2020/jpeg/2308212/1606384293612-6cb1dcb2-f12f-407f-8ebf-47f15050737a.jpeg#align=left&display=inline&height=398&margin=%5Bobject%20Object%5D&name=mmexport1606384205455.jpg&originHeight=398&originWidth=831&size=142623&status=done&style=none&width=831)]

2. 如何减小dockerfile生成镜像体积?

  • 尽量选取满足需求但较小的基础系统镜像,例如大部分时候可以选择debian:wheezy或debian:jessie镜像,仅有不足百兆大小;
  • 清理编译生成文件、安装包的缓存等临时文件;
  • 安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖;
  • 从安全角度考虑,应用要尽量使用系统的库和依赖;
  • 如果安装应用时候需要配置一些特殊的环境变量,在安装后要还原不需要保持的变量值;

3. dockerfile中CMD与ENTRYPOINT区别是什么?

  • CMD 和 ENTRYPOINT 指令都是用来指定容器启动时运行的命令。
  • 指定 ENTRYPOINT 指令为 exec 模式时,CMD指定的参数会作为参数添加到 ENTRYPOINT 指定命令的参数列表中。

4. dockerfile中COPY和ADD区别是什么?

  • COPY指令和ADD指令都可以将主机上的资源复制或加入到容器镜像中
  • 区别是ADD可以从 远程URL中的资源不会被解压缩。
  • 如果是本地的压缩包ADD进去会被解压缩

5. docker的cs架构组件有哪些?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FWxTdrGC-1685248088363)(https://api.cuiliangblog.cn/v1/public/imgProxy/?url=https://cdn.nlark.com/yuque/0/2020/jpeg/2308212/1606384460582-73c1e1ac-e7ee-4da7-b810-d2310371eabe.jpeg#align=left&display=inline&height=934&margin=%5Bobject%20Object%5D&name=SAVE_20201126_175404.jpg&originHeight=934&originWidth=854&size=103298&status=done&style=none&width=854)]

6. docker网络类型有哪些?

  • host模式
  • container模式
  • none模式
  • bridge模式

7. 如何配置docker远程访问?

  • vim /lib/systemd/system/docker.service
  • 在ExecStart=后添加配置,注意,需要先空格后,再输入 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

8. docker核心namespace CGroups 联合文件系统功能是什么?

  • namespace:资源隔离
  • cgroup:资源控制
  • 联合文件系统:支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下

9. 命令相关:导入导出镜像,进入容器,设置重启容器策略,查看镜像环境变量,查看容器占用资源

  • 导入镜像 docker load -i xx.tar
  • 导出镜像docker save -o xx.tar image_name
  • 进入容器docker exec -it 容器命令 /bin/bash
  • 设置容器重启策略启动时 --restart选项
  • 查看容器环境变量 docker exec {containerID} env
  • 查看容器资源占用docker stats test2

10. 构建镜像有哪些方式?

  • dockerfile
  • 容器提交为镜像

11. docker和vmware虚拟化区别?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DOphSxZ3-1685248088364)(https://api.cuiliangblog.cn/v1/public/imgProxy/?url=https://cdn.nlark.com/yuque/0/2020/jpeg/2308212/1606385089235-6c5f9d7c-20f1-4cb9-abc2-cff8096e9492.jpeg#align=left&display=inline&height=465&margin=%5Bobject%20Object%5D&name=mmexport1606385080747.jpg&originHeight=465&originWidth=612&size=159635&status=done&style=none&width=612)]

五、kubernetes

1. k8s的集群组件有哪些?功能是什么?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U4LLu7CJ-1685248088364)(https://api.cuiliangblog.cn/v1/public/imgProxy/?url=https://cdn.nlark.com/yuque/0/2020/png/2308212/1606447373367-f429cad4-676c-47cc-b238-57003cf13319.png#align=left&display=inline&height=573&margin=%5Bobject%20Object%5D&name=%E6%9C%AA%E5%91%BD%E5%90%8D%E5%9B%BE%E7%89%87.png&originHeight=573&originWidth=793&size=27098&status=done&style=none&width=793)]

2. kubectl命令相关:如何修改副本数,如何滚动更新和回滚,如何查看pod的详细信息,如何进入pod交互?

  • 修改副本数 kubectl scale deployment redis --replicas=3
  • 活动更新kubectl set image deployments myapp-deploy myapp=myapp:v2
  • 回滚kubectl rollout undo deployments myapp-deploy
  • 查看pod详细信息kubectl describe pods/
  • 进入pod交互kubectl exec -it -c bash

3. etcd数据如何备份?

  • etcdctl --endpoints=“https://192.168.32.129:2379,https://192.168.32.130:2379,192.168.32.128:2379” --cacert=/etc/kubernetes/cert/ca.pem --key=/etc/etcd/cert/etcd-key.pem --cert=/etc/etcd/cert/etcd.pem snapshot save snashot1.db
  • Snapshot saved at snashot1.db

4. k8s控制器有哪些?

  • 副本集(ReplicaSet)
  • 部署(Deployment)
  • 状态集(StatefulSet)
  • Daemon集(DaemonSet)
  • 一次任务(Job)
  • 计划任务(CronJob)
  • 有状态集(StatefulSet)

5. 哪些是集群级别的资源?

  • Namespace
  • Node
  • Role
  • ClusterRole
  • RoleBinding
  • ClusterRoleBinding

6. pod状态有哪些?

  • Pending 等待中
  • Running 运行中
  • Succeeded 正常终止
  • Failed 异常停止
  • Unkonwn 未知状态

7. pod创建过程是什么?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SJ8ERoki-1685248088364)(https://api.cuiliangblog.cn/v1/public/imgProxy/?url=https://cdn.nlark.com/yuque/0/2020/jpeg/2308212/1606385821622-f36232c8-15a5-46dc-a750-bfc90624b205.jpeg#align=left&display=inline&height=524&margin=%5Bobject%20Object%5D&name=SAVE_20201126_181652.jpg&originHeight=524&originWidth=790&size=92836&status=done&style=none&width=790)]

8. pod重启策略有哪些?

Pod的重启策略有3种,默认值为Always。

  • Always : 容器失效时,kubelet 自动重启该容器;
  • OnFailure : 容器终止运行且退出码不为0时重启;
  • Never : 不论状态为何, kubelet 都不重启该容器

9. 资源探针有哪些?

  • ExecAction:在容器中执行一个命令,并根据其返回的状态码进行诊断的操作称为Exec探测,状态码为0表示成功,否则即为不健康状态。
  • TCPSocketAction:通过与容器的某TCP端口尝试建立连接进行诊断,端口能够成功打开即为正常,否则为不健康状态。
  • HTTPGetAction:通过向容器IP地址的某指定端口的指定path发起HTTP GET请求进行诊断,响应码为2xx或3xx时即为成功,否则为失败。

10. requests和limits用途是什么?

  • “requests”属性定义其请求的确保可用值,即容器运行可能用不到这些额度的资源,但用到时必须要确保有如此多的资源可用
  • ”limits”属性则用于限制资源可用的最大值,即硬限制

11. kubeconfig文件包含什么内容,用途是什么?

包含集群参数(CA证书、API Server地址),客户端参数(上面生成的证书和私钥),集群context 信息(集群名称、用户名)。

12. RBAC中role和clusterrole区别,rolebinding和 clusterrolebinding区别?

  • Role 可以定义在一个 namespace 中,如果想要跨 namespace则可以创建ClusterRole,ClusterRole 具有与 Role相同的权限角色控制能力,不同的是 ClusterRole 是集群级别的
  • RoleBinding 适用于某个命名空间内授权,而 ClusterRoleBinding 适用于集群范围内的授权

13. ipvs为啥比iptables效率高?

IPVS模式与iptables同样基于Netfilter,但是ipvs采用的hash表,iptables采用一条条的规则列表。iptables又是为了防火墙设计的,集群数量越多iptables规则就越多,而iptables规则是从上到下匹配,所以效率就越是低下。因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能

14. sc pv pvc用途,容器挂载存储整个流程是什么?

  • PVC:Pod 想要使用的持久化存储的属性,比如存储的大小、读写权限等。
  • PV :具体的 Volume 的属性,比如 Volume 的类型、挂载目录、远程存储服务器地址等。
  • StorageClass:充当 PV 的模板。并且,只有同属于一个 StorageClass 的 PV 和 PVC,才可以绑定在一起。当然,StorageClass 的另一个重要作用,是指定 PV 的 Provisioner(存储插件)。这时候,如果你的存储插件支持 Dynamic Provisioning 的话,Kubernetes 就可以自动为你创建 PV 了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jPvvFsP6-1685248088364)(https://api.cuiliangblog.cn/v1/public/imgProxy/?url=https://cdn.nlark.com/yuque/0/2020/png/2308212/1606447989005-23283e61-2776-456e-8827-25eebf8fb8a2.png#align=left&display=inline&height=679&margin=%5Bobject%20Object%5D&name=%E6%9C%AA%E5%91%BD%E5%90%8D%E5%9B%BE%E7%89%87.png&originHeight=679&originWidth=967&size=44551&status=done&style=none&width=967)]

15. nginx ingress的原理本质是什么?

  • ngress controller通过和kubernetes api交互,动态的去感知集群中ingress规则变化,
  • 然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置,
  • 再写到nginx-ingress-controller的pod里,这个Ingress
    controller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,
  • 然后reload一下使配置生效。以此达到域名分配置和动态更新的问题。

16. 描述不同node上的Pod之间的通信流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kJGHChHN-1685248088364)(https://api.cuiliangblog.cn/v1/public/imgProxy/?url=https://cdn.nlark.com/yuque/0/2020/png/2308212/1606448071815-d05c64b2-9d8a-4570-8f77-4ee2e1513446.png#align=left&display=inline&height=776&margin=%5Bobject%20Object%5D&name=%E6%9C%AA%E5%91%BD%E5%90%8D%E5%9B%BE%E7%89%87.png&originHeight=776&originWidth=1278&size=471377&status=done&style=none&width=1278)]

17. k8s集群节点需要关机维护,需要怎么操作

  • 进行pod驱逐:kubelet drain <node_name>
  • 检查node上是否无pod运行,切被驱逐的pod已经在其他节点运行正常
  • 关机维护
  • 开机启动相关服务(注意启动顺序)
  • 解除node节点不可调度:kubectl uncordon node
  • 创建测试pod,并使用节点标签测试节点可以被正常调度

18. Calico和flannel区别

  • Flannel(简单、使用居多):基于Vxlan技术(叠加网络+二层隧道),不支持网络策略
  • Calico(较复杂,使用率少于Flannel):也可以支持隧道网络,但是是三层隧道(IPIP),支持网络策略
  • Calico项目既能够独立地为Kubernetes集群提供网络解决方案和网络策略,也能与flannel结合在一起,由flannel提供网络解决方案,而Calico此时仅用于提供网络策略。

六、prometheus

1. prometheus对比zabbix有哪些优势?

https://blog.csdn.net/wangyiyungw/article/details/85774969**

2. prometheus组件有哪些,功能是什么?

在这里插入图片描述

3. 指标类型有哪些?

  • Counter(计数器)
  • Guage(仪表盘)
  • Histogram(直方图)
  • Summary(摘要)

4. 在应对上千节点监控时,如何保障性能

  • 降低采集频率
  • 缩小历史数据保存天数,
  • 使用集群联邦和远程存储

5. 简述从添加节点监控到grafana成图的整个流程

  • 被监控节点安装exporter
  • prometheus服务端添加监控项
  • 查看prometheus web界面——status——targets
  • grafana创建图表

6. 在工作中用到了哪些exporter

  • node-exporter监控linux主机
  • cAdvisor监控容器
  • MySQLD Exporter监控mysql
  • Blackbox Exporter网络探测
  • Pushgateway采集自定义指标监控
  • process exporter进程监控

七、ELK

1. Elasticsearch的数据如何备份与恢复?

https://www.cnblogs.com/tcy1/p/13492361.html
https://blog.csdn.net/moxiaomomo/article/details/78401400?locationNum=8&fps=1

2. 你们项目中使用的logstash过滤器插件是什么?实现哪些功能?

  • date 日期解析
  • grok 正则匹配解析
  • overwrite 写某个字段
  • dissect 分隔符解析
  • mutate 对字段做处理
  • json 解析
  • geoip 地理位置解析
  • ruby 修改logstash event

3. 是否用到了filebeat的内置module?用了哪些?

在这里插入图片描述

4. elasticsearch分片副本是什么?你们配置的参数是多少?

https://juejin.cn/post/6844903862088777736

八、运维开发

1. 备份系统中所有容器镜像

#备份镜像列表
docker images|awk 'NR>1{print $1":"$2}'|sort > images.list。
#导出所有镜像为当前目录下文件:
while read img; do
    echo $img
    file="${img/\//-}"
    sudo docker save --output $file.tar $img
done < images.list
#将本地镜像文件导入为Docker镜像:
while read img; do
    echo $img
    file="${img/\//-}"
    docker load < $file.tar
done < images.list

2. 编写脚本,定时备份某个库,然后压缩,发送异机

  • 公共部分定义函数,如获取时间戳,配置报警接口
  • 多使用if判断是否存在异常并处理,如数据库大,检测任务是否完成。检测生成文件大小是否是空文件

3. 批量获取所有主机的系统信息

  • 使用python的paramiko库,ssh登陆主机执行查询操作
  • 使用shell脚本批量ssh登陆主机并执行命令
  • 使用ansible的setup模块获取主机信息
  • prometheus的node_exporter收集主机资源信息

4. django的mtv模式流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G20mNtuR-1685248088365)(https://api.cuiliangblog.cn/v1/public/imgProxy/?url=https://cdn.nlark.com/yuque/0/2020/jpeg/2308212/1606541375034-4cace753-5894-42e8-9a74-3eae8d4b1203.jpeg#align=left&display=inline&height=430&margin=%5Bobject%20Object%5D&name=SAVE_20201128_132923.jpg&originHeight=430&originWidth=992&size=102450&status=done&style=none&width=992)]

5. python如何导出、导入环境依赖包

  • 导出环境
pip freeze >> requirements.txt

  • 导入环境
pip install -r requirement.txt

6. python创建,进入,退出,查看虚拟环境

  • 安装软件包
pip3 install virtualenv

  • 检测安装是否成功
virtualenv --version

  • 创建虚拟环境
  • cd到要创建虚拟环境的目录
cd github/test/venv/

  • 创建虚拟环境
virtualenv test

  • 激活虚拟环境
source test/bin/activate(activate路径)

  • 退出虚拟环境
deactivate

7. flask和django区别,应用场景

  • Django功能大而全,Flask只包含基本的配置 Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用。
  • Flask 比 Django 更灵活 用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性 ,可能有的应用场景不适合使用一个标准的ORM(Object-Relational Mapping 对象关联映射),或者需要与不同的工作流和模板系统交互。

8. 列举常用的git命令

  • $ git init
  • $ git config
  • $ git add
  • $ git commit
  • $ git branch
  • $ git checkout
  • $ git tag
  • $ git push
  • $ git status
  • $ git log

9. git gitlab jenkins的CICD流程如何配置

  • 开发者git提交代码至gitlab仓库
  • jenkins从gitlab拉取代码,触发镜像构建
  • 镜像上传至harbor私有仓库
  • 镜像下载至执行机器
  • 镜像运行

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值