作者:牛客.吴彦祖
链接:https://www.nowcoder.com/discuss/727743?type=2&order=0&pos=17&page=1&channel=-1&source_id=discuss_center_2_nctrack
来源:牛客网
1.hashmap原理 复杂度
2.volatile 原理 禁止指令从排序原理
3.死锁 条件 如何防止
4.mysql 查询语句优化
4.索引底层原理
5.叶子结点是单链表还是双链表
6.时间复杂度
7.几大隔离级别
8.mysql默认是哪一层
9.jvm的垃圾回收器有哪些
10.为啥g1 是两种算法
11.cms适用于哪些情况
12.redis 为啥是单线程的
13.udp的应用场景
14.https会话过程
15.https 加密
16 非对加密 公钥 私钥放在那里
17.ca证书了解吗
18.inkedlist 底层
19.堆 和 归并排序 时间复杂度 是不是稳定的
20.快排时间复杂度 是不是稳定的 最坏情况 如何避免
补充知识:
一、避免回表查询
建立联合索引,把查询的列,建在联合索引中,这样子可以避免回表查询
二、联合索引
比如 idx_a_b_c_d,在 where a=1 and b=2 and c>3 and d=4 这个时候,在abc可以用到索引,但不能用到d索引。如果调整一下索引顺序,比如idx_a_b_c_d修改为idx_a_b_d_c,这个时候 abcd4个字段,都可以使用索引。
三、避免索引失效
or 语句前后没有同时使用索引。当 or 语句查询字段只有一个是索引,该索引失效,只有当 or 语句左右查询字段均为索引时,才会生效
对于复合索引,如果不使用前列,后续列也将无法使用
like 关键字以 % 开头
数据类型出现隐式转化,那么会导致索引失效,造成全表扫描效率极低
索引列参与计算
索引列使用函数
使用 not,<>,!=,is not null
不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。 优化方法: key<>0 改为 key>0 or key<0。
tips:is null是可以使用到索引的,is not null才不能使用到索引。null值列不参与计算,<>符号和count函数会自动过滤为null的列,比如:where a != ‘1’,则不会查询出a为null的列
