面试的时候,总会被面试官问道 “在职业生涯中,你印象最深的bug是什么?”; 有时候, 如果紧张,真滴会不知道该说些啥。
这个系列就是为了解决下面两个问题
- 复盘之前的错误,方便回顾并总结
- 更加高效的面试此类问题
我个人认为线上的bug从大类上划分, 主要分为两类
(1) 数据类
(2) 技术类
数据类
数据类问题不用赘述,无外乎是由于
- 没有添加校验导致传递了空值或者异常值
- 忘记set(赋值)或者赋值错误(赋值给A字段的结果给了B)
对此我的建议是
养成校验数据格式的习惯,避免空指针或者异常值的问题。前置的校验,可以避免后续不必要的业务流程流转。
学会写单元测试(如果写出全面和有效的单元测试是一个有技术的工作)
技术类
技术类的线上bug就太多了, 我们平时写的包括
- 技术不精,没有深刻理解标准库或者第三方框架源码导致的代码错误
- 语言本身的问题 - jdk的空轮询
- 框架本身的问题
- 业务量猛增,我们需要面临高并发,高性能,高可用的分布式系统设计问题
其中还有一些框架版本兼容性的问题;比如dubbo 2.5.x版本和spring的切面就有冲突;hbase与hadoop版本的兼容性问题。
提醒我们, 在使用一些框架或者代码的时候,一定要准备的理解其设计,让他更好的为我们服务。同时如果及时的发现一些开源框架的问题,也要及时的给社区提PR。