面试题上 :上半部分面试题
16.接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?
- 接口可以继承接口
- 抽象类可以实现接口
- 抽象类可以继承具体类也可以继承抽象类
17.Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?
都可以
18.内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
可以引用,包括私有属性
19.Java 中的final关键字有哪些用法?
- 修饰类,不能被继承
- 修饰方法,不能被重写
- 修饰属性,不能改变值(常量);
20.下面程序的运行结果
class HelloA {
//构造方法
public HelloA() {
System.out.println("Hello A!父类构造方法");
}
{
System.out.println("i'm A class.父类非静态代码块");
}
static {
System.out.println("static A 父类静态代码块");
}
}
public class HelloB extends HelloA {
//构造方法
public HelloB(){
System.out.println("Hello B! 构造方法");
} //非静态代码块
{
System.out.println("i'm B class.非静态代码块");
} //静态代码块
static{
System.out.println("static B 静态代码块");
}
public static void main(String[] args) {
System.out.println("---start---");
new HelloB();
new HelloB();
System.out.println("---end---");
}
}
执行结果:
static A 父类静态代码块
static B 静态代码块
---start---
i'm A class.父类非静态代码块
Hello A!父类构造方法
i'm B class.非静态代码块
Hello B! 构造方法
i'm A class.父类非静态代码块
Hello A!父类构造方法
i'm B class.非静态代码块
Hello B! 构造方法
---end---
21.如何实现字符串的反转及替换
public static String reverse(String originStr) {
if (originStr == null || originStr.length() <= 1)
return originStr;
return reverse(originStr.substring(1)) + originStr.charAt(0);
}
22.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?
会,在返回结果前调用,如果finally中修改了返回值,则返回修改后的值.
23.运行时异常与受查异常有何异同
- 运行时异常没有要求捕获
- 受查异常要求捕获或抛出异常
24.List、Set、Map是否继承自Collection接口?
不是,List,Set 继承自Collection接口 ,Map不是
25.阐述ArrayList、Vector、LinkedList的存储性能和特性
扫描二维码关注公众号,回复:
9546845 查看本文章
- ArrayList : 基于数组实现,性能较高,非线程安全,插入删除慢,索引快
- Vector : 基于数组实现,性能低,线程安全
- LinkedList : 基于链表实现,性能较高,非线程安全,插入删除快,索引慢;
26.Collection和Collections的区别?
- Conllection 是一个接口
- Conllections 是一个工具类,辅助容器类操作,有排序,搜索,线程安全化
27.Collections工具类中的sort()方法如何比较元素?
一种是传入容器对象
另一种是传入容器对象后,还必须传入Comparator子类的compare()方法
28.Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别?
- sleep(),交出cpu,不会释放锁
- wait(),释放锁,进入等待池,等待notify()
29.线程池基本状态
30.synchronized和java.util.concurent.locks.Lock的区别
- 相同点:Lock能实现synchronized的所有功能
- 不同点:Lock性能好于synchronized,不强制要求获取锁.synchronized会主动释放锁,Lock需要手工释放锁,最好在finally中释放