面试|业务面试问题

面试 [字体···] [宽度···]

身边小伙伴经常被问到的一些问题。

1、项目怎么上线

  1. 在上线之前需要自测,自测后 qa 测试无问题可以进行线上数据验证(CR 分支)
  2. 进行 code review (变更少可以不进行),提 merge request 到 CR 分支,CR 完毕部署该分支到线上让 QA 验证,该环境使用线上数据不对外公开
  3. QA 确定线上数据验证完毕,产品验收通过,可以上线,然后在周二、周四固定时间上线
  4. 将每个模块开发的功能合并到 release 分支,统一晚上 8:00 后上线,如果新功能对产品可能造成验证影响,需要在灰度环境验证一到两周才能到线上
  5. 上线完毕后 QA 再次进行验证,第二天无问题,release 分支合并到 master 分支

2、怎么参与线上问题

  1. 如果是事故级别问题,需要立即对代码进行回滚
  2. 常规问题一般先看问题的现象,如果能够通过报错信息找到问题根源就就 checkout 一个 master 进行处理并上线
  3. 如果问题比较隐蔽,优先通过日志系统排除,最后再看业务代码
  4. 处理完毕线上问题并验证后,高优缺陷当天上线,其他类缺陷可以跟着周二、周四上线

3、线上出现问题怎么回滚

  1. 回滚既部署上个版本的代码,由于我们每个上线周期都使用一个 release 分支,直接切换到这个分支重新部署即可。
  2. 使用公司的 CI/CD 系统可以方便回滚,通常配置回滚策略后可以一键回滚。
  3. 也可以手动部署上个版本的 release 分支进行回滚。

4、线上表结构更改怎么做(数据迁移)

  1. 由于业务优化变更导致需要修改表结构的时
  2. 通常暂时不动先不动旧表和旧业务接口,然后创建新表,实现新接口
  3. 通过灰度验证没有问题后,再进行上线,之后可以移除旧表的业务接口
  4. 过程中一般要注意新表旧表的数据同步,数据迁移时机(一般在用户少的晚上进行)

5、解决过什么线上问题

解决的问题多数为业务问题,极少部分时优化相关的。 一般的有:空指针、线程池 Discard、内存溢出 优化的有:

  1. 大事务导致接口超时问题
  2. 数据同步过程,数据一致性方案。使用 binlog 监控兜底保证一致性(监听变更+校验)。
Top↑