面试题第四天

53、线程的基本概念、线程的基本状态以及状态之间的关系

 一个程序中可以有多个线程同时执行,一个线程就是一个程序中的一条执行线索,每个线程上都有关联的代码,每个程序至少有一个线程,即主线程。状态:就绪,运行,阻塞,wait和sleep挂起,结束。start方法是线程进入就绪状态,线程调度系统将就绪状态的线程转为运行状态,遇到synchronized后变成阻塞状态,当synchronized获得锁后进入运行状态,调用wait方法挂起,当代码执行往后变为结束状态。

54、简述synchronized和java.util.concurrent.locks.Lock的异同?

 lock能够完成synchronized的功能,synchronized能自动释放锁,而lock需要手工释放必须在finally中释放。并且比synchronized有更加好的性能和功能

55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

 

package test;

public class Login {
	private int i,j;
public static void main(String[] args) {
	Login l=new Login();
	A a=l.new A();
	B b=l.new B();
	for(int i=0;i<2;i++){
		Thread t=new Thread(a);
		t.start();
		t=new Thread(b);
		t.start();
	}
}
public synchronized void dec(){
	i--;
	System.out.println(Thread.currentThread().getName()+"dec"+i);
}
public synchronized void inc(){
	j++;
	System.out.println(Thread.currentThread().getName()+"inc"+j);
}
class A extends Thread{
	public void run(){
		inc();
	}

}
class B implements Runnable{
	public void run(){
		dec();
	}
	}
}

56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。

 

57、介绍Collection框架的结构.

 collection是集合类的上层接口,子接口主要有set list map、

58、Collection框架中实现比较要实现什么接口.

 comparable/comparator

59、ArrayList和Vector的区别

 ArrList是线程不安全,但是查询速度快,vector是线程安全,底层数据结构都是数组结构,都实现了 list接口

60、HashMap和Hashtable的区别

 都实现了Map接口,hashMap(线程不安全)代替了Hashtable(线程安全).hashmap可以空值作为键值对。

61、List和Map区别?

 list存储单列数据,数据有序可以重复,map存储键值对,无序key不可以重复。

62、List,Set,Map是否继承自Collection接口?

 Map不是、

63、List、Map、Set三个接口,存取元素时,各有什么特点?

 List以特定次序来持有元素,可有重复元素。Set无法拥有重复元素,内部排序。Map保存key-value值,value可多值。

64、说出ArrayList,Vector,LinkedList的存储性能和特性

 

65、去掉一个Vector集合中重复的元素

 

66、Collection和Collections的区别。

Collection是集合类的上级接口接口主要有Set ListMap 

Collections是针对集合类的一个帮助类,提供了操作集合的工具方法一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?

 equals();

68、你所知道的集合类都有哪些?主要方法?

 List Map ,方法:get(),iterator..Map: put,remove,contains.

69、两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?

 对的。 如果对象存入到hashmap hashset中,对象值相同,hashcode必定相同,但是如果不是存入到这里,则可以不同、

70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!

 应该是没有针对问题的确切的答案,当前的add方法放入的是哪个对象,就调用哪个对象的compareTo方法,至于这个compareTo方法怎么做,就看当前这个对象的类中是如何编写这个方法的

应该是没有针对问题的确切的答案,

当前的

add

方法放入的是哪个对象,

就调用哪个对象

compareTo

方法,

至于这个

compareTo

方法怎么做,

就看当前这个对象的类中是如何编写

这个方法的

应该是没有针对问题的确切的答案,

当前的

add

方法放入的是哪个对象,

就调用哪个对象

compareTo

方法,

至于这个

compareTo

方法怎么做,

就看当前这个对象的类中是如何编写

这个方法的


71、说出一些常用的类,包,接口,请各举5个

 ActionSupport,BufferReader,BufferWriter,String ,integer,Date,List...........

util,java.sql,lang,jvax.servlet,io..........

List Map Set HttpSession servlet,httpservletREquest,httpservletResponse.............

72、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

 两种,字符流和字节流。字节流继承inputstream,outputstream,字符流继承inputstreamReader/Writer,还存在其他类型的流,为了提高性能和使用方便

73、字节流与字符流的区别

底层设备永远只接受字节数据,

有时候要写字符串到底层设备,

需要将字符串转成字节再

进行写入。字符流是字节流的包装,字符流则是直接接受字符串,它内部将串转成字节,再

写入底层设备,这为我们向

IO

设别写入或读取字符串提供了一点点方便。

字符向字节转换时,要注意编码的问题,因为字符串转成字节数组

底层设备永远只接受字节数据,有时候要写字符串到底层设备,需要将字符串转成字节再进行写入。字符流是字节流的包装,字符流则是直接接受字符串,它内部将串转成字节,再写入底层设备,这为我们向IO设别写入或读取字符串提供了一点点方便。字符向字节转换时,要注意编码的问题,因为字符串转成字节数组

74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。

我们有时候将一个java对象变成字节流的形式传出去或者从一个字节流中恢复成一个java对象,例如,要将java对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们可以自己写代码去把一个java对象变成某个格式的字节流再传输,但是,jre本身就提供了这种支持,我们可以调用OutputStream的writeObject方法来做,如果要让java帮我们做,要被传输的对象必须实现serializable接口,这样,javac编译时就会进行特殊处理,编译的类才可以被writeObject方法操作,这就是所谓的序列化。需要被序列化的类必须实现Serializable接口,该接口是一个mini接口,其中没有需要实现的方法,implementsSerializable只是为了标注该对象是可被序列化的。 例如,在web开发中,如果对象被保存在了Session中,tomcat在重启时要把Session对象序列化到硬盘,这个对象就必须实现Serializable接口。如果对象要经过分布式系统
 tob_id_5043
进行网络传输或通过rmi等远程调用,这就需要在网络上传输对象,被传输的对象就必须实现Serializable接口。

75、描述一下JVM加载class文件的原理机制?

76、heap和stack有什么区别。

77、GC是什么?为什么要有GC?.

78、垃圾回收的优点和原理。并考虑2种回收机制。

79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

80、什么时候用assert。

81、java中会存在内存泄漏吗,请简单描述。.

82、能不能自己写个类,也叫java.lang.String?


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值