光之使者 发表于 2024-11-29 06:55:37

【2】北森云盘算面试题整理

. 多线程产生死锁的须要条件是什么?

互斥条件:资源不能被多个线程同时访问。如果一个资源被一个线程占用,其他线程必须等待直到该资源被开释。
请求与保持条件:一个线程已经持有至少一个资源,同时请求获得当前正被另一个线程所拥有的其他资源。
不剥夺条件:线程已获得的资源在未利用完之前不能被其他线程强行剥夺,只有本身利用完毕后才开释资源。
循环等待条件:多个线程形成了一个循环等待链,每个线程都在等待下一个线程所占有的资源,导致全部线程都无法继续执行。
. HashMap在利用时有哪些可以提拔性能的本领,枚举出一些常见的计谋

公道设置初始容量,制止频繁的扩容操纵(Java 中 HashMap 默认初始容量是 16)。
根据具体应用场景调整负载因子(官方提供的默认负载因子是 0.75)。
利用符合的哈希函数,确保 hashCode 匀称分布。
. HashMap的初始容量和负载因子是怎样影响性能的?

初始容量决定了HashMap在开始时可以或许容纳的元素数目。如果初始容量设置得太小,当元素数目增加到一定程度时,HashMap会进行扩容,导致性能降落,但如果初始容量设置得太大,又会浪费内存空间。
负载因子是指HashMap中存储的元素数目与容量的比率。当这个比率达到负载因子的值时,HashMap会进行扩容。较小的负载因子会导致HashMap频繁扩容,增加时间开销;而较大的负载因子会导致链表长度过长,降低查询服从。
. Java中为什么HashMap查询速度快

大多数情况下,HashMap可以直接通过键的hashCode值定位到其值,制止了线性查询,从而进步了查询速度。
. 数组通常在什么场景利用,数组的上风

利用场景:
用于排序和搜刮算法中。在一组数字中查找最大值或最小值,可以利用一个整数数组。
用于存储和操纵数学中的向量、矩阵等数据,方便进行各种数学盘算。
用于图像和视频处理中,利用二维数组表现灰度图像或彩色图像中的像素。
作为缓存和缓存机制组件的一部分,利用一个数组来存储最近访问的项目,并在需要时实现快速访问。
上风:


[*] 访问速度快,可以通过索引进行直接定位。
[*] 在内存中以一连的方式存储元素,数据的读取和写入服从高。
[*] 支持多维数据结构,可以用于表现矩阵、表格等复杂数据。
. 形貌一下快速排序的排序过程

选择基准值:通常选择序列的第一个或最后一个元素作为基准值。
分区操纵:重新排列序列,使得全部小于或等于基准值的元素都移到基准的左边,全部大于基准值的元素都移到基准的右边。这一步完成后,基准值地点的位置就是其最终位置。
递归排序:递归地对左右两部分进行快速排序,直到整个序列有序。
. 数据库聚集索引有什么特点

聚集索引决定了表中数据的物理次序。
主键查询服从和范围查询服从高。
每个表只能有一个聚集索引,因为数据不能按照两个以上的次序存储。
当数据进行插入、删除或更新时,整个表的数据次序可能需要调整,这可能导致性能降落和碎片化。
. 聚集索引对数据库插入操纵和查询操纵的影响

插入操纵:
由于聚集索引要求数据行物理次序与索引次序一致,插入新数据时需找到符合位置保持次序,可能降低插入性能,尤其在数据量大且插入次序不一连时。
主键或聚集索引列的值发生变革可能导致页分裂,进一步降低插入性能。
查询操纵:
当查询涉及到聚集索引的键列时,数据库引擎可以直接搜刮索引来定位所需的数据页,无需进行全表扫描。
聚集索引特殊得当进行范围查询。因为数据按索引键次序存储,可直接通过索引访问数据。
. delete和truncate的区别

delete支持条件删除,可以带WHERE的,而truncate只能删除整个表。
delete是数据利用语言(DML - Data Manipulation Language),可以被回滚;而truncate是数据定义语言(DDL - Data Definition Language),不能进行回滚。
delete会逐行删除数据,并在日记中记载每一行的删除动作,速度较慢;truncate不记载每一行的删除动作,直接开释表占用的空间,通常比delete快。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【2】北森云盘算面试题整理