今天面试的时候,面试官问的,尬住了不知道咋答,给他说了一堆代码排错。请问这个怎么答比较好。
首先是要复现错误,运行了几年,应该是比较隐蔽的bug,你需要寻找某些特殊的触发bug的条件
首先,我会先了解这个项目的架构和运行环境,确定出现问题的范围。然后,我会逐步分析代码,找到出现问题的地方,并进行数据的打印和调试,找出问题所在。最后,我会进行代码优化和修复,确保项目能够正常运行。
举个例子,如果一个Java Web项目一直能够正常运行,但是突然出现了500错误,我会先检查项目的日志文件,找到具体的异常信息。如果日志文件中没有异常信息,我会检查项目的配置文件,确认配置是否正确。如果配置无误,我会逐步分析代码,找到出现问题的地方,并进行数据的打印和调试,找出问题所在。最后,我会进行代码优化和修复,确保项目能够正常运行。
第一,排除环境变动问题,是否有软件升级,是否有依赖变动
第二,排除物理性能,硬件问题,是否磁盘存储空间不足,是否有其他工具、软件挤占了内存、端口
第三,如果有日志,根据日志复现错误,追踪错误产生位置及原因
第四,如果没有任何日志,且无法复现,那就调整代码,追加日志记录功能,异常捕捉,等待下次出错
首先肯定是要先排除人为改动导致的错误,比如
1.环境变动,是否更换了软硬件
2.配置文件是否齐全,有没有被误删
3.数据库是否都在
当然这些本身也需要配合日志来查
如果不是这些明显的错误,那大概率是性能问题
比如一开始数据库里数据很少,跑起来非常快,当数据量不断增加之后,查询变的非常慢,导致各种问题
或者是硬盘空间不足等原因导致的问题
如果问题是偶发的,那么需要先想办法复现问题,之前的日志打的不够多那就多打日志,仔细排查到底是哪里出的问题