java面试题目
1.Java中的异常处理机制的简单原理和应用。
当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。
2. 垃圾回收的优点和原理。并考虑2种回收机制。
Java语言中一个显著的特点就是引入了垃圾回收机制,由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
3. 请说出你所知道的线程同步的方法。
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
输入一组数,排序后输出
//输入一组数,排序后输出 public static void main(String[] args) { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入一组数字,中间有空格分开"); try { String str = buf.readLine(); Set<Integer> set = new HashSet<Integer>(); String[] arr = str.split(" "); for(String s: arr){ System.out.print(s + " "); set.add(Integer.parseInt(s)); } Iterator<Integer> it = set.iterator(); while(it.hasNext()){ System.out.println(it.next() + " "); } } catch (IOException e) { e.printStackTrace(); } }
输出文件夹目录
public static void main(String[] args) { File file = new File("D:" + File.separator + "software"); fun(file); } //遍历文件夹目录 public static void fun(File file){ if(file.isDirectory()){ File[] files = file.listFiles(); if(files != null){ for(File f:files){ fun(f); } } } else { System.out.println(file.toString()); } }