面试试答0411
ArrayList 和 LinkedList 的区别,添加元素的时间复杂度
my:ArrayList 的底层是数组,LinkedList 的底层使用链表。添加元素 Arraylist 是O(1),LinkedList 是 O(1)。
answer: ArrayList 基于数组,需要连续内存。由于基于数组,随机访问快。Arraylist 尾部插入删除都是O(1),其他部分插入删除需要移动数据,复杂度为O(n)。由于使用连续内存,可以利用 CPU 缓存的局部性原理。 LinkedList 基于双向链表,无需连续内存。随机访问慢。头部及尾部插入、删除性能高,由于需要额外维护两个指针,所以占用内存多。
什么时候重写 hashcode() 和 equals()
my:当这个对象需要表达具体业务逻辑的时候。当对象的某几个变量相等时就可认为这两个对象是同一个。如果要重写 equals(),一定也要重写 hashcode()。
如果一个对象要被放入哈希容器中,那么哈希容器的操作需要使用对象的hashcode()
方法,这时候就需要重写对象的hashcode()
方法,让哈希容器能够正常工作。比如String
,Integer
这些包装类,都已经重写了hashcode()
。
线程池的参数如何作用?如果核心线程数=5,最大线程数=15,阻塞队列=10,来了6个任务,会创建几个线程
my:核心线程数是最少保留的线程数,如果核心线程数被占满,新任务会先进入阻塞队列,阻塞队列满后才会继续创建线程。
Linux 文本去重命令
my:不知道 answer:uniq,没啥意思,不学了
什么是分布式事务,分布式事务如何保证数据一致性
redis的过期策略
my:
answer: redis 主要使用了惰性过期和定期删除两种策略。redis 过期策略
redis 的内存淘汰策略
my:默认的是LRU,可选FIFO,最近最久未使用
annswer:redis 内存淘汰策略
kafka 如何保证消息的可靠性
my:重复读取,zookeeper 保存偏移量,单节点下线后的选举机制
answer:
堆排序流程,时间复杂度,建堆的时间复杂度
my:查询的时间复杂度O(logn)
。建堆的时间复杂度O(n)
answer:堆排序
Linux 的磁盘管理
my:不懂 answer:没啥意思,不看了
Linux 有哪些进程通信方式
my:不懂 answer:Linux 进程通信
Linux的共享内存如何实现
my:不知道 answer