• java面试强基(1)


     java语言特点 

    • 面向对象(继承、封装、多态)
    • 支持多线程
    • 跨平台
    • 强大的生态
    • 简单易学
    • 编译和解释并存

    解释以下jvm,jdk,jre 

    • jvm是java虚拟机,是运行java字节码的虚拟机。jvm针对不同的系统有不同的实现,目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。
    • jdk是java功能齐全的sdk。拥有jre的所有功能,同时还具有编译器、工具。它能够创建和编译程序。
    • jre是java运行时环境,他是运行java已编译程序的集合,拥有jvm、java命令、java类库和一些基础构件。他不能创建新程序。如果你只是为了运行一下 Java 程序的话,那么你只需要安装 JRE 就可以了。如果你需要进行一些 Java 编程方面的工作,那么你就需要安装 JDK 了。

     3.什么是字节码,采用字节码的好处是什么?

    ​ 在java中,字节码指的是虚拟机可以理解的代码(.class文件)。他不面向任何特定的处理器,只面向虚拟机。java语言通过字节码文件,在一定程度上解决了解释性语言执行效率低的问题,但是也保存了解释性语言可移植的特点。由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。

    ​ 下图是java源代码到运行的过程:

    ​ 我们需要格外注意的是 .class->机器码 这一步。在这一步 JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT(just-in-time compilation) 编译器, JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。机器码的运行效率高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言 。

    java和c++的区别了解吗?

    1. Java 不提供指针来直接访问内存,程序内存更加安全。
    2. Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
    3. Java 有自动内存管理垃圾回收机制(GC),不需要程序员手动释放无用内存。
    4. C ++同时支持方法重载和操作符重载,但是 Java 只支持方法重载(操作符重载增加了复杂性,这与 Java 最初的设计思想不符)。

    操作符重载,也叫运算符重载,是C++的重要组成部分,它可以让程序更加的简单易懂,简单的运算符使用可以使复杂函数的理解更直观。
    虽然运算符重载听起来好像是C++的外部能力,但是多数程序员都不知不觉地使用过重载的运算符。例如,加法运算符“+”对整数、单精度数和双精度数的操作是大不相同的。这是因为C++语言本身已经重载了该运算符,所以它能够用于int、float、double和其它内部定义类型的变量。

    本文参考链接

    DocumentDescriptionhttps://fxzcloud.gitee.io/offer/

  • 相关阅读:
    类与对象(1)
    JVM详细教程
    挑选适合您的优秀项目管理软件
    玩转Configmap配置应用的各种姿势
    针孔相机投影模型
    1.4_6 Axure RP 9 for mac 高保真原型图 - 案例5 【旋转的唱片3】进度条_滚动
    XPS数据处理(二)-科学指南针
    cola架构:有限状态机(FSM)源码分析
    GRPC与 ProtoBuf 的理解与总结
    【Linux】进程优先级|进程并发概念|在vim中批量化注释
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/127858757