1.HashMap 和 Hashtable 有什么区别?
相同点:HashMap 和 Hashtable 都实现了 Map 接口
不同点:HashMap 允许键和值是 null,而 Hashtable 不允许键或者值是 null。
Hashtable 是同步的,而 HashMap 不是。因此,HashMap 更适合于单线程环境,而 Hashtable
适合于多线程环境。
HashMap 提供了可供应用迭代的键的集合,因此,HashMap 是快速失败的。另一方面,
Hashtable 提供了对键的列举(Enumeration)。
一般认为 Hashtable 是一个遗留的类。
2.Java 中的 HashMap 的工作原理是什么?
Java 中的 HashMap 是以键值对(key-value)的形式存储元素的。HashMap 需要一个 hash 函数,
它使用 hashCode()和 equals()方法来向集合/从集合添加和检索元素。当调用 put()方法的时
候,HashMap 会计算 key 的 hash 值,然后把键值对存储在集合中合适的索引上。如果 key
已经存在了,value 会被更新成新值。HashMap 的一些重要的特性是它的容量(capacity),负
载因子(load factor)和扩容极限(threshold resizing)。
3.数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用 Array 而不是 ArrayList?
下面列出了 Array 和 ArrayList 的不同点:
Array 可以包含基本类型和对象类型,ArrayList 只能包含对象类型。
Array 大小是固定的,ArrayList 的大小是动态变化的。
ArrayList 提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数
据类型的时候,这种方式相对比较慢。
4.ArrayList 和 LinkedList 有什么区别?
ArrayList 和 LinkedList 都实现了 List 接口,他们有以下的不同点:
ArrayList 是基于索引的数据接口,它的底层是数组。它可以以 O(1)时间复杂度对元素进行随
机访问。与此对应,LinkedList 是以元素列表的形式存储它的数据,每一个元素都和它的前
一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是 O(n)。
相对于 ArrayList,LinkedList 的插入,添加,删除操作速度更快,因为当元素被添加到集合任
意位置的时候,不需要像数组那样重新计算大小或者是更新索引。
LinkedList 比 ArrayList 更占内存,因为 LinkedList 为每一个节点存储了两个引用,一个指向前
一个元素,一个指向下一个元素。
也可以参考 ArrayList vs. LinkedList。
5.什么是 JDBC?
JDBC 是允许用户在不同数据库之间做选择的一个抽象层。JDBC 允许开发者用 JAVA 写数据库
应用程序,而不需要关心底层特定数据库的细节。
6.什么是 Servlet?
所有的 Servlet 都必须要实现的核心的接口是 javax.servlet.Servlet。每一个 Servlet 都必须要直
接或者是间接实现这个接口,或者是继承 javax.servlet.GenericServlet 或 者
javax.servlet.http.HTTPServlet。最后,Servlet 使用多线程可以并行的为多个请求服务。
7.解释下 Servlet 的生命周期。
对每一个客户端的请求,Servlet 引擎载入 Servlet,调用它的 init()方法,完成 Servlet 的初始
化。然后,Servlet 对象通过为每一个请求单独调用 service()方法来处理所有随后来自客户端
的请求,直到请求结束。
8.什么是 cookie?session 和 cookie 有什么区别?
cookie 是 Web 服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个 Web 服务
器存储 cookie。以后浏览器在给特定的 Web 服务器发请求的时候,同时会发送所有为该服
务器存储的 cookie。下面列出了 session 和 cookie 的区别:
无论客户端浏览器做怎么样的设置,session 都应该能正常工作。客户端可以选择禁用 cookie,
但是,session 仍然是能够工作的,因为客户端无法禁用服务端的 session。
在存储的数据量方面 session 和 cookies 也是不一样的。session 能够存储任意的 Java 对象,
cookie 只能存储 String 类型的对象。
Author: wenj
Link: http://yoursite.com/2019/11/28/%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.