文章分类 - Java面试(黑马程序员)
Java面试笔记-基础篇-HashMap
摘要:1.HashMap的作用是快速查找元素 2.底层数据结构,1.7与1.8有何不同? 1.7:数组+链表 1.8:数组+(链表/红黑树) 3.为何要用红黑树,为何一上来不树化,树化阈值为何是8,何时会树化,何时会退化为链表? ①红黑树用来避免DoS攻击,防止链表超长时性能下降,树化应当是偶然情况 ①h
阅读全文
Java面试笔记-基础篇-LinkedList_vs_ArrayList
摘要:1.ArrayList和LinkedList的区别 ArrayList: 基于数组,需要连续内存 随机访问快(指根据下标访问) 尾部插入、删除性能可以,其他部分插入、删除都会移动数据,因此性能会低 可以利用cpu缓存,局部性原理 LinkedList: 基于双向链表,无需连续内存 随机访问慢(要沿着
阅读全文
Java面试笔记-基础篇-Iterator
摘要:1.fail-fast和fail-safe: ArrayList是fail-fast的典型代表,遍历的同时不能修改,尽快失败 CopyOnWriteArrayList是fail-safe的典型代表,遍历的同时可以修改,原理是读写分离
阅读全文
Java面试笔记-基础篇-ArrayList
摘要:1.ArrayList初始容量的确定: ArrayList():会使用长度为0的数组 ArrayList(int initialCapacity):会使用指定容量的数组 public ArrayList(Collection<? extends E> c):会使用c的大小作为数组的容量 2.扩容机制
阅读全文
Java面试笔记-基础篇-冒泡排序
摘要:1.优化后的冒泡排序代码: 优化思路: 在普通冒泡排序下,记录每一组最后一次交换的索引,内层循环到此索引为止,减少比较次数,当此索引为0时,则表示后面都是有序的了,推出循环。
阅读全文
Java面试笔记-基础篇-二分查找
摘要:1.注意:编写二分查找,前提是有序 2.具体流程(文字描述): 3.方法代码实现: 4.注意:上述方法会存在整数溢出的隐患。 5.整数溢出解决方法1:通过数学运算,将过大的数变小 6.整数溢出解决方法2:使用无符号右移,效率更高 7.二分查找法求查找次数的规律: 奇数二分取中间 偶数二分取中间靠左
阅读全文
浙公网安备 33010602011771号