JAVA面试题(2)
一、session超时时间
web.xml中的session-fonfig配置节中
session.setMaxInactiveInterval(int arg);
二、jsp内置对象
request、response、session、application、out、pageContext、page、config、exception
三、访问修饰符作用域
当前类 同一package 子类 其他package
public ok ok ok ok
protected ok ok ok no
friendly ok ok no no
private ok no no no
不写时默认为friendly
四、i++和++i的区别
public static void main(String[] args) {
int i=0;
System.out.println(i++);//后自增,输出后i=i+1;输出0
i++;//i=2
System.out.println(i);//输入出为2
System.out.println(i++);//输出2后,i=3
System.out.println(++i);//前自增,输出i=4
System.out.println(i);//i=4
}
输出结果为
0
2
2
4
4
五、Abstract类是否可以继承实体类?
可以,但是实体类必须有默认的不带参数构造函数
六、JNDI
Java Naming and Directory Interface,命名服务和目录服务访问API
七、JDBC
Java Data Base Connectivity
八、==和equals
String str1 = "abcdefg";
String str2 = "abcdefg";
String str3 = new String("abcdefg");
System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str1.equals(str3));
System.out.println("ABCDEFG".toLowerCase()==str1);
System.out.println("abcdefg".toLowerCase()==str1);
输出
true
false
true
false
true
九、
public static void append(String str){
str += " Append!";
System.out.println(str);
}
public static void main(String[] args) {
String z="abc";
append(z);
System.out.println(z);
}
输出结果
abc Append!
abc
十、final,finally,finalize的区别
类被声明为final则该类不能被继承
方法声明为final则子类不能被覆写,但可以重载
类属性被声明为final则必须赋值
方法参数被声明为final则不能被重新赋值
finally是try catch的后续操作
finalize()是方法体垃圾回收
十一、列举几种java产生对象实例的方式
new
Class.forName("").newInstance();
proxy
clone
反序列
十二、switch case可以接受的参数类型
可以接受 char、int、short、byte
不能接受 long、String
short key=-20000;
switch (key) {
case 1:{
break;
}
default:
break;
}
十三、Error与Exception有什么区别?
Error类和Exception类都继承自Throwable类
Exception包含可被控制(checked) 或不可控制的(unchecked),是应用程序级异常。
Error总是不可控制的(unchecked) ,是系统级错误。
十四、数组拷贝
System.arraycopy(Object fromArray,int fromIndex,Object toArray,int toIndex,int number);
十五、Comparable和Comparator区别
java.lang.Comparable接口的compareTo(Object obj)方法是比较this和obj对象,对比的对象需要实现此接口。
java.util.Comparator接口的compare(Object obj1,Object obj2)方法是比较obj1和obj2对象,对比的对象不需要实现此接口。
java.txt.Collator是java.util.Comparator接口的一个实现,实现了根据本地化来进行比较String字符串。
十六、数组、List排序
java.util.Arrays.sort(Object[] obj);//元素必须实现Comparable接口
java.util.Arrays.sort(Object[],java.util.Comparator);//元素不需要实现Comparable接口,提供外部对比器
java.util.Collections.sort(List list);//元素必须实现Comparable接口
java.util.Collections.sort(List list,java.util.Comparator);//元素不需要实现Comparable接口,提供外部对比器
十七、常见排序算法
冒泡排序、插入排序、选择排序、快速排序等
十八、JVM的堆栈的概念
heap(堆)存放new出来的对象
stack(栈)存放局部变量
十九、static方法是否可以继承、覆盖
可以
二十、ArrayList Vector LinkedList 区别
ArrayList 和Vector是采用数组方式存储数据
Vector是线程安全的
Vector 缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%
LinkedList提供带有链表功能的List
ArrayList 的查询效率比较高,增删动作的效率比较差,适用于查询比较频繁,增删动作较少的元素管理的集合。
LinkedList 的查询效率低,但是增删效率很高。适用于增删动作的比较频繁,查询次数较少的元素管理集合。