2024运维面试题+答案

A故野. 2024-07-08 08:37:01 阅读 90

1.在服务器运行过程中为什么需要防火墙

1.防火墙可以监控网络流量,并根据规则来允许或阻止数据包的传输,从而保护服务器免受恶意攻击,未经授权的访问或其他网络威胁

2.防火墙可以限制对服务器的访问,只允许经过授权的用户或设备连接到特定的服务或端口,避免未授权的用户访问服务器执行潜在的恶意操作。

3.防火墙可以识别和拦截恶意代码,病毒或者其他恶意软件的网络流量,对服务器数据和应用程序有一定的保护性

4.可以通过分析防火墙日志,管理员可以发现潜在的安全问题。

2.如果遇到磁盘满了怎么办?怎么查看?

磁盘满了

1.可以删除不必要的文件,清理日志文件,移动数据到其他存储设备等方法来释放磁盘空间

2.可以通过清理旧的日志文件或限制日志文件大小来减少磁盘空间的使用。

3.删除不需要的临时文件,解压不需要用但不能删除的文件。

4.增加磁盘空间,添加新的硬盘或扩展现有的磁盘

怎么查看

首先可以通过linux命令df -h来查看磁盘空间的使用情况。 du -h命令来查看文件或目录的大小。

3.如何查看服务器的端口占用情况?如果端口被占用怎么解决?

端口占用

可以通过命令sudo ss -tuln,来查看服务器上的端口占用情况

被占用如何解决

1.首先找到被占用的端口号,可以通过命令sudo ss -tulnp | grep :9002查看

通过命令sudo kill PID,结束进程。[PID:要结束进程的进程ID] 或者使用命令

sudo kill -9 强制杀死被占用的进程。

2.如果端口被某个应用程序占用,您可以尝试修改该应用程序的配置文件,将其使用的端口修改为其他可用端口。然后重新启动应用程序以使更改生效。

3.在配置应用程序时,应确保所选用的端口未被其他应用程序使用,以避免端口冲突问题的发生。可以通过查看已经占用的端口列表来避免选择已被占用的端口。

4.如何将/sdb 分区挂载到/data1目录下 ,并实现 开启自动挂载?简述命令

1.首先确定要挂载的 /sdb 分区的详细信息,例如分区类型和UUID。

2.首先在/data1目录下创建一个挂载点

3.将分区信息添加到/etc/fstab文件中,以便系统在启动是自动挂载该分区.

命令:

1.确定分区信息: sudo blkid /dev/sdb

2.创建挂载点:sudo mkdir /data1

3.使用文本编辑器打开文件:sudo nano /etc/fstab

4.在文件末尾添加一行,以便挂载/sdb分区到/data1目录:

UUID=<sdb_UUID> /data1 <file_system_type> defaults 0 2

5.如何杀掉linux系统中所有的带“nginx”字段的进程,请给出详细命令

1.首先通过命令*pgrep -1 nginx* 查看到所有带"nginx"字段的进程

2.通过命令*sudo pkill -f nginx* 杀死进程,可以确保不会误杀其他重要的进程。

6.如何修改用户组和用户的权限请简述chmod 命令

chmod

1.数字表达法:读(4)、写(2)、执行(1),三个数字组合。

2.符号表示法:使用字母u(用户/所有者)、g(组)、o(其他)、a(所有人)和符号+(添加权限)、-(移除权限)、=(设置精确权限),后面跟着r、w、x。

7.简述一下你在运维工作当中遇到的问题?经常做一些什么运维工作?

自我发挥

8.聊聊你运维的工作 你在运维工作中使用的什么批量管理工具?

运维批量管理工具

docker

9.能说一下你上一家公司的架构吗?你主要的工作职责是什么?获得了什么成就或者问题吗?
10.你在项目当中主要负责什么?你在项目中遇到什么问题?你是如何解决的?

自行解决

11.在项目中你是如何做持续集成和持续部署的?

1.版本控制系统:使用像Git这样的版本控制系统来管理代码库。

2.构建工具:使用像Maven、Gradle或Ant这样的构建工具来管理项目的依赖项并构建项目。

3.持续集成工具:选择一个适合项目的持续集成工具,如Jenkins、Travis CI、GitLab CI/CD等。这些工具可以与版本控制系统集成,每当代码有更新时自动触发构建过程。

4.自动化测试:编写自动化测试用例,包括单元测试、集成测试和端到端测试等,确保代码的质量和稳定性。

5.持续集成流程:配置持续集成工具,定义构建流程,包括代码编译、运行测试、代码质量检查、生成文档等步骤。

6.持续部署流程:如果项目需要自动化部署,可以配置持续部署流程,将通过持续集成构建的可部署软件包自动部署到测试环境、预发布环境或生产环境中。

7.监控与反馈:配置监控系统,监控部署过程和应用程序运行状态,及时发现并修复问题。同时,持续集成工具通常会提供构建和部署的日志和报告,供团队查看和分析。

8.持续改进:根据持续集成和持续部署过程中的反馈和数据,不断优化流程和工具配置,提高项目的交付速度和质量

12.MySQL中索引的作用?是否需要经常维护?创建非常多的索引会有什么问题?

索引的作用

1.提高数据检索效率:索引使得数据库可以快速定位到表中的特定信息,而不需要扫描整个表。这对于拥有大量数据的表来说尤其重要。

2.加速排序和分组操作:索引可以显著提高带有ORDER BY或GROUP BY子句的查询的性能,因为索引可以减少数据库排序操作的需要。

3.支持表的唯一性约束:通过在表的列上创建唯一索引,可以保证该列的每一行数据都是唯一的,从而支持唯一性约束。

4.优化查询计划:数据库使用索引来优化查询操作,选择最有效的查询路径。有时,即使查询条件中没有直接使用索引,优化器也能通过索引来改善查询的执行计划。

5.加速表和表之间的连接:对于那些经常需要与其他表进行连接操作的表,索引可以加快连接查询的速度,尤其是在执行复杂的JOIN操作时。

是否需要经常维护?

需要经常维护,以保持数据库的高性能和稳定性。

常见的维护操作包括索引重建、优化和重新分析。

创建非常多的索引会有什么问题?

1.存储空间消耗:每个索引都需要占用额外的存储空间,如果创建了过多的索引,会增加数据库的存储成本。

2.写操作性能下降:对表进行插入、更新和删除操作时,MySQL需要更新索引,如果有大量的索引存在,这些操作的性能会下降。

3.查询性能下降:虽然索引可以加速查询操作,但是如果有太多的索引,也会增加查询优化器的选择成本,可能导致查询性能下降。

4.维护成本增加:随着索引数量的增加,索引的维护成本也会增加,包括索引的重建、优化和重新分析等操作,会增加数据库管理员的工作负担。

13.什么是SQL 连接查询?都有哪些连接查询

SQL连接查询是指通过在多个表之间建立连接,从而获取相关联的数据的查询操作。在关系型数据库中,通常存在多个表,这些表之间可能存在关联关系,连接查询就是通过这些关联关系将多个表的数据联合起来进行查询。

连接查询的方式

1.内连接:返回满足连接条件的行,即两个表中的匹配行

语法:

SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;

2.外连接,又分为左外连接和右外连接,

分别返回左表中所有行和右表中所有行,以及满足连接条件的行。如果某些行在另一个表中没有匹配,则会填充NULL值。

左外连接:SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.column = table2.column;

右外连接:SELECT * FROM table1 RIGHT OUTER JOIN table2 ON table1.column = table2.column;

3.全连接:全连接返回两个表中的所有行,无论是否满足连接条件。如果某些行在另一个表中没有匹配,则会填充NULL值。

语法:SELECT * FROM table1 FULL OUTER JOIN table2 ON table1.column = table2.column;

4.交叉连接:交叉连接返回两个表的笛卡尔积,即第一个表的每一行都会与第二个表的每一行进行组合。通常不需要指定连接条件。

语法:SELECT * FROM table1 CROSS JOIN table2;

14.Nginx 的作用?Nginx 的负载均衡策略都有哪些?Nginx 如何做反向代理?

1.Web服务器: Nginx可以作为静态内容的Web服务器,用于提供网站和Web应用程序的静态文件(如HTML、CSS、JavaScript等)。

2.反向代理服务器: Nginx可以作为反向代理服务器,将客户端请求转发到多个后端服务器,并将后端服务器的响应返回给客户端。

3.负载均衡器: Nginx可以通过将请求分发到多个后端服务器来实现负载均衡,以确保各个服务器的负载相对均衡,提高整体性能和可靠性。

4.HTTP缓存: Nginx可以缓存经常请求的静态内容,减轻后端服务器的负载,并加快响应速度。

5.安全加固: Nginx提供了许多安全特性,如防止DDoS攻击、防止SQL注入攻击、SSL/TLS终端加密等。

负载均衡

1.轮询(Round Robin): 默认的负载均衡策略,按顺序将请求分发给后端服务器,每个请求依次选择下一个服务器。

2.IP哈希(IP Hash): 根据客户端的IP地址将请求分发到特定的后端服务器,这样相同IP的客户端每次请求都会被分发到同一个后端服务器,适用于需要保持会话一致性的场景。

3.最少连接(Least Connections): 将请求发送到当前连接数最少的后端服务器,以平衡服务器的负载。

4.权重(Weighted Load Balancing): 根据后端服务器的配置权重进行请求分发,分配更多的请求到权重较高的服务器上。

5.动态权重(Dynamic Weight): 根据后端服务器的负载情况动态调整权重,以实现更均衡的负载分配。

反向代理

1.配置后端服务器:首先需要配置Nginx以知道哪些后端服务器可用。这通常通过在配置文件中定义upstream块来完成,指定后端服务器的地址和端口

2.配置反向代理:配置Nginx将客户端的请求转发给后端服务器。这通常在服务器块或特定的location块中完成

15.Docker 常用指令是什么?如何管理镜像

docker run: 运行容器。示例:docker run image_name

docker build: 构建镜像。示例:docker build -t image_name .

docker ps: 列出运行中的容器。示例:docker ps

docker images: 列出本地镜像。示例:docker images

docker pull: 从 Docker Hub 或其他注册表拉取镜像。示例:docker pull image_name

docker push: 将本地镜像推送到注册表。示例:docker push image_name

docker stop: 停止容器。示例:docker stop container_id

docker rm: 删除容器。示例:docker rm container_id

docker rmi: 删除镜像。示例:docker rmi image_name

docker exec: 在运行中的容器中执行命令。示例:docker exec -it container_id bashdocker logs: 查看容器日志。示例:docker logs container_id

管理镜像

1.使用 docker images 命令列出本地镜像

2.使用docker pull 命令从Docker Hub 或其他注册表拉取镜像到本地

3.使用docker build 命令根据Dockerfile构建自定义镜像

4.使用docker push 命令将本地镜像推送到注册表,例如Docker Hub

5。使用docker rmi 命令删除本地镜像

例如:docker rmi image_name

6.使用合适的标签管理镜像的不同版本和变体

7.定期清理不再使用的镜像,以节省磁盘空间

可以使用docker image prune 命令来清理未被使用的镜像

8.可以使用docker save 和 docker load 命令来备份和恢复镜像

9.定期更新镜像以获取最新的安全更新



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。