基础和API面试题简答

  • 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最简单的设计模式之一,属于创建型模式,他提供了一种创建对象的最佳方式,这种模式涉及到一个单一的类,该类创建自己的对象,同时确保只有单一对象被创建,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

猜你喜欢

转载自www.cnblogs.com/luojie1216/p/10764806.html