Linux面试题——面试指南

举报
知孤云出岫 发表于 2025/02/20 21:40:54 2025/02/20
【摘要】 linux面试指南

面试指南

1. 你平时在公司主要做什么?

  • 解答
    • 负责服务器的日常维护和监控,确保系统稳定运行。
    • 使用自动化工具(如 Ansible、Jenkins)进行配置管理和持续部署。
    • 排查系统故障,优化性能(如 CPU、内存、磁盘、网络)。
    • 管理数据库(如 MySQL、Redis)的备份、恢复和性能优化。
    • 部署和维护负载均衡(如 Nginx、LVS、HAProxy)和高可用架构。
    • 编写脚本(如 Shell、Python)实现自动化任务。
    • 配合开发团队完成项目上线和运维支持。

2. 你们原来公司的网站架构是怎么样的?

  • 解答
    • 前端:使用 Nginx 或 CDN 做静态资源分发。
    • 负载均衡:使用 LVS 或 HAProxy 做四层负载均衡,Nginx 做七层负载均衡。
    • 应用层:部署多台应用服务器(如 Tomcat、Django),通过负载均衡分发请求。
    • 缓存层:使用 Redis 或 Memcached 缓存热点数据。
    • 数据库层:MySQL 主从复制,读写分离,定期备份。
    • 监控与日志:使用 Prometheus、Zabbix 监控系统,ELK 收集和分析日志。
    • 高可用:使用 Keepalived 实现 VIP 高可用,数据库和缓存层实现集群。

3. 你对哪一块比较熟练或者精通?

  • 解答
    • 负载均衡与高可用:熟悉 LVS、Nginx、HAProxy 的配置和优化。
    • 自动化运维:熟练使用 Ansible、Jenkins 实现自动化部署和配置管理。
    • 数据库管理:精通 MySQL 的备份、恢复、性能优化和高可用架构。
    • 脚本编写:熟练编写 Shell 和 Python 脚本,实现自动化任务。
    • 监控与日志:熟悉 Prometheus、Zabbix、ELK 的使用和配置。

4. 介绍一下负载均衡?

  • 解答
    • 定义:负载均衡是将请求分发到多个服务器,以提高系统的并发处理能力和可用性。
    • 类型
      • 四层负载均衡:基于 IP 和端口(如 LVS、HAProxy)。
      • 七层负载均衡:基于应用层协议(如 HTTP、HTTPS,Nginx)。
    • 作用
      • 提高系统性能。
      • 实现高可用。
      • 动态扩展服务器。

5. LVS 内部原理?

  • 解答
    • LVS(Linux Virtual Server)是基于 Linux 内核的四层负载均衡技术。
    • 原理
      • 通过 IPVS(IP Virtual Server)模块实现请求转发。
      • 客户端请求到达 LVS,LVS 根据调度算法将请求转发到后端真实服务器。
    • 特点
      • 高性能,工作在内核态。
      • 支持多种调度算法(如轮询、加权轮询、最小连接)。

6. Nginx、LVS、HAProxy 三个有什么区别?

  • 解答
    • Nginx
      • 七层负载均衡,支持 HTTP、HTTPS。
      • 配置灵活,支持反向代理、缓存、SSL 终端。
    • LVS
      • 四层负载均衡,基于 IP 和端口。
      • 高性能,工作在内核态。
    • HAProxy
      • 支持四层和七层负载均衡。
      • 高可用性和健康检查功能强大。

7. LVS 主要 3 种工作模式原理

  • 解答
    1. NAT 模式
      • LVS 修改请求和响应的 IP 地址。
      • 后端服务器的网关必须指向 LVS。
    2. DR 模式(Direct Routing)
      • LVS 只修改请求的 MAC 地址,响应直接返回客户端。
      • 高性能,后端服务器需要配置 VIP。
    3. TUN 模式(IP Tunneling)
      • 通过 IP 隧道将请求转发到后端服务器。
      • 后端服务器可以跨网络。

8. LVS 工作原理,算法,工作模式

  • 解答
    • 工作原理:通过 IPVS 模块将请求转发到后端服务器。
    • 调度算法
      • 轮询(Round Robin)
      • 加权轮询(Weighted Round Robin)
      • 最小连接(Least Connections)
      • 加权最小连接(Weighted Least Connections)
    • 工作模式:NAT、DR、TUN。

9. MySQL 用的哪个版本,你们的数据库怎么备份,什么时间备份,备份数据量多大

  • 解答
    • 版本:MySQL 5.7 或 8.0。
    • 备份方式
      • 逻辑备份:mysqldump
      • 物理备份:xtrabackup
      • 主从复制:实时同步数据。
    • 备份时间:凌晨 2 点,业务低峰期。
    • 备份数据量:根据业务规模,可能是几十 GB 到几 TB。

10. Memcached 工作原理(内存管理机制)

  • 解答
    • 工作原理:Memcached 是一个分布式内存缓存系统,通过键值对存储数据。
    • 内存管理
      • 使用 Slab Allocation 机制管理内存。
      • 将内存划分为多个 Slab Class,每个 Slab Class 包含多个 Chunk。
      • 数据根据大小分配到合适的 Chunk 中。

11. Nginx 状态码 499 是什么意思

  • 解答
    • 499:客户端主动关闭连接。
    • 可能原因
      • 客户端请求超时。
      • 服务器响应过慢。

12. Nginx 状态码 502 错误可能的原因有哪些

  • 解答
    • 502 Bad Gateway:Nginx 作为反向代理时,后端服务器返回无效响应。
    • 可能原因
      • 后端服务崩溃或未启动。
      • 后端服务响应超时。
      • 网络连接问题。

13. 状态码 200、500、502、304 分别表示什么意思

  • 解答
    • 200:请求成功。
    • 500:服务器内部错误。
    • 502:网关错误,后端服务器返回无效响应。
    • 304:资源未修改,客户端可以使用缓存。

以上是这些面试题的详细解答,结合实际经验回答会更加分!

以下是针对这些面试题的详细解答:


14. 维护网站过程中遇到的问题,处理过什么故障?(状态码:413、504 的意思)

  • 解答
    • 常见问题
      • 服务器负载过高:通过优化代码、增加服务器、使用缓存解决。
      • 数据库性能瓶颈:通过索引优化、读写分离、分库分表解决。
      • 网络故障:通过排查网络配置、使用 CDN 解决。
    • 状态码
      • 413:请求实体过大,通常是因为上传文件超过服务器限制。解决方法:调整 Nginx 的 client_max_body_size 参数。
      • 504:网关超时,通常是因为后端服务器响应超时。解决方法:检查后端服务是否正常,增加超时时间。

15. FTP 主动和被动的区别(指的是服务器端的主动和被动)

  • 解答
    • 主动模式(PORT)
      • 客户端打开一个随机端口,服务器主动连接到客户端的端口。
      • 问题:客户端防火墙可能阻止服务器连接。
    • 被动模式(PASV)
      • 服务器打开一个随机端口,客户端连接到服务器的端口。
      • 更适用于客户端有防火墙的情况。

16. Apache 两种工作模式区别及优化

  • 解答
    • Prefork 模式
      • 多进程模型,每个请求由一个独立的进程处理。
      • 适合稳定性要求高的场景,但内存消耗较大。
    • Worker 模式
      • 多进程多线程模型,每个进程可以处理多个线程。
      • 适合高并发场景,内存消耗较少。
    • 优化
      • 调整 MaxClientsKeepAliveTimeout 等参数。
      • 使用缓存模块(如 mod_cache)和压缩模块(如 mod_deflate)。

17. MySQL 主从原理?如果主库不同步报错了怎么恢复?

  • 解答
    • 主从原理
      • 主库将写操作记录到二进制日志(binlog)。
      • 从库通过 I/O 线程读取主库的 binlog,写入中继日志(relay log)。
      • 从库通过 SQL 线程执行 relay log 中的 SQL 语句。
    • 主从不同步恢复
      1. 检查错误日志,定位问题。
      2. 如果数据不一致,可以重新同步:
        • 停止从库:STOP SLAVE;
        • 备份主库数据并导入从库。
        • 重新配置主从关系:CHANGE MASTER TO ...
        • 启动从库:START SLAVE;

18. 如何备份大数据 MySQL 数据文件,MySQL 都优化哪些?

  • 解答
    • 备份大数据
      • 使用 mysqldump 分表备份。
      • 使用 xtrabackup 进行物理备份。
      • 使用主从复制实时同步数据。
    • 优化
      • 索引优化:添加合适的索引,避免全表扫描。
      • 查询优化:避免复杂查询,使用 EXPLAIN 分析查询计划。
      • 配置优化:调整 innodb_buffer_pool_sizequery_cache_size 等参数。
      • 分库分表:解决单表数据量过大的问题。

19. 你在上家公司用的什么监控软件(Zabbix)?都监控些什么?怎么增加模板?

  • 解答
    • 监控软件:Zabbix。
    • 监控内容
      • 服务器:CPU、内存、磁盘、网络。
      • 服务:Nginx、MySQL、Redis。
      • 日志:错误日志、访问日志。
    • 增加模板
      1. 在 Zabbix Web 界面创建模板。
      2. 添加监控项(Items)、触发器(Triggers)、图形(Graphs)。
      3. 将模板关联到主机。

20. Nagios、Cacti 维护过吗,平时都监控什么?

  • 解答
    • Nagios
      • 监控服务器状态、服务状态、网络状态。
      • 配置告警通知。
    • Cacti
      • 监控网络流量、系统性能。
      • 使用 SNMP 获取数据,生成图形化报表。

21. 一台 Web 服务器应该监控哪些指标

  • 解答
    • 系统指标:CPU、内存、磁盘、网络。
    • 服务指标:Nginx/Apache 的连接数、请求数、响应时间。
    • 日志指标:错误日志、访问日志。
    • 安全指标:登录失败次数、异常访问。

22. Zabbix 监控数据库监控哪些参数

  • 解答
    • MySQL
      • 连接数:Threads_connected
      • 查询性能:Queries_per_second
      • 慢查询:Slow_queries
      • 锁等待:Innodb_row_lock_waits
    • Redis
      • 内存使用:used_memory
      • 连接数:connected_clients
      • 命中率:keyspace_hits

23. Zabbix 有哪些监控项

  • 解答
    • 系统:CPU、内存、磁盘、网络。
    • 服务:Nginx、MySQL、Redis。
    • 日志:错误日志、访问日志。
    • 自定义:业务指标、API 响应时间。

24. 监控一台服务器时,你觉得应该监控服务器的哪些资源

  • 解答
    • CPU 使用率。
    • 内存使用率。
    • 磁盘 I/O 和空间。
    • 网络流量。
    • 服务状态(如 Nginx、MySQL)。

25. 你们监控的时候日志平台会监控吗?

  • 解答
    • 会监控日志平台,使用 ELK(Elasticsearch、Logstash、Kibana)收集和分析日志。
    • 监控错误日志、访问日志,设置告警规则。

26. 你们会监控数据库的性能吗,会定标准吗?有实际遇到过吗,如何解决?

  • 解答
    • 会监控数据库性能,标准包括:
      • 查询响应时间。
      • 连接数。
      • 慢查询数量。
    • 实际案例
      • 问题:慢查询导致数据库性能下降。
      • 解决:优化 SQL 语句,添加索引。

27. 写 Shell 脚本监控 MySQL 主从的思路

  • 解答

    #!/bin/bash
    SLAVE_STATUS=$(mysql -u root -p密码 -e "SHOW SLAVE STATUS\G")
    IO_RUNNING=$(echo "$SLAVE_STATUS" | grep "Slave_IO_Running" | awk '{print $2}')
    SQL_RUNNING=$(echo "$SLAVE_STATUS" | grep "Slave_SQL_Running" | awk '{print $2}')
    
    if [ "$IO_RUNNING" != "Yes" ] || [ "$SQL_RUNNING" != "Yes" ]; then
        echo "MySQL 主从同步异常!"
        # 发送告警邮件或通知
    else
        echo "MySQL 主从同步正常。"
    fi
    

28. 写 Shell 脚本监控所有 IP 是否存活的思路

  • 解答

    #!/bin/bash
    for ip in 192.168.1.{1..254}; do
        ping -c 1 -W 1 $ip &> /dev/null
        if [ $? -eq 0 ]; then
            echo "$ip 存活"
        else
            echo "$ip 不存活"
        fi
    done
    

29. 公司出口带宽?每天网站 PV?UV?

  • 解答
    • 出口带宽:根据公司实际情况回答(如 100Mbps)。
    • PV:页面浏览量(如 100 万/天)。
    • UV:独立访客数(如 10 万/天)。

30. 你们公司的网站出口带宽是多少?网站访问量是多少?是怎么计算的?

  • 解答
    • 出口带宽:根据公司实际情况回答。
    • 访问量:通过 Nginx 日志分析工具(如 AWStats、GoAccess)计算 PV 和 UV。

31. 你们公司是什么架构?都有哪些网上业务?详细说一下?

  • 解答
    • 架构:前端 Nginx + 后端 Tomcat + 数据库 MySQL + 缓存 Redis。
    • 业务:电商平台、在线支付、用户管理系统等。
    • 详细:根据公司实际情况描述业务模块和技术栈。


32. 你们公司备份策略是什么?数据量多大?备份周期?备份工具?备份方式?是否做数据恢复备份演练?

  • 备份策略:采用全量备份+增量备份的混合策略。

  • 数据量:视业务规模而定,TB级或PB级数据存储。

  • 备份周期

    • 业务数据:每天增量备份,每周全量备份。
    • 配置文件与代码仓库:每日自动备份,并实时同步至异地存储。
  • 备份工具

    • 使用 rsyncBaculaVeeam 进行数据备份。
    • 使用 MySQL/MongoDB 内置备份工具(如 mysqldump、XtraBackup)。
  • 备份方式

    • 本地备份(本地磁盘/RAID 保护)。
    • 远程备份(异地机房/云存储,如 AWS S3、阿里云 OSS)。
  • 数据恢复演练

    • 每季度进行一次数据恢复测试,确保备份可用性。
    • 灾备中心支持秒级切换,确保业务连续性。

33. 你在工作中是怎么做日志分析的?例如:访问日志、错误日志等

  • 访问日志分析

    • 使用 ELK(Elasticsearch + Logstash + Kibana)Grafana + Loki 进行实时日志采集和可视化分析。
    • 分析用户访问行为(PV、UV)、请求频率、API 响应时间等,优化系统性能。
  • 错误日志分析

    • 使用 Prometheus + Alertmanager 监控异常情况,结合 Sentry 进行应用级错误日志监控。
    • 统计错误类型(HTTP 500、数据库异常、权限错误等),并做预警。
  • 自动化日志清理

    • 采用 logrotate 定期清理过期日志,减少存储压力。

34. 你们公司日志多久清理一次?

  • Nginx/Apache 访问日志:保留 30 天,过期自动清理。
  • 服务器系统日志(syslog):保留 60-90 天,自动归档存储。
  • 重要应用日志:长时间存储(1 年+),并定期备份到冷存储。

35. 你们公司运维部门有多少人?多少服务器?基本优化项目?
(可根据公司规模调整)

  • 运维团队规模:10~20 人,包括系统运维、安全运维、数据库运维、SRE。

  • 服务器数量:数百台,混合使用 物理服务器+云服务器

  • 基本优化项目

    • 性能优化:Nginx 负载均衡、Redis 缓存优化、数据库索引优化。
    • 自动化运维:使用 Ansible/SaltStack 进行批量管理,Kubernetes 容器编排。
    • 安全防护:WAF 防火墙、DDoS 防护、漏洞扫描。

36. 你在上家公司针对防攻击、扩容、容灾等问题是怎么制定和优化解决方案的?

  • 防攻击

    • 部署 WAF(Web 应用防火墙),拦截 SQL 注入、XSS 攻击。
    • 使用 Fail2ban 限制异常 IP 访问。
    • 配置 DDoS 防护(CDN+流量清洗)。
  • 扩容方案

    • 采用 微服务架构,通过 Kubernetes 动态扩展实例。
    • 结合 Redis/Memcached 缓存,减少数据库压力。
    • 使用 Nginx+Consul 进行动态服务发现和负载均衡。
  • 容灾策略

    • 业务层面采用 主从+分片+读写分离 数据架构。
    • 服务器跨机房部署,支持异地灾备,RTO<5 分钟。

37. 你们公司如何自动化代码上线?

  • 采用

    CI/CD(Jenkins/GitLab CI/Github Actions)

    自动化部署流程:

    1. 代码提交:开发人员 push 代码到 Git 仓库。
    2. 自动构建:Jenkins/GitLab CI 触发构建,执行单元测试。
    3. 镜像发布:构建成功后,Docker 镜像推送到私有仓库。
    4. 自动部署:Kubernetes 通过 Helm 自动更新容器。
    5. 灰度发布:采用 Canary 发布,先在小部分用户测试,确保稳定后全量发布。

38. 你们公司都有哪些应用集群?

  • Web 服务器集群(Nginx/Apache + Load Balancer)
  • 数据库集群(MySQL 主从复制 + 读写分离)
  • 缓存集群(Redis 哨兵模式 / Memcached)
  • 消息队列集群(Kafka/RabbitMQ)
  • Kubernetes 容器集群(微服务架构)

39. 你们公司用的是物理服务器还是云服务?

  • 混合架构:
    • 核心业务 运行在 物理服务器,确保高性能和数据安全。
    • 弹性业务 部署在 云服务(阿里云、AWS),灵活扩展。
    • 数据库 采用 云数据库(RDS)+ 物理机主库 的方式,兼顾稳定性与性能。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。