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
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?