Java Hadoop基础知识点总结

1.开发中Java用了比较多的数据结构有哪些?

2.谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题?这些数据结构中都是线程安全的吗?假如你回答的是线程安全的,接着问你有没有线程安全的map,接下来问了conurren包

HashMap是程序员使用频率最高的关于映射(键值对)处理的数据类型,随着JDK(1.8)对HashMap的底层实现了优化,比如引入了红黑树的数据结构和扩容优化等,

HashMap利用hashcode的值存储数据,大多数情况下可以定义到具体的位置所以有很快的访问速度,但是遍历顺序却是不确定的。HashMap的键可以为null但是只能有一条键为null的数据,允许多条记录的值为null。HashMap是非线程安全的即任一时刻可以多个线程同时写入数据,可能导致数据的不一致

hash碰撞:对象hash的前提是实现hashcode()和equals()方法,hashcode()是保证对象返回唯一的hash值,当两个对象返回相同的hash值时就发生了hash碰撞。解决方法:①在hash法,用姓的首字母进行比较,如果首字母相同在比较第二个依次比较。缺点:计算时间增加。②开放地址法,开放地址法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1),其中m为hash表的表长,di是产生碰撞时的增量序列,如果di的值为1,2......m-1,呈线性探测在散列。如果di取1每次冲突之后向后移动1个位置,如果di取值是1,-1,2,-2,4,-4,9,-9,16,-16,…k*k,-k*k(k<=m/2),称二次探测在散列。如果di是为随机数列,称为随机探测在散列。

HashMap是jdk1.2推出的,采用的是异步处理,这样性能更高。是非线程安全的。

3.TCP的三次握手怎么理解

第一次握手:客户端给服务端发包,此时不确认服务器接收到了包

第二次握手:服务端回复客户端,此时客户端确认自己发的包能被服务端端接收,此时服务端不确认自己发的包能被客户端接收

第三次握手:客户端回复服务端,客户端这边已经没有疑问了。服务端也能确定客户端能接受到自己的包

猜你喜欢

转载自blog.csdn.net/lkx1315/article/details/82492416