java面经汇总

这篇博客详细总结了Java的基础知识,包括JVM、代理模式、集合、并发编程和内存模型等方面。讲解了Java中值传递的原理,JVM的执行过程,以及各种数据结构如ArrayList和HashSet的实现细节。还深入探讨了并发容器如ConcurrentHashMap和CopyOnWriteArrayList的实现,以及并发控制如AQS和CountDownLatch的应用。此外,文章还涉及了线程池的工作原理和锁的实现机制。
摘要由CSDN通过智能技术生成

Java基础

  • 什么是字节码?
    jvm可以理解的代码(.class文件)
    Java代码从源代码到运行过程:
    java代码 -> javac编译器->.class字节码文件 -> 解释器&JIT(运行时编译器)->机器码
    JIT编译器会将热点代码的机器码保存下来
  • 什么是AOT编译模式
    直接将字节码编译成机器码,避免了JIT预热的时间,为什么不全部使用AOT,和Java语言的动态特性有关,有些技术需要修改.class文件
  • Java执行过程
  • 在这里插入图片描述
  • 成员变量和局部变量
    成员变量如果没有赋初始值会自动赋默认值,局部变量如果没有赋初始值则不会自动赋值
  • 重载和重写的区别
  1. 重载同一个类(或者子类和父类之间),方法名相同,参数类型不同,个数不同,顺序不同,放回值和修饰符可以不同
  2. 重写发生在运行期,是子类对父类允许访问的方法的实现过程重写,方法名、参数列表必须相同。返回值比重写前的更小或相同,异常范围更小或相同,访问修饰符更大或相同
  3. private/final/static方法不能被重写
  4. 构造方法不能被重写
  • 面向对象三大特征
    封装、继承、多态
  1. 多态的具体表现为父类的引用指向子类的实例
  • 接口和抽象类有什么共同点和区别?
    共同点:
  1. 都不能被实例化
  2. 都可以包含抽象方法
    区别:
    接口主要是对类的行为进行约束,提供一种规范。抽象类主要用于代码复用,强调所属关系。
    一个类只能继承一个抽象类,但可以实现多个接口
Java中只有值传递
  • 如果参数是基本类型的话,传递基本类型字面量值的拷贝
  • 如果参数是引用类型,传递的是实参引用对象在堆地址之中的拷贝

Java序列化和反序列化

在这里插入图片描述
序列化协议对应于应用层

Java代理模式

使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。

动态代理机制

jdk动态代理机制:invocationHandler接口和proxy类是核心
invocationHandler接口定义jdk动态代理类,重写invoke调用原生方法,自定义处理逻辑
proxy获取代理对象的工厂类
缺点:只能代理实现了接口的类

CGLIB动态代理机制:MethodInterceptor 接口和 Enhancer 类是核心。
自定义 MethodInterceptor 并重写 intercept 方法,
通过 Enhancer 类的 create()创建代理类

java集合

在这里插入图片描述

collection

list
<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值