1. Integer i = new Integer(3);
switch(i){
case 1:
System.out.println(i);
break;
case 3:
System.out.println(i);
break;
default:
System.out.println("error");
break;
}
上面代码会出现什么情况:编译出错、输出3、输出error。
分析:思考了一下,按照定义switch里面的数据只能是byte,char,short,int还有新加入的String类型,Integer是包装类,跟上面提到的那几种类型还是有很大的区别的。所以按照原理来说编译是会报错的,除非使用Integer的intValue()函数返回一个int型,否则会有异常的。但是用eclipse里面编译运行了一下,发现居然能够输出结果为3,没报错。顿时感觉不科学,之后对.class反编译了一下,发现switch里面就是变成了,i.intValue(),也就是说编译器自动将包装类的对象编译成了i.intValue(),这是一个整形,所以能正常运行。
2.java的类用public、default、protected、private 修饰时的访问范围。
3.java的泛型是什么,和其他语言的泛型比起来有什么优势。
泛型即广泛的类型,类型不受约束,容器可以装入任意类型的数据。
4.字符流和字节流的区别是什么,涉及到的类是什么。
字节流最小单位是字节,字符流最小单位是字符,字节流针对的范围广。字节流相关类InputStream,FileInputStream,OutputStream,FileOutputStream。字符流相关类writer,FileWriter,Reader,FileReader.
5.用java实现快排算法。
6.java多线程,用两个线程交叉输出字符串,要求使用线程通信。
7.不属于java 同步的函数,wait() sleep() notify() lock()。
8.写一个sql分别选出男生女生成绩排在前三名的人。
分析:本题主要考union关键词,用一个sql选出男女前三名的同学,(select name,gender,grade from stu order by grade where gender = 'male' limit 0,3) union (select name,gender,grade from stu order by grade where gender = 'famale' limit 0,3)
9.调用gc时,为什么应用程序会卡顿一下,gc调优有哪些。
分析:本题需要掌握gc的基本知识,否则没法答。jvm内存里面分为4个区域 堆区,栈区,本地方法区,方法区,堆区里面又分为很多区,新生代区,持久区,老生代区,线程大多数生命都比较短暂多处在新生代区,gc新生代区的线程比较频繁,并且时间较短,没被gc掉的线程就会移入下一个区,最终会有少数线程处在老生代区中。而gc的时候如果使用stop-the-world方式,heap会被冻结,对象也会停止,表现出来就是卡顿。
栈区里面多放的是临时变量和中间结果,本地方法区支持native方法,存储了每个native方法的调用状态,方法区里面放置了加载类的信息,静态变量,final类型的变量等信息。
10.jvm的基础知识。
11.字符串反转。
参考StringBuffer的reverse()函数
12.在保存原字符秩序不变的情况下,去除字符串里面重复的字符。
存入TreeSet 然后取出,这是目前知道的最简洁的方法。