以往运维岗本人面试真题分享

news2024/12/28 18:46:24

                              以下是本人面试运维岗的一些面试经历,在此做个记录分享

目录

 TCP/IP三次握手

IPtables

IPtables四表五链都是什么?

nat端口如何做?

开放本机的80端口该如何做?

如何在单用户模式下引导Centos?

nginx轮询模式都有哪些?

Mysql主从同步原理

Redis的数据持久化机制是什么?

Shell脚本

单引号和双引号的区别是什么?

 $@    $*    $?   是干什么用的?

计算1+2+3+......+100的值

批量创建20个用户,并将密码设置为当前登录的用户名

 /var/log/nginx/access.log 日志访问量最多的前十个IP

Python

打开文件有几种方式,有啥区别?

列表和元组有什么不同?

pass语句有啥用?

return和print有啥区别?

安装模块用什么命令?

Docker

简述docker和虚拟机的区别

docker run -itd 和 -e 参数是什么意思?

如何将容器中的端口映射到宿主机?

如何将镜像文件保存并导入?

Dockerfile中暴漏端口的参数是什么?

Dockerfile中 COPY和ADD的区别?

K8s

K8s的核心组件都有什么?

K8s创建一个Pod的流程

k8s的控制器都有哪些,有什么区别?

Pod状态都有哪些?

Elasticsearch的分片和副本是什么?

做过系统内核调优吗?

如果需要做系统安全加固,考虑从哪些方面着手?

nginx服务器无法提供服务排查思路?

为什么先定位原因,再解决问题?


 TCP/IP三次握手

客户端想要连接服务端时,向服务端发送 SYN message。Message 还包含 sequence number(32位的随机数),ACK 为0

服务端收到客户端 synchronization request 后,回复客户端 SYN 和 ACK。ACK 数值是收到的 SYN 加一

收到服务端的 SYN 后,客户端回复 ACK,ACK 值是 SYN 值加一,建立连接

IPtables

  • IPtables四表五链都是什么?

       四表(table):raw、mangle、nat、filter

       五链(chain):PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

  • nat端口如何做?

       iptables -t nat -A PREROUTING -p tcp --dport 80 -d 192.168.1.1 -j DNAT --to-destination 172.23.100.100:8080

  • 开放本机的80端口该如何做?

       iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 

如何在单用户模式下引导Centos?

重新启动按e编辑

进入 grub 提示符转到以 linux 开头的行尾,输入 rd.break 并回车

用rw模式挂载root文件系统,mount -o remount,rw /sysroot

然后执行 chroot /sysroot

nginx轮询模式都有哪些?

普通轮询、权重、ip_hash、第三方:响应时间,最少链接等

Mysql主从同步原理

主服务器把数据修改之后,会放入到二进制日志中(binary log)中,然后通过内部进程机制把日志传递到从服务器(从服务器在通过IO线程写入到中继日志)中并表示为中继日志(中继日志在通过sql线程传输给从服务器并执行),从而达到了主从一致
从服务器有俩个线程(I/O线程和SQL线程)I/O线程负责把主服务器上的日志拉取过来,slq线程是负责把日志执行.

核心命令例如:

    show master status;

    change master to

Redis的数据持久化机制是什么?

RDB(快照方式): RDB方式是一种快照式的持久化方法,将某一时刻的数据持久化到磁盘中。这种方式就是将内存中数据以快照的方式写入到二进制文件中 ,默认的文件名为dump.rdb。

AOF(日志追加): AOF方式是将执行过的写指令记录下来,在数据恢复时按照从前到后的顺序再将指令执行一遍。这种方式 redis 会将每一个收到的写命令都通过 write 函数追加到文件中(默认appendonly.aof)。

Shell脚本

  • 单引号和双引号的区别是什么?

       单引号定义字符串所见即所得,即将单引号内的内容原样输出

       双引号引用的内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容

  •  $@    $*    $?   是干什么用的?

       $@:表示执行脚本传入参数的所有个数,将命令行的所有参数区分成各个参数

       $*:表示执行脚本传入参数的列表,将命令行的所有参数看作一个整体

       $?:表示脚本执行的状态,0表示正常,其他表示错误

  • 计算1+2+3+......+100的值
#!/bin/bash

sum=0
for i in {1..100}
do
    sum=$((sum + i))
done

echo "1 加到 100 的和是: $sum"

  • 批量创建20个用户,并将密码设置为当前登录的用户名
#!/bin/bash

# 获取当前登录用户的用户名
CURRENT_USER=$(whoami)

# 循环创建20个用户,从 user1 到 user20
for i in $(seq 1 20); do
    USER="user$i"

    # 创建用户
    useradd $USER

    # 设置用户密码为当前用户的用户名
    echo "$USER:$CURRENT_USER" | chpasswd

    # 显示创建和设置密码信息
    echo "User $USER created and password set to $CURRENT_USER."
done

  •  /var/log/nginx/access.log 日志访问量最多的前十个IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10

Python

我不是干Python开发的,所以问的都是基础,和业务逻辑没有关系

  • 打开文件有几种方式,有啥区别?

       open函数,需要使用close函数手动关闭文件

       with open as file:自动关闭文件

  • 列表和元组有什么不同?

       列表是可变的

       元组是不可变的

  • pass语句有啥用?

       没想好函数功能怎么写,但为了保证语法检查的正确必须输入一些东西,使用 pass 语句。

  • return和print有啥区别?

       return是返回计算值,return 语句可以返回任何类型的数据,包括字符串、数字、列表、字典、对象等。

       print是打印数据到屏幕。

       return返回的结果不能直接输出到控制台,需要通过print才能打印出来。

  • 安装模块用什么命令?

       pip install

Docker

  • 简述docker和虚拟机的区别

       虚拟机是一种基于硬件虚拟化的解决方案,通过在物理服务器上运行一个虚拟化层(Hypervisor),在同一物理硬件上运行多个独立的操作系统实例每个虚拟机都是一个完整的操作系统实例,包含虚拟的 CPU、内存、存储等资源。虚拟机与其他虚拟机和主机操作系统完全隔离。

       Docker 容器是一个轻量级、可移植的运行环境,它包含应用程序及其依赖的所有文件。容器之间是基于内核的 cgroups 和 namespaces 实现资源隔离、限制和命名空间相互隔离的,但共享主机的操作系统内核,隔离容器是运行在共享操作系统上的独立环境,容器内的应用与外界隔离,

  • docker run -itd 和 -e 参数是什么意思?

       -i:交互模式运行容器

       -t: --tty,为容器分配个伪终端

       -d:后台模式运行并返回容器ID

       -e:环境变量

  • 如何将容器中的端口映射到宿主机?

       docker run -itd -p 8080:80 nginx /bin/bash

  • 如何将镜像文件保存并导入?

       docker save -o nginx.tar nginx:latest

       docker load -i nginx.tar

  • Dockerfile中暴漏端口的参数是什么?

       EXPOSE

  • Dockerfile中 COPY和ADD的区别?

       COPY:纯粹地将从构建上下文(即执行 docker build 命令时指定的目录及其子目录)中的文件或目录复制到镜像中指定的路径

       ADD:除了COPY的基本功能以外,还支持 解压归档文件: ADD 指令如果遇到压缩文件(如 .tar, .tar.gz, .zip 等),会自动解压这些文件到目标路径;从 URL 下载文件: ADD 还支持从URL来源复制文件,这意味着可以直接从互联网上下载文件并将其添加到镜像中。

K8s

  • K8s的核心组件都有什么?

       master上是kube-controller-manager、kube-apiserver、kube-scheduler、etcd

       worker上是kubelet、kube-proxy

  • K8s创建一个Pod的流程

       客户端提交Pod的配置信息到kube-apiserver。

       Apiserver收到指令后,通知给controller-manager创建一个资源对象。

       Controller-manager通过api-server将pod的配置信息存储到etcd数据中心中。

       Kube-scheduler检测到pod信息会开始调度预选适合运行pod的节点,然后将pod的资源配置单发送到node节点上的kubelet

       Kubelet根据scheduler发来的资源配置单运行pod,运行成功后,将pod的运行信息返回给scheduler,scheduler将返回的pod运行状况的信息存储到etcd数据中心。

  • k8s的控制器都有哪些,有什么区别?

       Deployment、Statefulset、DaemonSet 

       Deployment用于部署无状态服务,例如 Web 服务器、API 服务、负载均衡器等,这些服务可以水平扩展处理更多的请求流量

       Statefulset用于部署有状态服务,例如数据库系统(如 MySQL、PostgreSQL)、消息队列(如 RabbitMQ、Kafka)等,这些服务需要持久性存储和网络标识的稳定性。

       Damonset可以理解为是节点守护进程,每个node都必须有并且只有一个。常见的比如日志采集、守护进程等.

  • Pod状态都有哪些?

       Running:运行中,pod已经分配到节点上且pod内容器正常运行。

       Pending:挂载状态,pod已经创建好了但是没被分配到节点上。(出现此问题原因很多:资源不足、网络原因、端口被占用等等)

       Failed:失败,容器内的返回码是非零状态退出,进入失败状态。(logs -f查看pod日志及desceibe pod查看pod详细情况也可以排查其错误原因。)

       Terminating(终止):pod正在删除中。

       Unknow(未知):一般是集群出现问题;api出现问题;或者是api和调度器之间通信有问题;证书过期

       imagePullBackOff:拉取镜像失败

       CrashLoopBackOff:容器已经启动但是异常退出了,查看日志或者pod详细情况查找问题。

       error:pod启动过程中报错,可日志查看原因

       Podlniitializing:初始化中(pod中有初始化init容器)

       Evict:pod被驱逐

Elasticsearch的分片和副本是什么?

分片Shards

一个索引可以存储超出单个节点硬件限制的大量数据。比如,一个具有 10 亿文档数据 的索引占据 1TB 的磁盘空间,而任一节点都可能没有这样大的磁盘空间。 或者单个节点处理搜索请求,响应太慢。为了解决这个问题,Elasticsearch 提供了将索引划分成多份的能力,每一份就称之为分片。当你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。

副本Replicas
在一个网络 / 云的环境里,失败随时都可能发生,在某个分片/节点不知怎么的就处于 离线状态,或者由于任何原因消失了,这种情况下,有一个故障转移机制是非常有用并且是强烈推荐的。为此目的, Elasticsearch 允许你创建分片的一份或多份拷贝,这些拷贝叫做复制分片(副本)。

默认情况下,Elasticsearch 中的每个索引被分片 1 个主分片和 1 个复制,这意味着,如果你的集群中至少有两个节点,你的索引将会有 1 个主分片和另外 1 个复制分片(1 个完全拷贝)

做过系统内核调优吗?

配置文件   /etc/sysctl.conf

#关ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
 
#避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1
 
#开启恶意的icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1
 
#关闭路由转发
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
 
#开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
 
#处理无源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
 
#关sysrq功能
kernel.sysrq = 0
 
#core文件名添加pid作为扩展名
kernel.core_uses_pid = 1
 
#开SYN洪水攻击保护
net.ipv4.tcp_syncookies = 1
 
#修改消息队列长度
kernel.msgmnb = 65536
kernel.msgmax = 65536
 
#设置最大内存共享段大小bytes
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
 
#timewait的数量默认为180000
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
 
#每个网络接口接收数据包速率比内核处理这些包的速率快时允许送到队列数据包的最大数目
net.core.netdev_max_backlog = 262144
 
#限制仅仅是为防止简单的DoS攻击
net.ipv4.tcp_max_orphans = 3276800
 
#未收到客户端确认信息的连接请求最大值
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
 
#内核放弃建立连接之前发送SYNACK包数量
net.ipv4.tcp_synack_retries = 1
 
#内核放弃建立连接之前发送SYN包数量
net.ipv4.tcp_syn_retries = 1
 
#开timewait快速回收
net.ipv4.tcp_tw_recycle = 1
 
#允许将TIME-WAIT sockets重新用于新TCP连接
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
 
#当keepalive起用的时候TCP发送keepalive消息的频度缺省是2小时
net.ipv4.tcp_keepalive_time = 30
 
#允许系统打开端口范围
net.ipv4.ip_local_port_range = 1024 65000
 
#修改防火墙的表大小默认65536
#net.netfilter.nf_conntrack_max = 655350
#net.netfilter.nf_conntrack_tcp_timeout_established = 1200
 
#确保无人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

如果需要做系统安全加固,考虑从哪些方面着手?

使用iptabls或firewalld关闭不必要的端口

用户方面设置复杂密码,配置锁定策略

ssh远程不允许root登录

关键文件例如配置文件、密码文件等上锁

设置histpory记录时间戳

定期检查并应用系统和应用程序的安全更新补丁

nginx服务器无法提供服务排查思路?

top、free、df命令分析资源使用率

ps看进程存活

netstat看端口监听

curl、telnet命令测试端口及页面返回内容

systemctl status 和 journarctl -u <server.name> 查看服务运行状态及服务相关日志

分析相关服务的log日志

为什么先定位原因,再解决问题?

主观上来说搞清楚问题故障的因果关系,可以提高解决效率,避免不必要的操作。

客观上来说定位原因一方面是确认故障的产生原因,防止后续重复发生,另一方面是可以通过不断积累改善优化系统。

暂时就记着这些,后续想起来了再补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2241418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32 串口输出调试信息

软硬件信息 CubeMX version 6.12.1Keil uVision V5.41.0.0 注意 串口有多种&#xff1a; TTL232485 串口的相关知识&#xff1a; 01-【HAL库】STM32实现串口打印&#xff08;printf方式) &#xff0c; 内含 TTL 和 232 区别。 我把 232 串口连进 STM32 串口助手收到的信息…

Python 三种方式实现自动化任务

在这篇文章中&#xff0c;我们将介绍一些用Python实现机器人过程自动化的包。机器人流程自动化&#xff08;Robotic process automation&#xff0c;简称RPA&#xff09;是指将鼠标点击和键盘按压自动化的过程&#xff0c;即模拟人类用户的操作。RPA用于各种应用程序&#xff0…

Android ART知多少?

Android 虚拟机 ART&#xff08;Android Runtime&#xff09;是 Android 平台上的应用程序运行时环境&#xff0c;用于执行应用程序的字节码。ART 自 Android 5.0&#xff08;Lollipop&#xff09;开始取代了 Dalvik&#xff0c;成为 Android 的默认运行时环境。本文将从以下几…

Vulnhub靶场 Billu_b0x 练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 文件包含2. SQL注入3. 文件上传4. 反弹shell5. 提权&#xff08;思路1&#xff1a;ssh&#xff09;6. 提权&#xff08;思路2&#xff1a;内核&#xff09;7. 补充 0x04 总结 0x00 准备 下载链接&#…

软间隔支持向量机支持向量的情况以及点的各种情况

软间隔支持向量 ​ 这一节我们要回答的问题是&#xff1f;如何判断一个点是软间隔支持向量机中的支持向量&#xff0c;在硬间隔支持向量机中&#xff0c;支持向量只需要满足一个等式&#xff1a; y i ( w T x i b ) − 1 0 y_i(w^Tx_i b) -1 0 yi​(wTxi​b)−10 ​ 在软间…

PCA 原理推导

针对高维数据的降维问题&#xff0c;PCA 的基本思路如下&#xff1a;首先将需要降维的数据的各个变量标准化&#xff08;规范化&#xff09;为均值为 0&#xff0c;方差为 1 的数据集&#xff0c;然后对标准化后的数据进行正交变换&#xff0c;将原来的数据转换为若干个线性无关…

在Ubuntu 24.04 LTS上安装飞桨PaddleX

前面我们介绍了《在Windows用远程桌面访问Ubuntu 24.04.1 LTS》本文接着介绍安装飞桨PaddleX。 PaddleX 3.0 是基于飞桨框架构建的一站式全流程开发工具&#xff0c;它集成了众多开箱即用的预训练模型&#xff0c;可以实现模型从训练到推理的全流程开发&#xff0c;支持国内外多…

Web_前端_HTML入门学习的案例案例1

HTML入门学习的案例 来源: HTML入门学习的案例_给学生讲html内容案例-CSDN博客 案例1&#xff1a;hello.html <html><body><title>html技术</title></body><body>hello</body> </html>&#xff08;但是有乱码&#xff09; …

【C#】C#编程入门指南:构建你的.NET开发基础

文章目录 前言&#xff1a;1. C# 开发环境 VS的基本熟悉2. 解决方案与项目的关系3. 编辑、编译、链接、运行4. 托管代码和CLR4.1 CLR&#xff1a;4.2 C# 代码第编译过程&#xff08;两次编译的&#xff09; 5. 命名空间6. 类的组成与分析7. C# 的数据类型7.1 值类型7.2 引用类型…

115页PDF | 埃森哲_XX集团信息化能力成熟度评估及能力提升方案(限免下载)

一、前言 这份报告是埃森哲_XX集团信息化能力成熟度评估及能力提升方案&#xff0c;报告首先分析了集团的战略规划&#xff0c;包括调整优化期、转型升级期和跨越发展期的目标&#xff0c;然后识别了集团面临的内部挑战和外部压力&#xff0c;如管控体系不完善、业务板块多样化…

面试时问到软件开发原则,我emo了

今天去一个小公司面试&#xff0c;面试官是公司的软件总监&#xff0c;眼镜老花到看笔记本电脑困难&#xff0c;用win7的IE打开leetcode网页半天打不开&#xff0c;公司的wifi连接不上&#xff0c;用自己手机热点&#xff0c;却在笔记本电脑上找不到。还是我用自己的手机做热点…

Wi-Fi背后的工作原理与技术发展历程介绍【无线通信小百科】

1个视频说清楚WIFI&#xff1a;频段/历程/技术参数/常用模块 智能手机拥有率越来越高的今天&#xff0c;大家已经习惯了通过无线网络上网的方式。除了在外面需要用手机流量&#xff0c;我们通常在家里或者机场&#xff0c;商场都可以通过Wi-Fi连接上网。本期文章将为大家介绍Wi…

【MySQL 保姆级教学】详细讲解视图--(15)

视图 1. 为什么要有视图&#xff1f;2.视图的定义和特点3. 创建视图4. 视图的使用举例4.1 创建表并插入数据4.2 举例 5. 视图和基表之间有什么联系呢&#xff1f; 1. 为什么要有视图&#xff1f; 当我们频繁地使用用多表查询和复合查询出的结果时&#xff0c;就需要频繁的使用…

Python中的HTTP协议

文章目录 一. 网址URL二. HTTP协议1. HTTP协议的概念2. HTTP协议的作用3. HTTP请求报文与响应报文① HTTP请求报文Ⅰ. GET请求报文格式Ⅱ. GET请求报文分析Ⅲ. POST请求报文格式Ⅳ. POST请求报文分析Ⅴ. GET与POST请求报文总结 ② HTTP响应报文Ⅰ. HTTP响应报文格式Ⅱ. HTTP响应…

108. UE5 GAS RPG 实现地图名称更新和加载关卡

在这一篇里&#xff0c;我们将实现对存档的删除功能&#xff0c;在删除时会有弹框确认。接着实现获取玩家的等级和地图名称和存档位置&#xff0c;我们可以通过存档进入游戏&#xff0c;玩家在游戏中可以在存档点存储存档。 实现删除存档 删除存档需要一个弹框确认&#xff0…

DNS批量解析管理软件有什么用

在复杂的网络环境中&#xff0c;DNS批量解析管理软件犹如一把功能强大的钥匙&#xff0c;开启了高效网络管理的大门&#xff0c;为网络运营和维护带来了诸多便利。 1、对于网络服务提供商而言&#xff0c;DNS批量解析管理软件极大地提高了工作效率 传统的DNS解析管理方式在处…

IoT [remote electricity meter]

IoT [remote electricity meter] 物联网&#xff0c;远程抄表&#xff0c;电表数据&#xff0c;举个例子

sql数据库-排序查询-DQL

目录 语法 排序方式 举例 将表按年龄从小到大排序 将表按年龄从大到小排序 ​编辑 多重排序 将表按年龄升序&#xff0c;年龄相同按入职时间降序 语法 select * from 表名 order by 字段名1 排序方式1&#xff0c;字段2 排序方式2; 排序方式 升序&#xff1a;ASC&…

在spring boot工程中使用Filter时,@WebFilter 注解不生效的问题分析和解决方案

1. 问题描述 首先编写一个Filter类并通过Component放入spring容器中&#xff0c;通过实现jakarta.servlet中提供的Filter接口完成过滤器的创建&#xff0c;代码如下。 import jakarta.servlet.*; import jakarta.servlet.annotation.WebFilter; import org.springframework.st…

学习threejs,使用TWEEN插件实现动画

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.PLYLoader PLY模型加…