面试题一:
Q:源文件的class文件和自定义类哪个优先加载?
A:VM通过双亲委派模型进行类的加载,优先加载自定义类,所以可以达到覆盖源class文件的效果。(可以用自定义类覆盖第三方的jar包中的jar文件)
![22924b5fe432408c0935a0115bfa7ad8.png](https://i-blog.csdnimg.cn/blog_migrate/b0e2b84ea9ba5ebd75423efb68c01597.jpeg)
面试题二:
Q:java编码格式简单转换?
A:java字符串编码格式转换:
new String(JSON.toJSONString(requestData).getBytes(), "UTF-8")
面试题三:
Q:mavenjar包如何解决冲突?
A:maven jar 包冲突命令:
mvn dependency:tree
![968f23a0266114a0fb9fec71251ecdd5.png](https://i-blog.csdnimg.cn/blog_migrate/641ababc03559d29ba88b4ebf82bebc2.jpeg)
面试题四:
Q:秒杀系统如何做
A:前端页面要hold住,运用cdn解析。
后端的话,可以上分布式锁。
放入消息队列。
![11955b49e29d9b95cea4733456a4ea67.png](https://i-blog.csdnimg.cn/blog_migrate/fa72b6b5d0fa6a93a7582635332709cf.jpeg)
面试题五:
Q:二分查找如何实现?
A:public static int test(int[] arr, int key) {
int low = 0; //索引开始的位置
int high = arr.length - 1; //数组的长度
int middle = 0; //查找指定元素的索引位置
while (low <= high) {
//获得初始数组的中间值
middle = (low + high) / 2;
//从中间值开始比较传入的key值 大于则 -1
if (arr[middle] > key) {
high = middle - 1;
//从中间值开始比较传入的key值 小于则 +1
}else if (arr[middle] < key) {
low = middle + 1;
}else {
//当没进if条件时则代表值相等,直接返回即可
return middle;
}
}
//当查找的值不存在时返回 -1
return -1;
}
面试题六:
Q:分库分表规则:
A:先垂直分,再水平分
垂直是根据业务规则区分,水平是根据数据量大小