每日面试题: 2024-03-25
每日面试题:2024-03-25
ArrayList
和 LinkedList
的区别
ArrayList 内部是使用数组中实现,其内存空间是连续的,其占用的内存相对较小,可能会产生内存碎片。其支持快速的随机访问。其时间复杂度是O(1)
LinkedList 使用双向链表实现的,其内存空间不是连续的,其占用的内存空间相对比较大支持频繁的插入和删除操作,其时间复杂度是O(n)
如何在2G的文件中,找出 Top100的高频单词
- 将文件拆分成若干个小文件。etc.拆分成 2048个 512K的文件
- 定义一个文件个数的
Hash
表 - 使用多线程读取解析这2048个文件,将每个文件的中单词对2028进去取模运行,将其存入到对应的
Hash
槽中 - 将全部文件解析完毕之后,遍历这个
Hash
表,将频率前100的单词存入到小顶堆
为什么阿里的开发手册强制使用包装类型
- 默认值的问题,基本数据类型有默认值
- 装箱和拆箱问题,如果使用基础数据类型定义类型,会进行频繁的进行拆箱和装箱,带来不必要的开销
- Java中泛型支持的对象数据类型,如果是基本数据类型作为元素类型,则需要将其装箱成包装数据类型
- 包装数据类型因为是对象,所以它提供了很多使用的方法,etc.
#equals #hashCode
等方法,这些方法在特定场景比较有用