Java核心技术--杨晓峰专栏学习总结

主要面试层面来组织

一、 Java平台的理解、编译解释执行的理解

Java平台的理解

1、跨平台特性(Java编译解释执行)

.java文件通过JDK中的Javac编译为 .class字节码文件通过JVM解释为二进制机器码
编译解释执行—这个过程中,会有JIT也就是动态编译器将频繁使用到的代码,直接编译为二进制机器码;后来的AOP会直接将全部代码编译为机器码

2、垃圾回收机制

内存空间+堆中的GC回收方法

二、Exception和Error区别

1、Exception和Error的关系

补张图关系图

扩展:
ClassNotFoundException:通过反射机制class.forName()动态加载类,但是路径中没有。
**NoClassDefFoundError:**编译时类信息还有,但是运行时类定义信息就没有了,常见情况就是打包丢失了部分文件。

2、Exception的处理

异常捕获尽量具体
不要生吞异常

三、final、finally、finalize区别

final:变量、方法、类
finally:保障重点代码一定会被执行
finalize:在GC之前完成某些特定资源的回收

四、强引用、软引用、弱引用、虚引用

强引用:GC不回收
软引用:OOM之前会被清除
弱引用:用来做缓存,对象存在就使用;不存在就重新创建
虚引用:被finalize之后,用来实现清理的某些机制

五、String、StringBuffer、StringBuilder

回答思路:从可变 新对象的产生 线程安全问题-----是否频繁拼接、修剪产生新对象引出abstractStringBuilder------是否考虑安全 多线程中使用StringBuffer ,单线程中使用StringBuilder

六、动态代理原理

目前没有找到想要的答案
反射

运行时可以访问类的属性、方法;调用类的属性和方法;修改类的定义
也就是说,利用Java的反射机制可以加载一个运行时才得知名称的class,获得其构造方法,生成其对象实体,能对其设值并唤起其method。

七、Int Integer

回答方法是:基本类型 适合运算
包装类型 适合业务操作+弥补计算能力的不足,使用value of缓存机制弥补
具体: 原始数据类型和Java泛型不能配合使用,所以设计了自动装箱和自动拆箱,本质是primitive value 和 object之间的隐式转换机制。Primitive value存储的在内存中的位置就是值,而Object 存储的是reference 需要找下一个内存空间,需要更多的IO,所以计算性能比原始类型差,但针对于业务问题,Object具有generic的能力。总结就是计算问题使用原始类,处理业务问题用Object,为弥补计算能力不足问题,设计了static valueOf()方法提供缓存机制

八、Vector ArrayList LinkedList

回答方式
总说:都是元素可重复的有序List集合
分点:底层结构、增加删除的操作时间复杂度、查找的时间复杂度、线程是否安全

深入刨析:ArrayList LinkedList底层的源码分析—很简单,自己可以看懂

九、HashMap HashTable TreeMap

回答方式:
总说:都位于Map集合下
分说:键值可不可以用null、容量、线程安全

深入刨析:HashMap底层源码的实现
这个博主讲的很好:HashMap源码解析

十、ConcurrentHashMap底层源码的实现

深入刨析:ConcurrentHashMap源码实现
目前没有看到特别合适的讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值