面试官:你最近一个项目是某食品数字化零售项目,你在其中用到了哪些技术栈?做了哪些工作?

:这个项目是食品行业线上线下一体化零售平台,我主要负责后端服务、容器化部署、CI/CD 与运维保障这块。

技术栈主要有:

我主要做的工作:

  1. 负责微服务的容器化改造,把各个业务模块打包成 Docker 镜像,统一管理。
  2. 在 K8s 上搭建和维护部署环境,包括 Pod、Deployment、Service、ConfigMap 这些资源。
  3. 搭建 CI/CD 流水线,用 Jenkins 实现代码提交后自动构建、自动部署,提升发布效率。
  4. 服务监控与日志收集,保证线上稳定,出问题能快速定位。
  5. 配合业务做高可用、弹性扩缩容,应对促销、高峰期流量,保证系统不崩。

整体就是从开发部署到运行维护一整套云原生落地的工作。

面试官:请详细说说你使用 Docker/K8s 的实操经验。如果证券交易系统的 Pod 频繁重启,你会从哪些维度排查问题?按排查顺序说明。

:好的面试官。我有实际项目中 Docker 镜像构建、K8s 集群部署、服务发布、问题排查的经验,包括 Deployment、Service、ConfigMap、Secret、探针、HPA 这些都用过。
证券交易系统对稳定性要求极高,Pod 频繁重启是严重问题,我会按从简单到深入、从日志到配置、从应用到资源的顺序排查:

  1. 先看 Pod 状态与重启次数
    kubectl get pod 看是否是 CrashLoopBackOff,看重启次数,确认是启动失败还是运行中崩溃。

  2. 查看容器日志,定位业务报错
    直接 kubectl logs <pod> [-c 容器],看启动时是否报错:

    • 证券系统常见:连接行情库/交易库失败、配置错误、端口被占、权限问题、依赖服务没起来。
  3. describe Pod,看事件信息
    kubectl describe pod <pod> 重点看 Events:

    • 是否 OOM Killed(内存溢出被系统杀掉)
    • 镜像拉取失败
    • 探针失败(livenessProbe 重启)
    • 节点资源不足、磁盘满、节点异常
  4. 检查健康探针配置
    证券交易系统启动慢很常见:

    • 启动探针没配,导致存活探针提前检查,直接重启
    • 就绪/存活探针超时时间太短、检查太频繁
    • 检查路径/端口错误,导致误判失败
  5. 检查资源限制 request/limit
    交易系统计算量大、内存占用高:

    • memory limit 太小,触发 OOM
    • CPU 限制过低,导致应用响应慢、探针超时
      kubectl top pod 确认真实资源使用。
  6. 检查容器启动命令与退出逻辑

    • 主进程是否是后台运行(导致容器 1 号进程退出,Pod 直接重启)
    • 脚本异常、参数错误、配置文件不存在
    • 证券相关:证书、密钥、配置中心权限问题
  7. 检查依赖服务与网络
    交易系统强依赖:数据库、消息队列、撮合引擎、第三方接口:

    • 网络不通、DNS 解析失败
    • 中间件连接池满、超时、认证失败
    • 慢查询、死锁导致进程卡死被探针重启
  8. 检查节点与集群状态

    • 节点内存/CPU/磁盘满
    • kubelet 异常、docker/containerd 异常
    • 节点污点、驱逐策略触发
    • 存储挂载失败、权限问题
  9. 最后检查重启策略与上层控制器

    • Deployment 配置错误、滚动更新异常
    • livenessProbe 失败阈值太小
    • 有问题的 Sidecar 容器带崩整个 Pod

面试官:思路很清晰,顺序也很标准。

:总结一下:先看状态 → 看日志 → 看事件 → 查探针 → 查资源 → 查启动命令 → 查依赖 → 查节点 → 查控制器
证券交易系统最常见的就是:OOM、探针配置不合理、启动慢、数据库/中间件连接失败这四类。

面试官:如果客户现场 K8s 集群节点故障,需要快速恢复服务,你会怎么做?有没有做过集群容灾、备份恢复的实操?

:有的面试官,我处理过生产环境节点宕机、集群异常的场景,也做过 etcd 备份恢复、跨节点容灾的实操。我先说节点故障快速恢复的步骤,再讲容灾与备份的实际经验。


面试官:好,先讲节点挂了,怎么快速恢复服务?


我会按先恢复业务、再排查根因的思路来处理,顺序非常明确:

  1. 先确认故障影响范围
    先看是单节点挂了,还是多个节点。
    kubectl get nodes 看节点状态是 NotReady 还是 Unknown。

  2. 立即把故障节点隔离,禁止新 Pod 调度
    给节点打污点,不让新 Pod 再调度上去:
    kubectl cordon <节点名>

  3. 强制驱逐节点上的业务 Pod,让它们漂移到正常节点
    用驱逐命令,让 Deployment、StatefulSet 自动在其他正常节点重建 Pod:
    kubectl drain <节点名> --force --ignore-daemonsets
    这一步是最快恢复业务的关键。

  4. 观察服务是否恢复正常
    kubectl get pod -o wide
    看 Pod 是否在其他节点启动、变成 Running。
    证券、零售这类核心业务,只要副本数足够,一般1~3分钟内就能恢复

  5. 最后再排查节点为什么挂
    去节点上看:

    • kubelet 是否挂了
    • 磁盘、内存、CPU 是否打满
    • 容器运行时(containerd/docker)是否异常
    • 网络是否不通

面试官:那你有没有做过 K8s 集群备份、容灾、恢复的实操?


有的,我做过etcd 备份恢复集群级容灾方案落地:

  1. etcd 定期备份
    K8s 所有数据都在 etcd,我在生产环境配置了定时备份脚本
    etcdctl snapshot save
    每天自动备份,保留多份,上传到文件服务器/对象存储。

  2. 集群崩溃后的恢复实操
    我做过真实演练:

    • 停旧集群
    • 在新环境恢复 etcd 快照
    • 重启 apiserver、controller-manager
    • 验证所有节点、Pod、Service 全部恢复
      整个过程可控,数据不丢。
  3. 实际容灾方案

    • 多节点高可用:控制面 3 节点 etcd 集群
    • 业务多副本:replicas: 3,跨节点部署
    • 节点反亲和,避免同一服务全部跑在一个节点
    • 核心服务配置 preStop、健康检查,保证优雅重启不丢请求

面试官:总结一下你的思路?


总结就两句话:
节点故障:先隔离、再驱逐、快速漂移业务恢复;
集群安全:etcd 定时备份 + 多节点高可用 + 多副本容灾。

我在真实项目里都是这么落地和处理故障的。

面试官:证券系统要求7×24小时稳定运行,日常监控你会关注哪些核心指标(服务器、应用、网络)?用过哪些监控工具?出现监控告警,你的处理流程是什么?

:好的面试官。证券交易系统对稳定性、时延、可用性要求极高,不允许中断、不允许抖动,我在日常运维里会从服务器、应用、网络三个层面盯核心指标,也有成熟的监控工具和告警处理流程。


面试官:先说核心监控指标,你重点关注哪些?


我分成三块:

1. 服务器/操作系统层面

证券系统特别关注 iowait 过高、磁盘满、内存溢出、负载飙高,这些会直接导致交易延迟。

2. 应用层面(K8s + 业务)

3. 网络层面

证券最怕网络抖动、时延突增、丢包、DNS 异常


面试官:你用过哪些监控工具?


我在项目里实际落地过这套:


面试官:出现监控告警,你的处理流程是什么?


我有标准的一线应急处理流程,证券系统必须快:

  1. 第一时间确认告警真实性 & 影响范围
    看哪个指标、哪台机器、哪个服务、是否大面积故障。

  2. 按优先级恢复业务优先

    • 服务不可用:立刻查看 Pod 是否重启、节点是否宕机
    • 性能异常:CPU/内存/磁盘/网络先定位瓶颈
    • 业务错误:查日志、查接口、查中间件
  3. 快速止血

    • 节点异常:cordon 隔离 → drain 驱逐 → 业务漂移
    • Pod 崩溃:重启、扩容、回滚版本
    • 资源满:清理磁盘、扩容内存、调优配置
  4. 日志 & 指标定位根因
    用 Grafana 看趋势
    用日志查报错
    用 Linux 命令查现场:top、free、df -i、netstat、dmesg

  5. 记录、复盘、优化
    避免再次发生:调探针、加资源、优化配置、完善告警策略。


面试官:很好,思路非常清晰,符合生产级运维标准。

面试官:开盘前1小时,客户反馈证券交易系统无法登录,多个营业部都有问题。你作为技术支持,第一步会做什么?怎么协调研发、运维,同时跟客户同步进度?

:面试官您好,这种场景我非常清楚,开盘前属于最高级别的应急场景,我的处理思路非常明确:先止血、再定位、同步要快、分工要清


面试官:那你第一步做什么?


第一步绝对不是直接去查代码、查日志,而是:
先快速确认故障范围、严重等级,同时立刻启动应急群。

具体就三件事:

  1. 先自己验证:能不能登录、是不是所有区域都不行、是不是网络问题。
  2. 立刻判断:是大面积故障还是个别线路问题——多个营业部同时无法登录,基本可以判定是核心服务/入口层故障
  3. 马上拉应急群:把研发、运维、DBA、架构师全部拉进来,先定调:P0 级故障,开盘前优先恢复!

一句话总结:
第一步:确认范围 → 定级 → 拉群启动应急。


面试官:那你怎么协调内部团队?


我会按职责立刻分工,不浪费一秒

  1. 运维/我本人

    • 先查入口:Nginx/网关/Service/Ingress 是否正常
    • 查节点、Pod 状态:是否大量重启、NotReady、OOM
    • 查监控:CPU、内存、连接数、流量是否突增
    • 目标:5分钟内判断是不是基础设施问题
  2. 后端研发

    • 查登录服务日志:报错、异常、连接池满、调用第三方失败
    • 查用户认证、会话、Redis、Token 相关服务
    • 看是否是刚发布、更新配置引起
  3. DBA

    • 查用户库、认证库是否正常
    • 锁表、慢查询、连接满没满
  4. 网络/运维

    • 查专线、VPN、DNS、负载均衡是否异常
    • 多营业部同时异常,优先查统一入口

我在中间做总指挥+推进
每3分钟同步一次进展,谁没输出就盯谁。


面试官:那你怎么跟客户同步?


对客户沟通我坚持三个原则:不甩锅、不隐瞒、频率稳定、给预期。

  1. 第一时间回复
    “收到,已启动P0最高级应急,正在全面排查,我每5分钟同步一次进度。”

  2. 同步结构固定

    • 当前现象:全量/部分无法登录
    • 正在排查方向:入口、服务、数据库、网络
    • 已做动作:重启、扩容、回滚、切换
    • 初步预估时间:给保守时间,不给空话
  3. 恢复后第一时间告知
    并简单说明原因,以及后续避免措施。

绝对不说:
“我们在看”“不知道”“应该快了”这类空话。


面试官:如果排查很久没定位到,你会怎么办?


证券交易系统,开盘前时间比定位根因更重要
我会直接走止损方案

先恢复登录,再慢慢查根因。
这是生产应急的核心逻辑。


面试官:你整体思路很清晰,很符合生产实战。


谢谢面试官。
我的核心逻辑就是三句话:
先定级拉群,再分工恢复,同步透明及时;
开盘前一切以“快速恢复”为第一目标;
对内强协调,对外稳预期。

面试官:你有没有处理过客户投诉的经历?当时是什么情况?怎么解决的?结果如何?

:有的面试官,我在之前的食品数字化零售项目中,处理过一次比较典型的客户投诉,我给您简单说一下当时的情况和处理过程。


面试官:好,你说。


当时是客户的线下门店高峰期,系统突然卡顿、下单反应很慢,门店店长直接投诉到我们这边,情绪比较急,说影响营业、影响用户体验,要求我们立刻解决。

我当时第一反应是:
先安抚情绪,再快速定位,最后给出明确结果。


面试官:你具体是怎么做的?


我分了四步:

  1. 先稳住客户情绪
    我第一时间电话联系对方,先道歉、先共情,告诉客户:
    “我理解现在是营业高峰,系统慢对你们影响很大,我现在全程盯着,5分钟内给您第一个进展。”
    先让客户觉得我们重视、靠谱、不推诿。

  2. 快速拉人排查问题
    我立刻拉了应急小群,同步运维、研发一起查:

    • 先看服务器负载、CPU、内存
    • 再看接口响应时间、数据库慢查询
      最后发现是高峰期流量突增,数据库连接池打满,导致整体阻塞
  3. 先恢复,再优化
    我没有先纠结根因,而是先临时扩容连接池、重启相关服务,把系统先拉回正常。
    大概 3 分钟左右系统就恢复流畅

  4. 给客户一个完整交代
    系统恢复后,我主动电话告知客户:

    • 问题原因
    • 已经怎么解决
    • 后续我们会做什么优化,避免再发生
      客户从一开始很急躁,到最后表示理解、认可。

面试官:最终结果怎么样?


最终系统恢复稳定,客户没有继续投诉,反而因为我们响应快、处理及时、态度负责,后续对我们团队的信任度更高了。

通过这件事我也总结了处理客户问题的核心:
响应快、态度稳、先解决、再解释、闭环到位。


面试官:很好,这个经历很真实,也体现了你的沟通能力和应急能力。