运维工程师笔试题目

Posted on Feb 15, 2021

运维工程师笔试题目

一、简答题(共50分)

  1. 列出常见的 Linux 发行版及其包管理工具。
  2. 列出常见的容器编排软件。
  3. 列出常见的开源存储系统。
  4. 列出常见的监控工具。
  5. 列出常见的持续集成工具。
  6. 常用的远程登录 Linux 服务器的工具有哪些?
  7. 你用过或者知道那些虚拟机管理软件?
  8. 查看服务器的基本信息:a)逻辑 cpu 个数;b)内存大小;c)品牌型号;d)内核版本;e)发行版名称版本号;
  9. Every command fails with command not found. How to trace the source of the error and resolve it?
  10. 找出当前目录下大于 1G 的日志文件并删除。
  11. 如何查看服务器的 RAID 级别?如何查看服务器的物理硬盘数量和容量?
  12. Linux 系统新增了一块硬盘(/dev/sdb),请将其格式化为 xfs 系统并挂载到 /data。
  13. 假设 /dev/sdb1 挂载到 /data1 上,当 /dev/sdb1 故障时,/data1 目录可能会成为根目录(/)下的一个普通文件夹,此时数据继续写入会导致根目录被占满,如何避免这种情况。
  14. 服务器重启之后 ping 不通了,有可能是什么原因?如何解决?
  15. 使用 Vim 完成以下任务:a)新建,更新,保存文件;b)查找替换关键词;c)复制行,删除行,跳转行。
  16. 如何设置 nameserver?某个业务的域名即将迁移到新的 IP,如何事先测试域名用新 IP 是否正常工作?
  17. 请列出常见的应用层协议及其默认端口。
  18. 如何检测远程主机的 80 端口是否开放?
  19. 找出 9099 端口被什么进程占用。
  20. 常见 HTTP 状态码及其含义。
  21. 域名解析有哪些类型?有什么工具可以检测域名解析是否生效?什么是泛解析?举例说明使用 CNAME 解析有什么好处?
  22. Kubernetes 是一个流行的容器编排工具,其网络模型的基本原则是为每个 Pod(容器组,Kubernetes 管理容器的最小单位)分配一个唯一的 IP 地址,集群中所有 Pod 能够通过 Pod IP 直接互相访问。现需要规划一个 Kubernetes 集群,每个节点分配一个掩码为 /24 的 IP 段,要求至少满足 25400 个 Pod 的需求,并且不能使用宿主机的 10.0.0.0/8 网段,请给出最小网段规划。请使用命令行统计各 TCP 状态的数量。How to check default route and routing table?
  23. docker 镜像仓库允许提交重复的 tag,为了防止提交了重复的 tag,计划使用代码库(git)的 tag 作为 docker 镜像的 tag, 如果代码库没有 tag,则用 revision id 做为镜像 tag,比如,一个镜像的 tag 可能是 v1.3-738-g1211a2e。请写一个Makefile 实现此需求。

二、工程题(40分)

  1. 假设服务器 root 密码管理存在以下问题:a) 所有服务器使用少数几个 root 密码;b) root 密码基本不变更;c) root 密码未加密存储,并且会被有些同事直接记录到 wiki 上;d) 有同事直接使用 root 账号登录,难以审计。请设计一个 root 密码管理方案,实现 root 密码的随机生成,加密存储及限制查询和使用。(提示:可以考虑使用 gpg 加密 root 密码)1. 请简单描述搭建一个有独立域名,支持 HTTPS 的网站的流程。
  2. 假如客户反馈调取后端接口时特别慢,你会如何排查?
  3. 有一个程序,功能是发起 http 请求探测 url 是否存活,运行一段时间后会报 cannot assign requested address错误,查看监控发现运行该程序的服务器有大量 close-wait 状态,可能是什么原因?如何解决?
  4. Kubernetes 中,Ingress Nginx 对容器网络有很强的依赖性,如果容器网络中断,Nginx Upstream 将全部超时,影响范围很大。已知在服务器重启时,Calico(Kubernetes 网络插件)需要几分钟的时间来恢复容器网络,但是 Ingress Pod 却可以在数十秒内启动。因此有必要在机器重启时检测容器网络是否正常,不正常则应禁止该节点处理流量。现计划在开机时执行一个 Shell 脚本来检测容器网络,检测不通过则使用 iptables 关闭 80,443 端口,直到容器网络正常之后再删除相应 iptables 规则。请编写该脚本并说明部署方式。已知满足以下 2 条,则认为容器网络正常:a)ip route |grep bird |wc -l 应 大 于 1;b)dig @169.169.0.2 +time=1 kubernetes.default.svc.cluster.local 应正常响应。此方案只解决了 Ingress 问题,对于业务容器,如依赖 CoreDNS,则仍然会受影响。如果你有更好的方案,可以直接回答你的方案。(提示:此问题涉及的三方:业务 Pod,网络插件,Kubernetes,谁是问题根源?最好由谁来解决此问题?)

三、职业规划(10分)

  1. 请谈谈你对运维工程师这个职位的认识?为这个职位做过什么准备?你认为你擅长的哪些知识、技能或能力能够帮助你胜 任此职位?