为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
⑥**ps_mem命令:**ps_mem是一个简单的Python脚本,可以准确地获取Linux中程序的核心内存使用情况。可以确定每个程序(而不是每个进程)使用多少 RAM。它计算每个程序使用的内存总量,总计=总和(程序进程的专用RAM)+总和(程序进程的共享RAM)。计算共享 RAM 存在问题,并且该工具会自动为正在运行的内核选择最准确的方法。
注:可以通过 yum install ps_mem 安装该命令。
2. Python的内存垃圾回收有了解吗?
这涉及到python的内存管理和垃圾回收机制。
Python的内存管理器实际上是一个内存池。它分为若干个固定大小的内存块,每当有新的对象需要内存时,Python就从内存池中分配一个内存块给它。这种内存管理方式可以避免频繁地向操作系统申请和释放内存,从而提高性能。
内存管理机制有三种:(1)引用计数;(2)标记清除;(3)分代回收。
具体内容可以查看:Python内存管理与垃圾回收深度解析 - 简书
3. 如何知道一个服务器连接了几台设备呢?
要查看一个Linux服务器上连接了多少台设备,可以使用以下命令:
上述的命令可以直接在Linux终端(Shell)中输入,而不需要编写独立的Shell脚本。这些命令是用于在终端中即时执行的。让我们简要解释一下每个命令:
①查看网络连接情况的命令:
bash netstat -a | grep ESTABLISHED
这是一个用于查看网络连接状态的命令,通过管道 (|
) 将其输出传递给 grep
命令,以过滤显示出所有已建立连接的行。这只是一个命令行的组合,可以直接在终端中运行。
②查看当前登录用户的命令:
bash who
或者
bash w
这两个命令直接在终端中运行,用于显示当前登录用户的信息。
③查看SSH连接情况的命令:
bash who | grep pts
这是一个查看通过SSH连接到服务器的用户的命令,同样也可以在终端中直接运行。
在实际操作中,管理员或运维人员可能会直接在终端中运行这些命令来获取实时信息,而不一定需要编写独立的Shell脚本。脚本通常用于自动化一系列任务,而这些命令是用于即时交互的。
二. 运维会涉及到消息队列,包括服务和组件等。
消息队列(Message Queue,简称MQ),指保存消息的一个容器,本质是个队列。 消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。
如下图所示,向消息队列中存放数据的叫做生产者,从消息队列中获取数据的叫做消费者。
消息队列的应用场景:消息队列的主要特点是异步处理,主要目的是减少请求响应时间,实现非核心流程异步化,提高系统响应性能。 此外,还应用于解耦、流量削峰和日志处理。
**消息队列MQ主要包含两种模型:点对点与发布订阅两种模型。
**① 点对点模式:**消息生产者 和 消息消费者 之间 点到点 的通信,包含三个角色:
- 消息队列(Queue)
- 发送者(Sender)
- 接收者(Receiver)
每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中) 发送者和接收者之间在时间上没有依赖性 接收者在成功接收消息之后需向队列应答成功每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,可以放在 内存 中也可以 持久化,直到他们被消费或超时。
**② 发布订阅模式:**包含三个角色:
- 主题(Topic)
- 发布者(Publisher)
- 订阅者(Subscriber)
多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。每个消息可以有多个消费者:和点对点方式不同,发布消息可以被所有订阅者消费 发布者和订阅者之间有时间上的依赖性。 针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。 为了消费消息,订阅者必须保持运行的状态。
参考:百度安全验证
三. 你理解的运维是做什么呢?
运维是对网络、服务器各个阶段的运营与维护,在成本、稳定性、效率上达成一致可接受的状态。运维顾名思义就是运行维护,运维工程师就是要做好生产系统的安全稳定运行维护工作。
四. 对云网知识是否有了解?是否知道计算机网络的TCP协议的三次握手和四次挥手?四次挥手的作用是什么呢?
TCP协议:传输控制协议(TCP,Transmission Control Protocol) 是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- ACK:TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
- SYN(SYNchronization):在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。
- FIN (finis):即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。
- URG、ACK、PSH、PST、RST、SYN、FIN只有一位,也就是只有 0 或者 1 两种状态。
采用三次握手而不是两次的原因是:为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
**四次挥手的流程:**TCP是全双工模式,这就意味着,当主机1发出FIN
报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK
报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN
报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。
最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
给大家整理的电子书资料:
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
!**
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!