环环相扣的 5 个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
,后者在程序运行的过程中会出现,比如:ArrayIndexOutOfBoundException
、NullPointException
等,实际开发中我们遇到的很多线上问题,也都是属于后者居多,这就需要我们的开发经验越来越多,慢慢提高开发技能。
那你知道这两类异常的区别吗?
java的命名是见名知意的。从名字上我们也知道 RunntimeException 就是运行时异常,在运行的时候才能被jvm发现最终导致程序的终止,而Exception 必须进行 try、catch处理,或者在方法上用 throws 声明。
大家好,我是一名正在学习Java的程序员,功夫不负有心人,每天保持学习,掌握一项技能其实用不了多长时间,加油!
- 点赞
- 收藏
- 关注作者
评论(0)