人手一份的Java面试精选题,你值得拥有!

开课吧开课吧锤锤2021-03-31 17:41

点赞
有用
分享分享

    对Java面试而言,面试前的准备一定要有面试题收集和学习这一项,因为在招聘公司看来,对Java工程师职位的最大关注就是专业知识和技能水平的考察,所以程序员去公司面试,无论怎样都要先做一套面试题。对于不同级别的程序员岗位的应聘,相应的面试题难度肯定是不一样的,今天这篇文章总结了一些中级Java工程师面试题。

Java

    为什么使用不同的引用类型呢?

    回答:与C语言不同,我们可以控制内存的申请和释放,在java中,有时我们需要控制回收对象的合适时间,因此产生了不同的引用类型,可以说不同的引用类型实则是GC回收时间无法控制的折衷方案,下面2个使用场景可以很好地说明:

    使用软引用和弱引用可以解决OOM问题:使用HashMap可以保存图片路径与与对应图片对象相关的软引用之间的映射关系,当内存不足时,JVM可以自动恢复这些缓存图片对象所占的空间,有效避免OOM问题。

    第二种方法是通过软引用实现对java对象的高速缓存:例如,我们创建了一个Person类,当每次需要查询某个人的信息时,即使是在几秒内之前就查询了,也要重新构建实例,这会消耗大量的Person对象,而且由于这些对象的生命周期相对较短,会造成很多GC影响性能。现在,通过软引用和HashMap的结合,高速缓存可以被构建,从而提供性能。

    final,finalize和finally之间有什么区别呢?

    回答:final是一个可以修饰变量,方法和类的修饰符。如果final修饰一个变量,表示这个变量的值在初始化之后不能改变。Finalize方法是在回收对象之前调用的方法,它允许对象自己最后一次复活,但不保证何时调用finalize。finally是用于处理try和catch的一个关键字。不管try块中是否出现异常,都将执行finally块。

    深拷贝与浅拷贝有何不同?

    浅拷贝:被复制对象的所有变量都包含与原始对象相同的值,并且其他对象的所有引用仍然指向原始对象。换句话说,浅复制只是复制了要考虑的对象,而没有复制它引用的对象。

    深度复制:被复制对象的所有变量都包含与原始对象相同的值,而那些引用其他对象的变量会指向新的被复制对象,而不会指向原始对象。换句话说,deepcopy将复制被复制对象所引用的所有对象。

    什么是编译器常量呢?这有什么危险呢?

    回答:publicstaticfinal是一个公共静态不可变的变量,也就是我们所谓的编译期常量,public在这里是可选的。事实上,在编译时这些变量将被替换,因为编译器知道这些变量的值,而且它们在运行时不能被更改。这样做的一个问题是,您在内部或第三方库中使用了公共编译时间,但此值后来被其他人更改,但您的客户端仍在使用旧的值,甚至您已经部署了新的jar。要避免这一点,请确保在更新依赖JAR文件时重新编译程序。

    假如您对大厂的面试题有兴趣,不妨点击下面的图片,免费领取。

Java

    申请中级Java工程师职位的朋友一定要记得回顾一下Java的基本知识,学习是永无止境的,资料越多,学到的越多,技能也就越多,这样在面试哪家公司时都能很好的把握。

有用
分享