• Java面试题(持续更新中)


    在这里插入图片描述

    一、Java基础+集合+多线程+JVM

    1.Java基础

    1.1面向对象和面向过程的区别

    面向过程:面向过程的性能比面向对象高。因为类调用时需要实例化,消耗比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、Linux/Unix、嵌入式开发等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。
    面向对象:面向对象易维护、易复用、易扩展。因为面向对象有封装、继承、多态的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。

    这个并不是根本原因,面向过程也需要分配内存,计算内存偏移量,Java性能差的主要原因并不是因为它是面向对象语言,而是Java是半编译语言,最终的执行代码并不是可以直接被CPU执行的二进制机械码。
    而面向过程语言大多数都是直接编译成机械码在电脑上执行,而其他一些面向过程脚本语言性能并不一定比Java好。

    1.2 Java语言有哪些特点?

    1. 简单易学
    2. 面向对象(封装、继承、多态)
    3. 平台无关性(Java虚拟机实现平台无关性)
    4. 可靠性
    5. 安全性
    6. 支持多线程
    7. 支持网络编程并且很方便(Java语言诞生就是为了简化网络编程)
    8. 编译与解释并存

    C++11之后,C++就引入了多线程库,在windows、Linux、macox中都可以使用std::thread和std::async来创建线程

    1.3 关于JVM、JDK、JRE最详细通俗的解答

    1.3.1 JVM

    Java虚拟机(JVM)是运行Java字节码文件的虚拟机,JVM有针对不同系统的特定实现,目的是使用相同的字节码,他们都会给出相同的结果。
    什么是字节码?采用字节码的好处是什么?

    JVM可以理解的代码叫做字节码(扩展名为.class的文件),它不面向特定的处理机器。只面向JVM。Java通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点,所以Java程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,所以,Java程序无需重新编译就可以在不同的操作系统的虚拟机上运行。

  • 相关阅读:
    PHP文字识别Tesseract (CentOS)
    Git 行结束符:LF will be replaced by CRLF the next time Git touches it问题解决指南
    idea debug 重启弹窗提示窗口询问是否关闭运行着的服务器
    Java计算机毕业设计德云社剧场网上售票系统源码+系统+数据库+lw文档
    curl、openssl、mbedtls的交叉编译过程
    c++之常量引用
    【Linux】 - Linux中的键盘快捷操作
    UE 4.27.2 和 UE 5.3.1 自定义模块出现的问题
    01-自动内存管理机制
    记一次基于开源微信机器人实现的Unity构建完成通知
  • 原文地址:https://blog.csdn.net/m0_57229804/article/details/132818802