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


    阳光背影.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在大多数情况下不需要关心内存的分配和释放

    参考资料

    1. bytecode

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

  • 相关阅读:
    洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II
    洛谷 P3654 First Step (ファーストステップ)
    洛谷 P1223 排队接水
    洛谷 【P1252】马拉松接力赛
    codevs 4927 线段树练习5
    洛谷 P1678 烦恼的高考志愿
    初识 线段树
    开学第一测
    洛谷 P1531 I Hate It
    CSS3 过渡
  • 原文地址:https://www.cnblogs.com/javaadu/p/10713935.html
Copyright © 2020-2023  润新知