Java基础面试题16~30

面试题上 :上半部分面试题

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的存储性能和特性

  • 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中释放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值