• 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程序无需重新编译就可以在不同的操作系统的虚拟机上运行。

  • 相关阅读:
    计算机毕业设计springboot基于springboot和vue的音乐网站gk1c4源码+系统+程序+lw文档+部署
    基于WiFi小车控制板的单片机小系统原理图
    LeetCode 53. 最大子数组和
    CleanMyMac X4.12.1苹果电脑系统优化软件更新功能介绍
    [GYCTF2020]Ezsqli 绕过or information_schema 无列名注入
    C. Zero-Sum Prefixes(前缀和)
    arm裸机测试led灯亮灭、风扇、马达等
    智能矩阵系统解决的问题?
    关系型数据库(一)---关系数据模型与关系
    Maven 插件统一修改聚合工程项目版本号
  • 原文地址:https://blog.csdn.net/m0_57229804/article/details/132818802