Java面试必备:JDK、JRE与JVM解析及跨平台原理

5星 · 超过95%的资源 需积分: 9 5 下载量 6 浏览量 更新于2024-07-19 收藏 85KB DOCX 举报
"这篇资源主要涉及的是Java面试的相关知识点,包括Java的跨平台原理、JDK、JRE和JVM的关系、Java环境变量的设置、Java相对于C++的优缺点、Java的三个分支以及JavaME与Android的区别,还提供了一个冒泡排序的算法题目。 1. **Java跨平台原理**: Java的跨平台特性源于其“一次编写,到处运行”的理念。Java源代码通过编译器转化为字节码(class文件),这些字节码不依赖于特定的硬件或操作系统,可以在任何支持Java的平台上运行。运行时,Java虚拟机(JVM)负责解释执行这些字节码,实现了平台无关性。 2. **JDK、JRE和JVM的关系**: JDK(Java Development Kit)是Java开发工具包,包含Java编译器、Java运行时环境和其他开发工具,供程序员进行开发使用。JRE(Java Runtime Environment)是Java运行时环境,主要包括JVM和Java运行所需的类库,用于运行已编译的Java程序。JVM(Java Virtual Machine)是Java虚拟机,它是Java程序运行的核心,负责解释执行字节码。关系上,JDK包含了JRE,而JRE又包含了JVM。 3. **JDK环境变量设置**: - `JAVA_HOME` 指向JDK的根目录,是其他环境变量的基础。 - `classpath` 用于指定查找类文件的路径,通常设置为"."表示当前目录,加上"%java_home%\lib"表示JDK的lib目录。 - `path` 需要添加"%java_home%\bin",使得系统能在任何目录下执行Java命令。 4. **Java相对于C++的优缺点**: 优点:自动内存管理,避免了内存泄露;具有丰富的类库;强类型检查,安全性高。 缺点:运行速度相对较慢,因为需要JVM解析执行;资源占用相对较多,JVM本身就是一个程序;没有C++中的指针,无法直接操作内存;垃圾回收机制可能导致内存延迟释放。 5. **Java的三个分支**: - JavaSE(Java Standard Edition)是标准版,主要用于桌面应用开发。 - JavaEE(Java Enterprise Edition)是企业版,面向服务器端应用和大型企业级系统的开发。 - JavaME(Java Micro Edition)是微型版,主要用于嵌入式设备和移动设备开发。 6. **JavaME与Android的关系**: JavaME是Java在移动设备上的版本,需要对应平台的JVM才能运行。Android虽然也使用Java语言开发,但它不是基于JavaME,而是有自己的Dalvik虚拟机和类库API。两者之间API不兼容,因此JavaME程序不能直接在Android上运行。 7. **冒泡排序算法**: 冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置,使得每一遍过后的最大元素被推到数组末尾。具体的实现涉及到两个嵌套循环,外层循环控制比较的轮数,内层循环控制每轮的比较次数。 以上是Java面试中可能涉及的一些基础知识点,对于理解Java的工作原理和使用是非常重要的。"
2017-12-03 上传
1、面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? 4、float f=3.4;是否正确? 5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 6、Java有没有goto? 7、int和Integer有什么区别? 8、&和&&的区别? 9、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。 10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少? 11、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 12、用最有效率的方法计算2乘以8? 13、数组有没有length()方法?String有没有length()方法? 14、在Java中,如何跳出当前的多重嵌套循环? 15、构造器(constructor)是否可被重写(override)? 16、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 17、是否可以继承String类? 18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 19、String和StringBuilder、StringBuffer的区别? 20、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分? 21、描述一下JVM加载class文件的原理机制? 22、char 型变量中能不能存贮一个中文汉字,为什么? 23、抽象类(abstract class)和接口(interface)有什么异同? 24、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 25、Java 中会存在内存泄漏吗,请简单描述。