写点什么

Java 基础重要面试题(二)

作者:逆锋起笔
  • 2022 年 3 月 16 日
  • 本文字数:1284 字

    阅读完需:约 4 分钟

Java基础重要面试题(二)

以下 5 个问题是环环相扣的,面试官步步紧逼,考察你的基本功,如果你回答的好,那第一印象最起码是不错的。


说说你对泛型的了解?

泛型是 jdk5.0 版本出来的新特性,它的引入主要有两个好处:


一是提高了数据类型的安全性,可以将运行时异常提高到编译时期,比如 ArrayList 类就是一个支持泛型的类,这样我们给 ArrayList 声明成什么泛型,那么他只能添加什么类型的数据。


第二,也是我个人认为意义远远大于第一个的就是它实现了我们代码的抽取,大大简化了代码的抽取,提高了开发效率。比如我们对数据的操作,如果我们有 Person、Department、Device 三个实体,每个实体都对应数据库中的一张表,每个实体都有增删改查方法,这些方法基本都是通用的,因此我们可以抽取出一个 BaseDao,里面提供 CRUD 方法,这样我们操作谁只需要将我之前提到的三个类作为泛型值传递进去就 OK 了。而数据的安全性,其实程序员本身通过主观意识是可以避免大部分场景的,何况某些情况下,我们还真的想在 ArrayList 中既添加 String 类型的数据又添加 Integer 类型的数据。

你知道 Java 的继承机制吗?

java 是单继承,不支持多继承,这就是面向对象思想的体现,一个子类应该只有一个父类,而不是多个。那么 Java 是如何解决需要多实现场景的需求呢?Java 的多实现接口机制就是,很多问题我们可以通过定义接口,这样哪里需要都可以集成,而且不同接口负责不同功能,完全可以多实现呀。

那你知道 java 为何这样设计吗?

为何 Java 这样设计,其实这也是我一直的一个小疑惑。不过我是这样理解的。举个例子,加入可以多继承,那么一个类继承了类 A 和类 B,A 和 B 都有一个 C 方法,那么当我们在用子类对象调用 C 方法的时候,jvm 就晕了,因为他不能确定你到底是调用 A 类的 C 方法还是调用了 B 类的 C 方法。而多实现就不会出现这样的问题,假设 A 和 B 都是接口,都有 C 方法,那么问题就能解决了,因为接口里的方法仅仅是个方法的声明,并没有实现,子类实现了 A 和 B 接口只需要实现一个 C 方法就 OK 了,这样调用子类的 C 方法时,Java 不至于神志不清。从另外一个方面考虑的话应该就是 Java 是严格的面向对象思想的语言,一个孩子只能有一个亲爸爸。

Java 的异常体系你知道吗?

顶层是 Throwable 接口,往下分了两大类,一个 Error,另一个是 Exception。前者大多是一些系统问题,当发生时,说明基本是故障了,已经无法继续工作了,属于严重性的。


Exception 又分为检查异常和运行时异常。前者是编译器在运行之前就会排查到,比如:NoSuchMethodException,后者在程序运行的过程中会出现,比如:ArrayIndexOutOfBoundExceptionNullPointException等,实际开发中我们遇到的很多线上问题,也都是属于后者居多,这就需要我们的开发经验越来越多,慢慢提高开发技能。

那你知道这两类异常的区别吗?

java 的命名是见名知意的。从名字上我们也知道 RunntimeException 就是运行时异常,在运行的时候才能被 jvm 发现最终导致程序的终止,而 Exception 必须进行 try、catch 处理,或者在方法上用 throws 声明。


大家好,我是一名正在学习 Java 的程序员,博客内容首发公众号推荐学java,感兴趣的朋友微信搜索关注,功夫不负有心人,每天保持学习,掌握一项技能其实用不了多长时间,加油!

发布于: 刚刚阅读数: 2
用户头像

逆锋起笔

关注

公众号「逆锋起笔」主理人 2018.07.31 加入

程序视角,转射人生!

评论

发布
暂无评论
Java基础重要面试题(二)_java面试_逆锋起笔_InfoQ写作平台