Skip to content

云原生平台/架构师 - 面试帮助手册

基于 JD:构建基于 K8s 的应用变更运维平台、云原生 DevOps 体系、CI/CD 与 AIOps 平台、CRD/Operator/Controller 开发、复杂应用编排与交付。


一、岗位核心能力画像

维度重点
开发能力精通 Golang/Java,熟悉设计模式,具备大型系统架构设计能力
云原生深度精通 Kubernetes/Docker,能开发 CRD、Operator、Controller
DevOps 体系CI/CD 流水线、GitOps、Argo CD/Rollouts、Jenkins/GitLab/SonarQube
前沿技术Knative、Tekton、OAM、KubeVela、AIOps、可观测性
产品思维以产品化视角解决用户痛点,提升研发效率与交付质量

二、高频面试问题与回答思路

2.1 Golang/Java 开发与架构设计

Q1:你最熟悉 Golang 还是 Java?各自优缺点?

  • Golang:高并发(Goroutine)、编译快、部署简单、云原生生态主流
  • Java:生态成熟、框架丰富、适合复杂业务系统
  • 云原生领域 Golang 更主流(K8s、Docker、Etcd、Prometheus 均用 Go 实现)

Q2:常见设计模式及在云原生中的应用?

  • 控制器模式:K8s Controller/Operator 核心
  • 观察者模式:Informer 机制监听资源变化
  • 工厂模式、策略模式、模板方法:流水线任务插件化
  • 责任链模式:Webhook 拦截链
  • 单例/依赖注入:服务组件管理

Q3:如何设计一个高可用、可扩展的大型系统?

  • 无状态化、水平扩展、负载均衡
  • 服务拆分与微服务/模块化设计
  • 数据一致性策略(最终一致、分布式事务)
  • 限流、熔断、降级、超时、重试
  • 可观测性、灰度发布、自动化运维

Q4:Go 的并发模型?Goroutine 泄漏如何排查?

  • CSP 模型:Goroutine + Channel
  • 泄漏原因:未关闭的 Channel、死锁、未退出的 Goroutine
  • 排查:go tool pprof goroutine、Goroutine 数量监控、runtime.NumGoroutine()

2.2 Kubernetes 深度开发

Q5:K8s 的架构与核心组件?

  • Master:kube-apiserver、etcd、kube-scheduler、kube-controller-manager
  • Node:kubelet、kube-proxy、Container Runtime
  • Addons:CNI、CSI、CoreDNS、Ingress Controller

Q6:什么是 CRD、Operator、Controller?它们的关系?

  • CRD:自定义资源定义,扩展 K8s API
  • Controller:监听资源变化,实现调谐(Reconcile)逻辑
  • Operator:基于 CRD + Controller,封装特定应用运维知识(如 MySQL、Kafka Operator)
  • 关系:CRD 是数据模型,Controller 是控制逻辑,Operator 是完整解决方案

Q7:Informer 机制原理?

  • List-Watch:首次 List 全量数据,后续 Watch 增量变化
  • Reflector → DeltaFIFO → Indexer → Local Store
  • WorkQueue 处理事件,避免阻塞
  • 保证最终一致性

Q8:Controller 的 Reconcile 流程?

  1. 获取目标资源
  2. 对比期望状态与实际状态
  3. 执行差异动作(创建/更新/删除)
  4. 返回并重新入队(必要时)
  5. 处理错误与重试(指数退避)

Q9:如何保证 Controller 的高可用?

  • 多副本部署 + Leader Election
  • 优雅关闭与资源清理
  • 幂等性设计
  • 合理的 Requeue 策略
  • 资源事件去重与限流

Q10:Webhook 在 K8s 中的应用?

  • Admission Webhook:Mutating(修改请求)/ Validating(校验请求)
  • 用途:自动注入 Sidecar、镜像安全校验、资源配额检查、命名规范校验
  • 注意:高可用部署、TLS 证书管理、失败策略配置

Q11:K8s Scheduler 调度流程?如何自定义调度器?

  • 调度流程:Predicates(过滤)→ Priorities(打分)→ Bind
  • 自定义调度器:实现 Scheduler Framework 插件,或独立调度器
  • 使用 schedulerName 指定 Pod 由自定义调度器调度

2.3 DevOps 与 CI/CD

Q12:如何设计企业级 CI/CD 流水线?

  • 代码提交 → 代码扫描 → 单元测试 → 构建镜像 → 安全扫描 → 推送仓库 → 部署到测试/预发/生产
  • 关键能力:并行化、缓存、制品管理、环境隔离、灰度发布、回滚

Q13:Jenkins vs GitLab CI vs Tekton?

工具特点
Jenkins生态成熟、插件丰富、传统但较重
GitLab CI与 GitLab 集成好、YAML 配置简单
TektonK8s 原生、声明式、可组合、适合构建 DevOps 平台底座

Q14:什么是 GitOps?Argo CD 的核心原理?

  • GitOps:Git 作为唯一可信源,声明式基础设施与应用配置
  • Argo CD:监听 Git 仓库,自动/手动同步到 K8s 集群
  • 核心概念:Application、AppProject、Repo、Cluster、Sync Policy
  • 支持回滚、健康检查、多集群管理

Q15:Argo Rollouts 如何实现渐进式交付?

  • 支持 Canary、Blue-Green、Analysis
  • 通过 AnalysisRun 进行自动/手动验收
  • 与 Ingress/Service Mesh 集成实现流量分割
  • 自动回滚或推进

Q16:如何保障 CI/CD 的安全?

  • 最小权限 RBAC
  • 镜像签名与 SBOM
  • Secrets 管理(Vault、External Secrets Operator)
  • 代码扫描(SAST/DAST/依赖漏洞)
  • 流水线执行隔离、审计日志

2.4 云原生应用编排与交付

Q17:OAM 与 KubeVela 解决了什么问题?

  • OAM:开放应用模型,将应用定义与基础设施解耦
  • KubeVela:基于 OAM 的应用交付平台,抽象 Component、Trait、Policy、Workflow
  • 解决复杂应用编排、多环境交付、平台化封装问题

Q18:Knative 的核心能力与适用场景?

  • 能力:Serverless 容器、自动扩缩容(到 0)、事件驱动、流量管理
  • 组件:Serving、Eventing
  • 适用:函数计算、事件驱动、自动弹性、按量付费场景

Q19:复杂应用编排与交付的痛点与挑战?

  • 多组件依赖管理
  • 多环境(开发/测试/预发/生产)配置差异
  • 多集群/多租户部署
  • 回滚与灰度策略
  • 配置与密钥管理
  • 成本与资源利用率优化

2.5 AIOps 与智能化运维

Q20:AIOps 在你工作中的应用场景?

  • 异常检测:指标异常、日志异常、调用链异常
  • 根因分析:基于拓扑与事件关联定位故障
  • 容量预测:基于历史数据预测资源需求
  • 智能告警:降噪、聚类、关联
  • 自动化修复:故障自愈、弹性伸缩

Q21:常用的人工智能算法有哪些?

  • 时序预测:ARIMA、Prophet、LSTM
  • 异常检测:孤立森林、LOF、变分自编码器、3-Sigma
  • 聚类:K-Means、DBSCAN
  • 分类/回归:随机森林、XGBoost
  • 根因分析:因果推断、图神经网络

Q22:如何落地 AIOps 项目?

  • 明确场景与价值,从单点突破
  • 数据治理:统一指标、日志、 trace 数据
  • 特征工程与模型训练
  • 与现有运维平台集成
  • 持续迭代与效果评估

2.6 可观测性与稳定性

Q23:云原生可观测性三大支柱?

  • Metrics(指标):Prometheus + Grafana
  • Logging(日志):Loki / ELK
  • Tracing(链路):Jaeger / SkyWalking / Tempo
  • 扩展:Profiling、混沌工程

Q24:如何提升系统稳定性?

  • SLO/SLI/Error Budget 体系
  • 容量规划与压测
  • 限流、熔断、降级、重试
  • 多活与灾备
  • 混沌工程演练
  • On-call 与故障复盘机制

2.7 产品化思维与社区贡献

Q25:如何以产品化视角做平台?

  • 用户调研,明确目标用户与痛点
  • 设计低门槛、高可用的自助服务能力
  • 文档、SDK、CLI、Web UI 一体化
  • 数据驱动,持续收集反馈
  • 平衡通用性与业务定制化

Q26:你参与过哪些开源项目?贡献过什么?

  • 准备 1-2 个具体项目
  • 说明贡献内容:Bug fix、Feature、Documentation、Issue 回复
  • 展示代码链接或 PR 编号

三、项目经验准备建议

项目一:云原生 DevOps 平台建设

  • 背景:公司业务团队多,研发效率低,变更风险高
  • 目标:构建基于 K8s 的应用变更运维平台
  • 方案
    • 基于 Tekton/Argo 构建 CI/CD 底座
    • 自研应用中心,封装 Deployment/Service/Ingress/ConfigMap 等
    • 集成 Argo CD 实现 GitOps
    • 支持灰度发布、回滚、环境管理
  • 成果:发布效率提升 X%,变更失败率下降 Y%

项目二:K8s Operator 开发

  • 背景:中间件(如 Redis/MySQL/Kafka)在 K8s 上运维复杂
  • 目标:实现中间件生命周期自动化管理
  • 方案
    • 设计 CRD 定义中间件集群规格
    • 开发 Operator 实现创建、扩缩容、备份、恢复、监控
    • 使用 Finalizer 处理资源清理
    • 集成 Prometheus Exporter
  • 成果:运维效率提升,故障恢复时间缩短

项目三:AIOps 智能告警平台

  • 背景:告警噪音大,故障定位慢
  • 目标:构建智能告警与根因分析平台
  • 方案
    • 统一采集指标、日志、事件
    • 使用时序异常检测与日志聚类算法
    • 构建拓扑关联,实现告警收敛与根因推荐
  • 成果:告警量减少 X%,MTTR 降低 Y%

四、面试准备清单

4.1 技术复习

  • [ ] Golang/Java 语言特性、并发、内存模型、GC
  • [ ] 设计模式与大型系统架构
  • [ ] K8s 核心原理、API 机制、Informer、Controller 开发
  • [ ] CRD/Operator 开发实战(kubebuilder/operator-sdk)
  • [ ] CI/CD 设计与 DevOps 工具链
  • [ ] Argo CD/Rollouts、Tekton、Jenkins、GitLab CI
  • [ ] Knative、OAM/KubeVela
  • [ ] AIOps 常见算法与落地场景
  • [ ] 可观测性与 SRE 稳定性建设

4.2 项目复盘

  • [ ] 准备一个 DevOps/应用交付平台项目
  • [ ] 准备一个 K8s Operator/Controller 开发项目
  • [ ] 准备一个 AIOps 或自动化运维项目
  • [ ] 用 STAR 法则梳理:背景、任务、行动、结果

4.3 行为面试

  • 如何说服业务团队使用你建设的平台?
  • 在技术选型和社区趋势之间如何取舍?
  • 描述一次推动公司研发模式升级的经历。
  • 如何平衡平台通用性与业务定制化需求?

五、推荐学习资源

类型资源
K8s 开发Kubernetes 官方文档、client-go、kubebuilder、operator-sdk
DevOps《Continuous Delivery》、Argo 官方文档、Tekton 文档
云原生架构《Kubernetes 编程》、《云原生应用架构实践》
AIOps时序分析、异常检测论文与开源项目(如 NAB、AIOps 挑战赛)
社区CNCF 项目、KubeCon 演讲、GitHub 主流 Operator 源码

六、简历亮点建议

  1. 量化平台价值:服务团队数、应用数、发布频率、故障率、MTTR
  2. 突出架构能力:参与大型系统设计与核心模块开发
  3. 强调云原生深度:CRD/Operator/Controller 实际开发经验
  4. 展示 DevOps 体系:CI/CD、GitOps、应用交付完整链路
  5. 提及前沿技术:Argo、Tekton、KubeVela、Knative、AIOps
  6. 社区贡献:开源项目 PR、Issue、演讲、博客

祝你面试顺利,拿下 Offer!