55k star,推荐一份关于devops、SRE、运维的手册,简直就算是一份面试大纲了
1 简介
关于devops你需要知道的,这里都有,包括不限于:Linux,Jenkins,AWS,SRE,Prometheus,Docker,Python,Ansible,Git,Kubernetes,Terraform,OpenStack,SQL,NoSQL,Azure,GCP,DNS,Elastic,Network,Virtualization。
这份手册中包含的内容大部分是关于SRE或者devops相关,如果你是运维或者开发, 或者是运维开发, 那么这份手册建议你好好看下,里面包含了目前有2624个练习和问题,包括不限于如下内容
2 获取
github可以访问的直接到如下链接去下载就可以
https://github.com/bregman-arie/devops-exercises
github如果无法访问的话,可以后台直接私信
3 下为部分内容
例如关于prometheus的:
- 什么是 Prometheus?Prometheus 的一些主要特点是什么?
- 在什么情况下可能不适合使用 Prometheus?
- 描述 Prometheus 的架构和组件。
- 您能将 Prometheus 与其他解决方案(例如 InfluxDB)进行比较吗?
- 什么是警报(Alert)?
- 什么是实例(Instance)?什么是作业(Job)?
- Prometheus 支持哪些核心度量类型?
- 什么是导出器(Exporter)?它有什么用途?
- 有哪些 Prometheus 最佳实践?
- 如何在给定时间段内获取总请求数?
- Prometheus 中的 HA 是什么意思?
- 如何将两个度量指标连接在一起?
- 如何编写一个查询,返回标签的值是多少?
如下为关于devops你需要了解的: 更多具体内容可以到原文去查看
devops
通用
什么是 DevOps?
DevOps 的好处是什么?它能帮助我们实现什么?
DevOps 的反模式有哪些?
您如何描述一个成功的 DevOps 工程师或团队?
您的一位团队成员建议在持续交付方面设定一个“每天至少部署 20 次”的目标。您对此有何看法?
工具
在选择工具/技术时您会考虑哪些因素?
您能描述一下在以下领域中选择使用的工具或平台以及如何使用吗?
CI/CD
基础设施创建
配置管理
监控与报警
日志记录
代码审查
代码覆盖率
问题跟踪
容器和容器编排
测试
您的一个团队成员建议用一种新的 CI/CD 平台替代组织目前使用的平台。您会如何回复?
版本控制
什么是版本控制?
什么是提交(commit)?
什么是合并(merge)?
什么是合并冲突(merge conflict)?
您熟悉关于版本控制的哪些最佳实践?
您更喜欢“配置->部署”模型还是“部署->配置”模型?为什么?
解释可变基础设施与不可变基础设施
软件分发
解释“软件分发”是什么意思?
为什么会有多个软件分发?它们可能有什么不同之处?
什么是软件仓库(Software Repository)?
有哪些分发软件的方式?每种方法的优缺点是什么?
您熟悉“大教堂与市集模型”吗?请解释每种模型。
什么是缓存?它是如何工作的?为什么它很重要?
解释无状态与有状态
什么是可靠性(Reliability)?它如何与 DevOps 相关?
“可用性”是什么意思?有哪些方法可以追踪服务的可用性?
为什么目标不是 100% 的可用性?为什么大多数公司或团队将其设为 99%。X?
描述设置某种类型的 Web 服务器(如 Apache、IIS、Tomcat 等)的工作流程。
Web 服务器是如何工作的?
解释“开源”(Open Source)
描述您设计和/或实现的服务/应用/项目的体系结构。
您熟悉哪些测试类型?
您需要定期在不同的操作系统上(如 Ubuntu、RHEL 等)安装一个软件包(除非已存在)。您会如何操作?
什么是混沌工程(Chaos Engineering)?
什么是“基础设施即代码”(Infrastructure as Code)?您熟悉哪种 IAC 的实现?
基础设施即代码有哪些好处?
您如何管理构建产物?
您使用/偏好哪种持续集成解决方案?为什么?
您熟悉或使用过哪些部署策略?
您加入了一个团队,每个人都在开发一个项目,惯例是在本地工作站上运行测试,如果测试通过就将其推送到代码库。目前这个流程存在哪些问题,如何改进?
解释测试驱动开发(TDD)
解释敏捷软件开发
您对以下陈述的看法如何?:“实施或实践 DevOps 会导致更安全的软件”
您知道什么是“事后会议”(post-mortem meeting)吗?您对此有何看法?
什么是配置漂移(configuration drift)?它会带来哪些问题?
如何处理配置漂移?
解释声明性和过
程式风格。您熟悉(或使用)的技术是使用过程式风格还是声明性风格?
您是否有跨项目更改的测试经验?(也称为跨依赖性)
您有为开源项目做贡献的经验吗?请分享一下这个经历。
什么是分布式跟踪(Distributed Tracing)?
GitOps
什么是 GitOps?
应用 GitOps 的一些优势是什么?
当称一个仓库为“GitOps 仓库”时,它意味着什么?
GitOps 的一些实际实施或实践是什么?
您的团队中的两位工程师争论在某个特定应用程序的配置和基础设施相关文件放在哪里。其中一位建议将其放在与应用程序代码库相同的仓库中,另一位建议将其放在一个独立的仓库中。您对此有何看法?
SRE
SRE 与 DevOps 之间有什么区别?
SRE 团队的责任是什么?
什么是错误预算(error budget)?
您如何看待以下陈述:“系统的唯一正确可用性目标是 100%”?
什么是 MTTF(平均故障间隔时间)和 MTTR(平均修复时间)?这些指标如何帮助我们评估?
在 SRE 中,监控的作用是什么?
主要的 SRE KPIs 是什么?
什么是工作(Toil)?
什么是事后总结(postmortem)?
谈谈关于事后总结的核心价值。