当前位置: 移动技术网 > IT编程>开发语言>Java > 003-005:Java平台相关的面试题

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

2019年04月16日  | 移动技术网IT编程  | 我要评论

火炬之光有多少层,东流影院限制分级,吴明山

阳光背影.jpg

本文首发于公众号: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面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。javaadu

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网