贝壳找房面经

1.explain

1.explain是一个用于分析SQL查询执行计划的关键字,它可以帮助你理解数据库系统在执行查询时的工作流程,
  以及如何优化查询性能,通常与select一起使用

2.作用:
(1)查询执行计划分析:查看数据库将如何执行给定的查询。显示了数据库优化器如何选择索引、连接表、排
                    序数据等操作来满足查询的需求
(2)性能优化:通过查看执行计划,可以识别潜在的性能问题,例如缺少索引、不必要的全表扫描、连接操作
             的复杂度

举例:
explain select * from tbl_user where age > 12;

2.arrayList和linkedList的区别

1.ArrayList
(1)数据结构:动态数组,当容量不够时,自动扩容
(2)访问速度:支持索引直接访问元素,O(1)
(3)插入和删除:如果不是在数组末尾进行,那么就需要移动后续元素来保持顺序,比较慢
(4)空间占用:会占用比实际元素数量多的空间

2.LinkedList
(1)数据结构:双向链表
(2)访问速度:需要遍历,O(n)
(3)插入和删除:比较快,移动指针就可以
(4)空间占用:会占用比实际元素数量多的空间,因为每个元素都要存储两个额外的引用

3.B+树每层可以存储多个节点除了优化查询时间,还有其它好处吗

1.平衡性:B+树是一种平衡树结构,每个叶子节点都位于相同的层级

2.有序性:B+树的所有叶子节点都按顺序排列,这使得范围查询更加有效

3.支持快速插入和删除:插入和删除都是O(logn)

4.适用于外部存储:它的平衡性和有序性有助于减少磁盘IO操作,提高读写性能

5.支持高并发:B+树的结构使得多个线程或事务可以并发读取和写入数据,而不会出现冲突

4.mysql都有哪些索引

1.全文索引:用于全文本搜索,允许在文本列上执行全文搜索操作,找到包含特定关键词的行

2.空间索引:用于处理空间数据,例如地理信息数据

3.联合索引:在多个列上创建的索引,适用于队列的等值查询和范围查询

4.主键索引:是唯一索引的特殊类型,确保主键的唯一性

5.外键索引:用于建立表之间的关系,确保外键列的值在关联表中存在。通常用于维护数据的一致性和完整性

6.唯一索引:确保索引列的值在表中是唯一的,不允许重复值

7.前缀索引:允许只索引列值的一部分,这样可以节省存储空间和提高查询性能

5.java有哪些线程池

1.ThreadPoolExecutor:可以根据需要配置线程池的核心线程数、最大线程数等核心参数

2.FixedThreadPool:固定大小的线程池,创建固定数量的线程来执行任务,如果所有线程都处于忙碌状态,
                   新任务会被放入队列中等待

3.CachedThreadPool:具有自动扩展能力的线程池。它根据任务的数量动态创建新线程,如果线程空闲一段
                    时间,那么就会被回收。适用于短期的异步任务

4.SingleThreadExecutor:单线程的线程池,他确保所有任务按照它们提交的顺序依次执行

ScheduledThreadPool:支持定时任务的线程池,可以在指定的延迟时间后执行任务,或者按照固定的时间
                     间隔周期性的执行任务

6.FixedThreadPool有什么风险

1.资源占用:占用了固定数量的线程资源,如果配置了过大的线程池,那么可能会占用过多的系统资源,导致
           系统的负载过高,甚至资源耗尽

2.任务堆积:由于线程数量固定,无法动态调整,可能导致队列中任务的等待时间太长

3.性能下降:如果线程池的线程数量的大小与CPU核心数量不匹配,性能会受到影响

7.有序集合的底层

有序集合是一种高效的数据结构,它兼具了Set和排序两个特点。有序集合底层主要使用跳跃表和哈希表(hasbtable)来实现

跳跃表:可以实现二分查找的有序链表
(1)有序集合的底层通常使用跳跃表来维护成员的有序性。跳跃表是一种平衡数据结构,它允许快速的
     插入、删除和查找操作
(2)跳跃表由多级链表构成,每一级链表都是元素的子集,每个元素在每一级链表中都有一个节点
(3)跳跃表的每一级链表都是有序的,而且都是从上到下的链表都是稀疏的,这就使得查找和插入操作的
     时间复杂度都是O(logn)
(4)跳跃表的每个节点包含了一个成员和一个分值,成员用于标识元素,而分值用于排序

哈希表:
(1)为了快速查找元素是否存在于有序集合中,redis还是用了哈希表
(2)哈希表的键是有序集合的成员,而值则是成员的分值
(3)每个成员都有一个唯一的分值,成员可以重复,但分值必须唯一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cw旧巷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值