欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

003-005:Java平台相关的面试题

程序员文章站 2022-03-20 12:19:56
本文首发于公众号:javaadu 003:字节码是什么? 在Java中,字节码存放于以.class结尾的二进制文件。 字节码之于Java,类似于汇编语言之于C/C++。对于C/C++语言来说,不同的平台需要不同的编译器,以应对不同的操作系统和机器指令集;对于Java来说,只需要一个编译器(javac ......

003-005:Java平台相关的面试题

本文首发于公众号:javaadu

003:字节码是什么?

在java中,字节码存放于以.class结尾的二进制文件。

字节码之于java,类似于汇编语言之于c/c++。对于c/c++语言来说,不同的平台需要不同的编译器,以应对不同的操作系统和机器指令集;对于java来说,只需要一个编译器(javac),编译形成的字节码是一种通用的代码,可以运行在任何安装了jvm的机器上,也就实现了所谓的“一次编写、到处运行”。

使用字节码和虚拟机的语言不只有java一种,java是现在最出名的语言,lisp是更古老的语言(该语言主要用于人工智能和科学计算);其他使用类似于字节码的语言有icon和prolog

004:比较下jdk、jvm和jre的不同

jvm是运行java应用的虚拟机,主要模块有:类加载子系统、运行时数据区、即时编译(jit)子系统、垃圾收集子系统等;

jre是java运行时环境,主要包括java se api(基础类库和ui类库)和java应用的部署套件。

jdk是最大的概念,包括:jvm + jre + java语言 + jdk辅助工具(javac、jmap等)

005:c++和java之间最大的不同是什么?

java和c++的设计目标不同:(1)c++最初的设计目标是为了扩展c语言的能力,主要的应用场景是系统应用开发,跟c语言相比,c++增加了面向对象能力、异常处理、强大的资源管理能力、泛型编程、模板编程以及stl库等能力;(2)java的设计目标是更加普遍,是纯粹的oop语言、支持并发、更好的可移植性(跨平台能力),java利用jvm实现了较高的安全性和可移植性。

我认为,c++和java最主要的几个不同可以列举如下(其他语言特性的不同在此不做讨论):
| | c++ | java |
| --- | --- | --- |
| 平*立性 | c++是平台相关性语言 | java是平台无关性语言 |
| 指针 | c++支持指针变量,因此我们可以将任何变量的地址存放在一个指针变量中 | java不支持指针变量 |
| 语言级别 | c++既可以当作是高级语言,也可以当作是机器级别的语言 | java是纯粹的高级语言 |
| 内存管理 | c++需要程序员手动管理内存的分配和释放 | java在大多数情况下不需要关心内存的分配和释放 |

参考资料


本号专注于后端技术、jvm问题排查和优化、java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。003-005:Java平台相关的面试题