Java基础面试题(2)
1.抽象类和接口的区别是什么?
有以下几点区别:
1).抽象类里可以有抽象方法,也可有非抽象方法,接口中只能有抽象方法
2).接口中的方法默认的访问修饰符为public abstract,此修饰符可以省略,而
抽象类中的抽象方法必须有abstract修饰
3).抽象类中可以有构造方法,接口中不能有构造方法
4).抽象类只能继承一个父类,而接口可以继承多个接口
2.构造方法能否被重写?能否被重载?
构造方法不能被重写,但可以被重载
3.java中实现多态的机制是什么?
Java实现多态的机制:
1)在一个类中通过方法的重载实现多态
2)通过子类继承父类或者实现接口,子类能够重写父类或接口中的方法
4.Error与Exception有什么区别?
Error是致命性错误,例如JVM错误
Exception是异常,能捕获并进行处理,分为编译时异常和运行时异常, 运行时异常可以使用try.catch,final进行处理,或者通过throw关键字抛出
5.Strings=newString("xyz");创建了几个String对象?
两个,一个是值为“xyz”的对象,一个是指向“xyz”的引用对象s。
6.说说String与StringBuffer的区别
String是不可变的,当要对字符串内容进行修改时,使用String,会在内存中开辟新内存空间,产生新的字符串对象来存储修改后的内容,而使用StringBuffer则不会,它可以直接在原始StringBuffer对象上直接修改字符串内容,然后保存到原始对象中去,不需要重新开辟内存空间,因此如果要频繁修改字符串时,应使用StringBuffer
7.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前
8.列举5个常见的RunTimeException
1)空指针异常:NullPointerException
2)类型转换异常:ClassCastException
3)数据格式化异常:NumFormatException
4)下标越界异常:IndexOutOfBoundsException
5)算术运算异常:ArithmeticException
9.说说ArrayList和Vector的区别
1)Vector是线程同步的,而ArrayList不是线程同步的
2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector的容量会变为原来的两倍,而ArrayList只增加50%的大小,有利于节约内存空间。
10. java中有几种方法可以实现一个线程?
继承Thread类,重写run方法
实现Runnable接口.重写run方法
11. 写一个存储过程,要求传入一个表名,返回该表的记录数(假设传入的表在数据库中都存在)create procedure proc_count(@tabName varchar(15)) -- procedure可以简写成proc
as
declare @sql varchar(200)
set @sql='select COUNT(*) from '+@tabName
exec (@sql) --exec是执行存储过程的关键字
go
12. 使用一条SQL语句找到重复的值及重复的次数:有一数据表ZD_ks,其中有字段BM,MC,。
,请查询出在ZD_ks中BM有重复的值及重复的次数,没有的不要列出。
查询结果如下所示(DUPCOUNT列为显示重复次数的列):
BM DUPCOUNT
001 3
002 2
select BM,count(*) as DUPCOUNT from ZD_ks group byBM having count(*) > 1
13. 编写java程序,产生10个大小在10到20之间(包含10和20)不能重复的随机数并输出
//创建随机数生成器
Random rd = new Random();
int[] arr = new int[10];
for (int i = 0; i < 10; i++) {
arr[i] = rd.nextInt(11) + 10;
for (int j = 0; j < i; j++) {
if (arr[j] == arr[i]) {
i--;
break;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println("第" + (i + 1) + "个数:" + arr[i]);
}
14. Java中访问数据库的步骤,Statement和PreparedStatement之间的区别
Java 中访问数据库的步骤如下:
1)注册驱动;2)建立连接;3)创建Statement;4)执行sql 语句;
5)处理结果集(若sql 语句为查询语句);
6)关闭连接。
Statement是PreparedStatement的父接口,
PreparedStatement的实例被创建时就指定了要执行的SQL语句,SQL语句中可以用
?作为占位符,代表一个参数, Statement的实例被创建时没有指定sql语句,不能使用
?代表参数,PreparedStatement相对于Statement效率更高
李堂春。