为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
WebResquest类主要方法:
名称 | 说明 |
---|---|
Create() | 创建对象 |
GetResponse() | 在子类中被重写时,返回对Internet请求的响应 |
GetRequestStream() | 在子类中被重写时,返回用于将数据写入Internet资源的Stream |
WebResquest类主要属性:
名称 | 说明 |
---|---|
ContentLength | 在子类中被重写时,获取或设置所发送的请求数据的内容长度 |
ContentType | 在子类中被重写时,获取或设置所发送的请求数据的内容类型 |
Credentials | 在子类中被重写时,获取或设置用于对Internet资源请求进行身份验证的网络凭证 |
Method | 在子类中被重写时,或取或设置要在此请求中使用的协议方法 |
RequestUri | 获取与请求关联的Internet资源的URI |
Headers | 在子类中被重写时,获取或设置与请求关联的表头名称/值对的集合 |
WebResponse类的主要成员:
名称 | 说明 |
---|---|
GetResponseStream | 在子类中被重写时,从Internet资源返回数据流 |
ContentLength | 在子类中被重写时,获取或设置所发送的请求数据的内容长度 |
ContentType | 在子类中被重写时,获取或设置所发送的请求数据的内容类型 |
Headers | 在子类被重写时,获取或设置与请求关联的标头名称/值对的集合 |
下载文件和获取Header信息示例:
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace NetWorkDemo
{
public partial class FormDownload : Form
{
public FormDownload()
{
InitializeComponent();
}
/// <summary>
/// 下载文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1\_Click(object sender, EventArgs e)
{
WebClient client = new WebClient();
Stream s = client.OpenRead(textBox1.Text);
StreamReader reader = new StreamReader(s);
richTextBox1.Text = reader.ReadToEnd();
reader.Close();
s.Close();
}
/// <summary>
/// 获取Header头信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2\_Click(object sender, EventArgs e)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(textBox1.Text);
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
NameValueCollection headers = res.Headers;
foreach (string name in headers)
{
listBox1.Items.Add(name + "------" + headers[name]);
}
}
}
}
WebBrowser网页浏览器控件
将WebBrowser控件拖拽到窗体上。设置网页地址即可浏览网页:
webBrowser1.Navigate(“www.baidu.com”, false);
TCP网络编程
System.Net.Sockets命名空间包含了一些相关类,允许直接发送TCP网络请求或者某个端口监听TCP网络请求。
System.Net.Sockets命名空间:
类:
名称 | 说明 |
---|---|
Socket | 实现套接字接口 |
SocketException | 发生套接字错误时引发的异常 |
TcpClient | 为TCP网络服务提供客户端连接 |
TcpListener | 从TCP网络客户端侦听连接 |
UdpClient | 提供用户数据协议(UDP)网络服务 |
枚举
名称 | 说明 |
---|---|
AddressFamily | 指定Socket类的实例可以使用的寻找方案 |
ProtocolFamily | 指定Socket类的实例可以使用的协议类型 |
PortocolType | 指定Socket类支持的协议 |
SocketFlags | 指定套接字的发送和接收行为 |
SocketOptionLevel | 为Socket.SetSocketOption和Socket.GetSocketOption方法定义套接字选项级别 |
TcpClient类
主要使用TcpClient类为TCP网络服务提供连接,包括相关属性和方法来控制连接,通过对流对象添加读写功能。
TcpClient类的主要方法:
名称 | 说明 |
---|---|
Connect | 使用指定的主机名和端口号将客户端连接到TCP主机 |
GetStream | 返回用于发送和接收数据的NetworkStream |
Close | 释放此TcpClient实例,而不关闭基础连接 |
TcpClient类的主要属性:
名称 | 说明 |
---|---|
Client | 获取或设置基础Socket |
SendTimeout | 发送操作超时时间 |
SendBufferSize | 获取或设置发送缓冲区的大小 |
ReceiveTimeout | 接收操作超时时间 |
ReceiveBufferSize | 获取或设置接收缓冲区的大小 |
TcpListener类
TcpListener类用于监听和接收连接请求,主要方法:
方法 | 说明 |
---|---|
Start | 开始侦听传入的连接请求 |
AcceptSocket | 接受挂起的连接请求 |
Stop | 关闭侦听器 |
NetworkStream类
传输数据时主要使用了NetworkStream类,它代表的是网络中传输的数据流,在发生会接收数据时,可从流中获取字节数据或对应的字符串。
NetworkStream类的主要方法:
名称 | 说明 |
---|---|
Read() | 从NetworkStream读取数据 |
ReadByte() | 从流中读取一个字节,并将流内的位置向前推进一个字节,已到达流的末尾,则返回-1 |
Write() | 将数据写入NetworkStream |
WriteByte() | 将一个字节写入流的当前位置,并将流内的位置向前推进一个字节 |
NetworkStream类的主要属性:
名称 | 说明 |
---|---|
Length | 获取流上可用数据的长度 |
Socket | 获取基础Socket |
服务端:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace NetWorkDemo
{
public partial class FormTCPRecv : Form
{
public FormTCPRecv()
{
InitializeComponent();
}
private TcpListener listen;
private NetworkStream netstream;
/// <summary>
/// 启动
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1\_Click(object sender, EventArgs e)
{
listen = new TcpListener(9999);
listen.Start();
listBox1.Items.Add("服务器启动");
Socket socket = listen.AcceptSocket();
netstream = new NetworkStream(socket);
}
/// <summary>
/// 接收
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2\_Click(object sender, EventArgs e)
{
if (netstream.DataAvailable)
{
byte[] getdata = new byte[1024];
int length = netstream.Read(getdata, 0, getdata.Length);
string msg = Encoding.Default.GetString(getdata, 0, length);
listBox1.Items.Add("收到客户端消息");
listBox1.Items.Add(msg);
}
}
}
}
客户端:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace NetWorkDemo
{
public partial class FormTCPSender : Form
{
public FormTCPSender()
{
InitializeComponent();
}
private NetworkStream netstream;
private void button1\_Click(object sender, EventArgs e)
{
TcpClient client = new TcpClient();
client.Connect("localhost", 9999);
netstream = client.GetStream();
if (textBox1.Text.Trim() == "")
{
MessageBox.Show("消息不能为空");
return;
}
else
{
byte[] senddata = Encoding.Default.GetBytes(textBox1.Text);
netstream.Write(senddata, 0, senddata.Length);
netstream.Flush();
}
netstream.Close();
}
}
}
Socket类
Socket实例包含了一个本地或者一个远程端点的套接字信息,Socket类的主要成员:
Socket类的主要方法:
最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
给大家整理的电子书资料:
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
、PPT等共享给大家!
资料预览
给大家整理的视频资料:
[外链图片转存中…(img-iL59SMkx-1715703953450)]
给大家整理的电子书资料:
[外链图片转存中…(img-Vw8Vwkzq-1715703953450)]
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!