java基础知识
Java
1、谈谈你对java的理解
→ 与平台无关性(一次变异处处运行)
如何实现?
→ GC(垃圾回收机制。会自动释放堆内存)
→ 语言特性(泛型,反射,lambda表达式)
→ 面向对象(封装,继承,多态)
→ 类库(java本身自带的一些集合和并发库,网络库,IO等)
→ 异常处理
2、JVM如何加载 .class文件
→ class loader :根据特定格式,加载class文件到内存
→ execution engine :对命令进行解析(完成后即提交到操作系统中执行)
→ native interface :融合不同开发语言的原生库为java所用
→ runtime data area :JVM内存空间结构模型
3、谈谈反射
Java反射机制是在运行状态中,对任意一个类,都能够知道这个累的所有属性和方法;对于任意一个对象,都能够调用他的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
4、类从编译到执行的过程
→ 编译器将Robot.java源文件编译为Robot.class字节码文件
→ClassLoader将字节码转换为JVM中的Class<Robot>对象
→ JVM利用Class<Robot>对象实例化为Robot对象
5、谈谈ClassLoader(抽象类)
ClassLoader在java中有这非常重要的作用,它主要工作在Class装载的加载阶段,其主要作用是从系统外部获得Class二进制数据流,它是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过将Class文件里的二进制数据流装载进系统,然后交给Java虚拟机进行连接、初始化等操作。
6、ClassLoader的种类
1、BootStrapClassLoader :C++编写,加载核心库java.*,(java.lang.*)
2、ExtClassLoader :Java编写,加载扩展库javax.*
3、AppClassLoader :Java编写,加载程序所在目录
4、自定义ClassLoader :Java编写,定制化加载