总体看下来,这套题编程难度不是特别高,有两道题一眼就能看出思路
但是笔试简答的问题比较广
如果线上某台虚机CPU Load过高,该如何快速排查原因?只介绍思路和涉及的Linux命令即可 。
出现原因:Full gc次数的增大、代码中存在Bug(例如死循环、正则的不恰当使用等)都有可能造成cpu load 增高。
top查看占用cpu过高的程序
jstack查看java占用情况,分析线程状态
请简要描述MySQL数据库联合索引的命中规则,可举例说明。
这是啥呀……
**联合索引:**将多个索引关联在一起,作为一个索引树存在. 这样在查询过程中可以根据单个索引值来覆盖得到另一个索引的值 减少了树的搜索次数,显著提高查询的性能
规则:
1.最左前缀匹配规则
从联合索引的最左列开始向右匹配,直到遇到匹配终止条件。例如联合索引(col1, col2, col3), where条件为col1=a
AND col2=b
可命中该联合索引的(col1,col2)前缀部分, where条件为col2=b
AND col3=c
不符合最左前缀匹配,不能命中该联合索引。
2.索引匹配失败
匹配终止条件为范围操作符(如>, <, between, like等)或函数等不能应用索引的情况。例如联合索引(col1, col2, col3), where条件为col1=a
AND col2>1 AND col3=c
, 在col2列上为范围查询,匹配即终止,只会匹配到col1,不能匹配