今日面经

1.如何理解封装多态
2.一个成环链表怎么判断他是否成环可以用哪个数据结构
3.你知道Java 内存模型(JMM)吗
4.一个i如果多个线程去访问那访问的这个i是本体还是副本
5.通常情况下如果i被修改那其他线程可不可见
6.那到底是本体还是副本
7.反问环节

1.我理解的封装就是把一些属性还有方法包装成一个类然后暴露出接口去获取设置属性还有调用用方法,多态就是比如同一个接口又不同的类去实现根据需要可以表达出不同的功能就好比一个技能接口
由我来实现就是喷火由另一个人来实现就可能是斩杀
2.首先成环链表可以遍历链表然后将value存入Hashset(),根据Hashset()不能存同一个key的原则当遍历到相同的值时就会断开循环担有一个问题就是循环链表完全有可能存两个相同的值
3.(我面试时不清楚) JMM其中包括主内存和工作内存属性值存在主内存中线程不能在住内存中去修改属性的值每个线程都有一个干工作内存其中工作内存中都有一个属性的副本其中这就引出了可见性的问题也就是当一个线程修改了这个值后其他线程可以立马看见最新的值可以由比如volatile关键字还有scychnorized关键字来实现还有就是原子性可以由scychnorized锁来实现然后就是有序性因为编译器还有cpu为了提高性能会进行指令重排其中有序性就是禁止指令重排
4.副本
5.通常情况下是不可见的
6.副本

posted @ 2026-06-12 17:29  千砂  阅读(9)  评论(1)    收藏  举报