1. 请谈谈ArrayList的扩容机制
ArrayList如果使用默认构造方法创建,那么第一次添加元素时将会执行一次扩容操作,ArrayList的扩容其实质上就是数组元素的拷贝,ArrayList在每次执行add()操作时都会检查当前ArrayList大小,如果检查到容量不够了,那么将执行扩容操作。
2. 请简单的介绍一下LinkedList的工作原理
LinkedList的底层实现是一个双向链表,它的底层是以Node类作为一个元素节点,Node中记录了上一个节点是什么元素、下一个节点是什么元素,如果Node是第一个元素则上一个节点则标识为null,如果为最后一个元素则下一个节点标识为null,如果是LinkedList只有一个元素的话,上一个、下一个节点都为null。
3. 请说明ArrayList是否会越界
在并发的业务场景下ArrayList是可能会导致越界的,因为ArrayList的底层实现是一个数组,而且ArrayList还是线程不安全的,故可能会发生越界。
4. 请解释为什么集合类没有实现Cloneable和Serializable接口?
Cloneable与Serializable分别是为了实现对象克隆与序列化,虽然集合类没有实现这两个接口但是他的实现类对这两个接口进行实现的,因为父类不能够知道子类中哪些成员是需要序列化的,通过子类实现能够更加灵活。
5. 如果现在请求数达到10000服务器1分钟之内只能处理1000个请求,你怎么实现?
最简单的做法是进行限流操作,可以通过令牌桶算法,将那些获得令牌的请求给予放行,将那些没有获得令牌的请求快速返回错误信息。