10.25面试题小结

xiaoxiao2025-10-12  11

Java中ArrayList和LinkedList二者的区别? 答: 1、ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2、对于随机访问的get/set,ArrayList绝对优于LinkedList,因为LinkedList要移动指针。 3、对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。

经过测试之后可以得到如下结论: 1、显然我们可以得到ArrayList更适合读取数据,LinkedList更多的时候添加或删除数据。 2、ArrayList内部可以看出可增长数组实现的,所以用get和set方法是花费常数时间的,但是如果插入和删除元素,除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。 3、LinkedList是使用双向链表实现的,所以get会非常消耗资源,除非位置离头部很近,但是插入和删除元素花费常数时间。

2、HashMap和HashTable的区别? 答:1、HashMap不是线程安全的,HashMap是Map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key 和 null value,而HashTable不允许。 2、HashTable是线程安全的,HashMap是HashTable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空键,由于非线程安全,效率可能高于HashTable。 3、HashMap允许将null作为一个entry的key或者value,而HashTable不允许。HashMap把HashTable的contains方法去掉了,改成containsvalue和containskey。因为contains方法容易让人引起误解。HashTable继承Dictionary,而HashMap是Java1.2引进的Map interface的一个实现。最大的不同是,HashTable的方法是Synchronize(同步)的,而HashMap不是,在多个线程访问HashTable时,不需要自己为它的方法实现同步,而HashMap就必须提供外同步。其中HashTable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差。

3、哈希表原理详解 答:哈希表(也称散列表),是根据关键码值(key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

哈希表(HashTable(key,value))就是把key通过一个固定的算法函数即就是所谓的哈希函数转换为一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以下该数字为下标的数组空间里。通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。

4、数据结构的存储方式以及优缺点 答: 在计算机中,数据的存储结构可以采用如下四种方式实现: 1、顺序存储方式: 顺序存储方式就是在一块连续的存储区域一个 接着一个存放数据。顺序存储方式把逻辑上相邻的节点存储到物理位置放在相邻的存储单元里,节点间的逻辑关系由存储单元的邻接关系来体现。顺序存储方式也称为顺序存储结构,一般采用数组或结构数组来描述。 2、链接存储方式: 链接存储方式比较灵活,不要求逻辑上相邻的节点在物理位置上相邻,节点间的逻辑关系由附加的引用字段表示。一个节点的引用字段往往指向下一个节点的存放位置。链接存储方式也称为链式存储结构。 3、索引存储结构: 索引存储方式是采用附加的索引表的方式来存储节点信息的一种存储方式。索引表由若干索引项组成。索引存储方式中索引项的一般形式为(关键字、地址)。其中关键字是能够标识一个节点的数据项。索引存储方式还可以细分为如下两类。 a>稠密索引 b>稀疏索引 4、散列存储方式:散列存储方式是根据节点的关键字直接计算出该节点的存储地址的一种存储方式。

《M》顺序存储: 答:优点:<1>在结点等长时可以随机存取。 <2>存储密度高、节省存储空间。 <3>用结点的物理次序反映结点的逻辑关系。 缺点:<1>插入和删除节点时要移动大量的元素 <2>必须静态分配连续空间 《N》链式存储方式: 优点:<1>插入和删除比较灵活,不需要大量移动节点。 <2>动态分配空间灵活,不需要预先申请最大的连续的空间。 缺点:<1>增加指针的空间开销。 <2>检索必须沿链进行,不能随机存取。

java中四个关键字:pubic 、protected 、default 、private

5、视图和表的区别? 数据库中的数据都是存储在表中的,而视图只是一个或多个表依照某个条件组合的结果集。一般来说可以使用增删改等SQL语句修改表中的数据,而对视图只能进行select操作。 1>、表是物理存在的,而视图是虚拟的内存表。 2>、视图适合于多表连接浏览器时使用,不适合增删改,存储过程适合于使用较频繁的SQL语句。 3>、区别: a.视图是已经编译好的SQL语句,而表不是 b.视图没有实际的物理记录,而表有。 c.表是内容,视图是窗口。 d.表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时的对它进行修改,但视图只能由创建的语句来修改。 e.视图是查看数据表的一种方法,可以查询数据表中的某些字段构成的数据,只是SQL语句的 集合。从安全角度说,视图可以不给用户接触数据表。从而不知道表结构。 f.表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 g.视图的建立和删除只影响视图本身,不影响对应的基本表。

联系:视图是在基本表的之上建立的表,它的结构(所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
转载请注明原文地址: https://www.6miu.com/read-5037760.html

最新回复(0)