牛客腾讯云几个问题
ArrayList是线程安全的吗?
不是。
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
// transient是防止序列化,因为它自己实现了writeObject序列化方法,这个数组里有空元素。
transient Object[] elementData;
/**
* 列表大小,elementData中存储的元素个数
*/
private int size;
}
怎么搞成线程安全的?
- 直接会修改元素的方法加
synchronized
。 - 或者使用Vector,stack线程安全的类。
Hashtable是线程安全的,它的每个方法中都加入了Synchronize方法。
多态
同一个行为具有多个不同的表现形式。
一个接口,使用不同的实例而执行不同的操作。
接口和抽象类
- JDK8之后,都可以有静态方法、默认方法。
- 接口的成员变量,
public static final
- 继承只能有一个
操作系统是怎么调用进程
线程,进程,协程之间什么区别
进程:资源分配的基本单位,每个进程有自己独立的内存空间。
线程:它是进程里面的一个实体,是CPU调度的基本单位,一个进程可以有多个线程,并且同一个进程里面的多个线程共享一个内存空间,也就是它在切换的时候,CPU TLB(地址转换旁路缓冲器)里面的缓存不会失效。拿到一个虚拟页之后,会查找TLB找对应的物理地址,这个是通过硬件查找映射的,速度很快,如果查找不到就需要根据页目录来查找了,这个就需要经过内存,而CPU缓存和内存之间的差距是成好几个数量级的。
协程:它是用户态的轻量级线程,协程调度由用户控制,一个线程可以有多个协程。它没有内核切换的开销。
内存16g,假设qq号长度为2的32次方,怎么设计返回在线状态的接口。
qq号都是数字,可以通过位图读取。
位图、计算大小,输入文件,结合位图。