80%大厂必问的面试题,附答案,1442面试

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

虽然 WeakReference 与 SoftReference 都有利于提高 GC 和 内存的效率,但是 WeakReference ,一旦失去最后一个强引用,就会被 GC 回收,而软引用虽然不能阻止被回收,但是可以延迟到 JVM 内存不足的时候。

为什么要有不同的引用类型

不像C语言,我们可以控制内存的申请和释放,在Java中有时候我们需要适当的控制对象被回收的时机,因此就诞生了不同的引用类型,可以说不同的引用类型实则是对GC回收时机不可控的妥协。有以下几个使用场景可以充分的说明:

利用软引用和弱引用解决OOM问题:用一个HashMap来保存图片的路径和相应图片对象关联的软引用之间的映射关系,在内存不足时,JVM会自动回收这些缓存图片对象所占用的空间,从而有效地避免了OOM的问题.

通过软引用实现Java对象的高速缓存:比如我们创建了一Person的类,如果每次需要查询一个人的信息,哪怕是几秒中之前刚刚查询过的,都要重新构建一个实例,这将引起大量Person对象的消耗,并且由于这些对象的生命周期相对较短,会引起多次GC影响性能。此时,通过软引用和 HashMap 的结合可以构建高速缓存,提供性能。

Java中==和equals()的区别,equals()和hashcode()的区别及联系

==是运算符,比较两个变量是否相等,而equals是Object类的方法,用来比较两个对象是否相等。

默认equals方法比较两个对象的地址,此时结果相同,如果要比较内容,则要重写equals方法

hashcode()是Object类的一个方法,返回一个hash值,如果equals()相同则hashcode()相同,反之不然。

有没有可能两个不相等的对象有相同的hashcode

有可能,两个不相等的对象可能有相同的hashcode值,只就是hashmap中会有冲突,如果对象相等,则hashcode相等,反之不然

可以在hashcode中使用随机数字吗

不可以,hashcode必须是相同的值

a==b与a.equals(b)有什么区别

如果a和b都是对象,a==b比较的是引用,只有当a和b指向堆中同一个对象才会返回true,而a.equals(b)进行逻辑比较,通常呀哦重写该方法提供逻辑性一个的比。

3*0.1==0.3返回值是什么

false,因为有些浮点数不能精确的表示出来

a=a+b与a+=b有什么区别吗

+= 操作符会隐式转换,例如下题

short s1 = 1;s1 = s1 +1;该代码是否有错误,如果有错误怎么修改

有错误,s1 = (short)(s1+1);

short s1 = 1;s1+= 1是否有错误,如果有错误怎么修改

+=操作符会自动对右边的表达式结果强转匹配左边的数据类型,所以没错

&与&&的区别

前者是位操作,后者是逻辑运算符

一个Java内部可以有类?(非内部类)

一个Java内部只能有一个public的类,可以有多个default的类

如何正确的退出多层嵌套循环

使用标号和break;

内部类的作用

内部类提供了更好的封装,除了该外围类,其他类都不能访问

final,finally,finalize的不同之处

fianl是一个修饰符,可以修饰类,方法,变量的。finally是一个关键字,捕获异常是与try连用的,一定会执行。finalize是在对象被回收之前调用的方法,给对象自己最后一个复活的机会,但是什么时候调用finalize没有保证

clone()是哪个类的方法

java.lang.Cloneable的一个标示性接口,不包含任何方法,clone方法在object中定义,clone()方法是一个本地方法,是由c或c++实现的

深拷贝和浅拷贝的区别是什么

浅拷贝:仅仅复制所考虑的对象,而不复制它引用的对象

深拷贝:所有的对象都复制

static有哪些用法

静态变量和静态方法,被类实例所共享。

静态块,初始化操作。

修饰内部类,为静态内部类

导包,指定导入某个类中的静态资源,并且不需要使用类名

final有哪些用法

被final修饰的方法不能被继承,修饰的方法不能被重写,修饰的变量不能被改变。被final修饰的方法,JVM会尝试将其内关联,以提高运行效率,被修饰的变量会在编译阶段存在常量池中。

编译器对final域要遵守两个重排规则:

1,在构造器内对一个final域的写入,与随后把这个构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序

2,初次读一个包含final域对象的引用,与随后初次读这个final域,这两个操作之间不能重排序

作为阅读福利我整理了一些Java面试真题,希望大家都能拿下心仪的offer,需要的可【点击此处】获得!

最后

码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到

又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考

以下是部分内容截图
架构面试专题及架构学习笔记导图.png

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-qaYifdgl-1713435322673)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值