Java面试
文章平均质量分 91
允诺@晴天
这个作者很懒,什么都没留下…
展开
-
TCP——三次握手和四次挥手
去向ACK消息最大存活时间(MSL)+ 来向FIN消息的最大存活时间(MSL)第一,保证客户端发送的最后一个ACK报文能够到达服务器第二,释放的端口可能重连刚断开的服务器端口,这样依然存活在网络里的老的TCP报文可能与新的TCP连接报文冲突。原创 2022-10-27 21:32:54 · 2614 阅读 · 0 评论 -
Java基础——HashMap特征
此时线程t2调用了put,put了一个新值,最后table[bucketIndex] = t2的新值,当t1再次拿到时间片段继续执行,此时table[bucketIndex] = t1的新值,而t1的新值的next却还是之前的数据所以T2存的值就丢失了。当链表长度超过树化阈值 8 时,先尝试扩容来减少链表长度,如果数组容量已经 >=64,才会进行树化。当HashMap中的元素为总容量的3/4是进行扩容操作,扩容为原来的两倍。注:这个e就是新创建的Entry的next的值。值得注意的是:链表长度可能超过8。原创 2022-10-26 20:45:32 · 2708 阅读 · 0 评论 -
基础篇——单例模式
双重检查锁模式是一种非常好的单例实现模式,解决了单例、性能、线程安全问题,上面的双重检测锁模式看上去完美无缺,其实是存在问题,在多线程的情况下,可能会出现空指针问题,出现问题的原因是JVM在实例化对象的时候会进行优化和指令重排序操作。枚举类实现单例模式是极力推荐的单例实现模式,因为枚举类型是线程安全的,并且只会装载一次,设计者充分的利用了枚举的这个特性来实现单例模式,枚举的写法非常简单,而且枚举类型是所用单例实现中唯一一种不会被破坏的单例实现模式。instance对象是随着类的加载而创建的。原创 2022-10-16 11:20:01 · 2466 阅读 · 0 评论 -
基础篇——ArrayList VS LinkedList
如果按 内容 进行查询LinkedList 和ArrayList 时间复杂度相同都是。LinkedList 没有实现 RandomAccess 接口。ArrayList 实现了 RandomAccess 接口。ArrayList 用时比 LinkedList 短。头部插入性能对比(LinkedList胜)中间插入性能对比(ArrayList胜)LinkedList:占用内存多。RandomAccess 接口。ArrayList:占用内存少。尾部插入性能对比(不相伯仲)原创 2022-10-15 11:36:22 · 3038 阅读 · 0 评论 -
基础篇——ArrayList扩容机制
的是,一下所有代码中用反射方式来更直观地反映 ArrayList 的扩容特征,但从 JDK 9 由于模块化的影响,对反射做了较多限制,需要在运行测试代码时添加 VM 参数。extends E> c) 源码。ArrayList(int initialCapacity)源码。演示扩容10次的ArrayList的长度。无参构造ArryList()ArrayList()源码。有初始容量(10) 时扩容。原创 2022-10-14 19:41:13 · 7035 阅读 · 0 评论 -
基础篇——二分查找
有一个有序表为 1,5,8,11,19,22,31,35,40,45,48,49,50 当二分查找值为 48 的结点时,查找成功需要比较的次数。使用二分法在序列 1,4,6,7,15,33,39,50,64,78,75,81,89,96 中查找元素 81 时,需要经过( )次比较。③ A[M] < T,中间值左侧的其它元素都小于 T,无需比较,中间索引右边去找, M + 1 设置为左边界,重新查找。对于前两个题目,记得一个简要判断口诀:奇数二分取中间,偶数二分取中间靠左。当 l 和 r 都较大时,原创 2022-10-11 17:01:19 · 2598 阅读 · 0 评论