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

阳光背影.jpg

本文首发于公众号:javaadujava

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实现了较高的安全性和可移植性。jvm

我认为,C++和Java最主要的几个不一样能够列举以下(其余语言特性的不一样在此不作讨论):
| | C++ | Java |
| --- | --- | --- |
| 平台独立性 | C++是平台相关性语言 | Java是平台无关性语言 |
| 指针 | C++支持指针变量,所以咱们能够将任何变量的地址存放在一个指针变量中 | Java不支持指针变量 |
| 语言级别 | C++既能够看成是高级语言,也能够看成是机器级别的语言 | Java是纯粹的高级语言 |
| 内存管理 | C++须要程序员手动管理内存的分配和释放 | Java在大多数状况下不须要关心内存的分配和释放 |工具

参考资料

  1. bytecode

本号专一于后端技术、JVM问题排查和优化、Java面试题、我的成长和自我管理等主题,为读者提供一线开发者的工做和成长经验,期待你能在这里有所收获。javaadu优化

相关文章
相关标签/搜索