1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行java字节码的虚拟机进程,java源文件被编译成能被java虚拟机执行的字节码文件;Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.JDK和JRE的区别是什么?JDK提供了java的开发环境和运行环境;JRE是java的运行环境,JDK包括了JRE。
3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?静态的,在没有创建对象的情况下进行方法 变量的调用;不能被覆盖,方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。
4.是否可以在static环境中访问非static变量?不可以,需要先创建出来非static变量所在的类,然后通过定义这个类,非static变量。
5.Java支持的数据类型有哪些?什么是自动拆装箱?Byte short int long float double Boolean char自动拆装箱是java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。
6. 什么是值传递和引用传递?值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。引用传递:(形式参数类型是引用数据类型参数):也成为传地址。方法调用时,实际参数是对象或者数组,这时实际参数与形式参数指向同一个地址,在方法执行中,对像是参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留下来,所以方法执行中形式参数的改变将会影响实际参数。
7. 进程和线程的区别是什么?进程是指运行中的应用程序,每一个进程都有自己独立的内存空间。一个应用程序可以同时启动多个进程。线程是指进程中第一个执行流程,有时候也成为执行背景。一个进程可以有多个线程组成,即在一个进程中可以同时运行多个不同线程,执行不同任务。每个进程都需要操作系统为其分配独立的内存地址空间,而同一个进程中的所有线程在同一块地址空间中工作,这些线程可以共享同一块内存和系统资源,比如共享一个对象或者共享已经打开的一个文件。
8. Java集合类框架的基本接口有哪些?Collection set List map9. 在Java中,对象什么时候可以被垃圾回收?当对象对当前使用找个对象的应用程序变得不可触及的时候,这个对象就可以被回收了。
10. JVM的永久代中会发生垃圾回收么?垃圾回收不会发生在永久代,如果永久代满了或者是超过了临界值,会触发完全垃圾回收(FullGC)。如果仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。这就是为什么正确的永久代大小对避免FullGC是非常重要的原因。