- 1.静态变量和实例变量的区别?
1.静态变量前面加static,实例变量不用。
2.程序运行时,实例变量必须创建了实例对象,才会被分配空间,才可以使用实例变量。静态变量不用创建任何实例对象就会被分配空间,就会被调用。
3.实例变量必须创建对象后才可以通过这个对象调用,静态变量则可以直接使用类名来调用
- 2.HashMap和Hashtable的区别?
1.HashMap是非同步的,在单线程环境下比Hashtable快。
2.迭代器不同,HashMap是fail-fast的Hashtable不是。
3.HashMap不能保证随时间的推移其中元素的次序不变
- 3.能将int强制转换为byte类型的变量吗?如果该值大于byte类型的范围,将会出现什么现象?
能,超出的部分会被丢弃。
- 4.创建线程的方式及实现?
1.继承Thread类。
实现:创建Thread类的子类并重写Thread类的run方法,通过创建该类的子类对象,获取线程对象,调用线程对象的Start()方法启动线程。
2.实现Runnable接口:
实现:定义Runnable接口的实现类并重写run方法,创建实现类的对象,并一次Runnable对象作为Thread的taget创建Thread对象,即线程对象调用start()方法启动线程。
3.实现callable接口。
- 5.什么是线程安全?如何保证线程安全?
线程安全:就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问,直到该线程读取完,其他线程才能使用,不会出现数据不一致或者数据污染。
1.同步代码块
2.同步方法
3.lock锁
- 重入锁的概念。重入锁为什么可以防止死锁?
可重入锁:可重复可递归调用的锁,在外层使用锁之后,在内层仍可使用,并且不发生死锁。
tryLock(),只有在获取到锁时,才会返回true,可轮训和可限时可以规避死锁。
- 排序的几种方法,请写出一种来?
冒泡排序:
function test(arr){
var len=arr.length;
for(var i=0;i<len.length;i++){
for(var j=0;j<len-1-i;i++){
if(var[j]>var[j+1]){
var temp=arr[j+1];
var[j+1]=var[j];
var[j]=temp;
}
}
}
return arr;
}
- 同步和异步的区别?
同步:功能调用时,没有得到结果之前,该调用不返回或继续执行后续操作,
异步:当一个异步过程调用时,调用者来没有得到结果前,就可以执行后续操作,调用的返回不受调用者的控制.
- Http的请求协议和方式?区别?
HttpRequest :获取请求 ;HttpResponse:响应请求
GET:向特定资源发出请求。
POST:向特定资源提交数据进行处理请求。
- 单列模式
Java最简单的设计模式之一,属于创建型模式,他提供了一种创建对象的最佳方式,这种模式涉及到一个单一的类,该类创建自己的对象,同时确保只有单一对象被创建,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。