2. 潍柴面试复盘(公司内部面试—山东—电话面试)
结果
通过(但不想去--离职的导火索)领导说8个人面试就我一个过了,非去不可,不然就自己提离职,也是经历了这件事,悟出了些许人情世故QAQ
时间
2023.2.24
注: ----- 以下答案不再更新(考虑删除),统一在面试宝典中更新
stream流和for的区别?
stream流可以看作是for循环的一个语法糖;
stream有并发流,在超过百万级数据量时,使用stream流效率更高;
聚簇索引一个表为什么只能有一个?
由于聚簇索引是将索引和数据放在一起的,有多个的话会出现数据冗余。
隐藏点:通常主键索引就是聚簇索引,但也可以指定为非聚簇索引,这样就可以建立其他聚簇索引
B+和B、红黑树、hash结构的区别?
B+树的数据都存放在叶子节点上,且叶子节点本身是有序的,所以B+树的查询效率也就更高
区别:
b树的索引和数据存放在一起。树的高度比B+高,IO消耗也越多。
红黑树需要存储颜色信息,占用内存比较大,同时不支持范围查询,不适合海量数据的查询 (还有一个点:到时候再复盘一下)
hash结构等值查询是比较快的,但是不支持范围查询
为什么查询效率更高?
B+树的节点不存放数据,所以能存放更多的关键字数量,从而降低树的高度,减少IO次数
hashtable和 concurrenthashmap 的区别?
数据结构方面:
ConcurrentHashMap 1.7 采用分段数组+链表实现,1.8采用数组+链表+红黑树
hashtable采用数组+链表
线程安全方面:
ConcurrentHashMap 1.7 采用分段锁,使用的是 ReentrantLock,锁住部分分段数组 ,1.8采用 synchronized 和 CAS 来操作,一把锁锁住一个node节点
hashtable:使用synchronized 锁住整个容器,效率低。
分段锁怎么实现的?
上面说了,使用 ReentrantLock,锁住部分分段数组
索引有哪些?
主键,唯一,联合,正常,聚簇索引
主键和唯一有什么区别?
一个表只能有一个主键,但可以有多个唯一性索引;
主键可以作为外键的关联字段,且主键的key不能为空
对哪些字段加索引?
首先要求字段的区分度比较高
具体使用场景:
在where,group by,order by,表关联中常用的字段
这些情况都比较适合加索引
什么情况索引会失效?
重新总结
- 索引不在查询条件或者查询的列
- not in, <> 不走索引
- like %在前面不走索引
- 对于count(*)索引字段有not null约束 走索引,否则不走
- 查询结果大于表的百分之25,优化器没必要走索引 (使用Limit限制,放redis里)
- 查询条件使用函数在索引列上,运算 +,-、 * , /
sql怎么调优?
sql本身优化,尽可能走索引,避免全表查询,减少无用数据的查询
索引优化:
尽可能走索引
建立联合索引
查询优化:
使用 Explian 关键字分析select语句
切分大查询
#23届找工作求助阵地##你觉得今年春招回暖了吗#