面试题-01

1、JDK 和 JRE 和 JVM 分别是什么,有什么区别?

JDK(Java Development Kit,Java 软件开发工具包)

JDK(Java Development Kit):JDK 是 Java 开发⼯具包,包含了编写、编译、调试和运⾏ Java 程序所需的所有⼯具和组件(包含了JRE和一些java开发工具),⽐如编译器(javac)、Java API、调试⼯具等。JDK 是针对 Java 开发⼈员的,它包含了 JRE,还有编译器和其他⼯具,可以⽤来编写和调试 Java 程序。

JRE(Java Runtime Environment,Java 运行环境) 

JRE 是 Java 运⾏时环境,包括了 Java 虚拟机(JVM)和 Java 标准类 库(Java API)。JRE 是针对 Java 应⽤程序的,它提供了在计算机上运⾏ Java 应⽤程序所需的最⼩环境。

JVM(Java Virtual Machine,Java 虚拟机)

JVM 是 Java 虚拟机,JVM是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。在Java虚拟机上⽣成可运⾏的字 节码,移植到在其他平台上时可不加修改地运⾏

三者之间区别:

        1.JDK是Java开发工具包含了java运行环境和java开发工具

        2.JRE是Java运行时环境,包括了java核心类库。

        3.JVM是java环境(jre)的一部分,是跨平台核心部分,可运行java核心代码

Java开发⼯具包=Java 运⾏环境+Java开发⼯具

Java 运⾏环境=Java虚拟机+Java核⼼类库

 2、什么是字节码?采用字节码的最大好处是什么?

字节码是JVM可以理解的代码就叫做字节码(即源程序(.java文件)通过编译产生的产物(.class文件)),它不面向任何特定的处理器,只面向JVM,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行

好处:

  • 可移植性:由于字节码是中间代码,并不针对一种特定的机器,因此Java程序无须重新编译就可以在多种操作系统的计算机上运行(不同的操作系统和硬件平台可能需要不同的JVM实现,但是它们都可以执行相同的字节码程序)。
  •  安全性:由于字节码需要在JVM中运行,所以可以对字节码进行安全检查,以确保程序不会对系统造成威胁
  •  性能:由于字节码是⼀种紧凑的⼆进制格式,相⽐于直接编译为机器码,可以更快地加载和传输,同时也可以 在运⾏时进⾏动态优化,提⾼程序的执⾏效率。
  • 可读性:相⽐于直接编译为机器码,字节码具有更好的可读性,可以⽅便地进⾏反汇编和调试。

3、什么是数据库事务?讲一下事务的 ACID 特性?

事务是若干个SQL语句构成的一个操作序列,这些操作表示一个完整的功能,并且需要保证功能的完整性,因此要求在该事务中要求所有的sql要么都执行,要么都不执行,是一个不可分割的整体单位。(简单来说就是由多个小任务的组成的任务)

事务的ACID特性

  • 原子性(Atomicity):事务是一个不可分割的整体,所有操作要么全做,要么全不做;只要事务中有一个操作出错,回滚到事务开始前的状态的话,那么之前已经执行的所有操作都是无效的,都应该回滚到开始前的状态。
  • 一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。
  • 隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱结束前,B不能向这张卡转账。
  • 持久性(Durability):事务一旦被提交后,事务对数据库的所有更新将被永远保存到数据库,不能回滚。

4、Java 和 C++、Go 语⾔的区别,各⾃的优缺点?

Java优点:

  •  平台性强(跨平台):Java 虚拟机(JVM)可以在不同的操作系统上运⾏ Java 程序,使得开发者可以编写⼀次代 码并在多个平台上运⾏
  • 安全性⾼:Java 有很多安全特性,例如⾃动内存管理、类的访问权限控制、异常处理等,可以有效避免⼀些 常⻅的安全漏洞;
  • ⽣态系统完备:Java 的⽣态系统⾮常完善,有很多成熟的框架和⼯具可以帮助开发者快速构建复杂的应⽤。

        缺点:

  • 由于JVM的存在,运⾏速度相对较慢
  • 对于实时性要求较⾼的场景,Java的表现可能不如C++和Go

go语言优点:

  • ⾼并发,天⽣⽀持协程,能够轻松编写⾼效的并发程序
  • 简单易学,语法简洁,上⼿容易
  • 静态类型语⾔,可以避免⼀些潜在的运⾏时错误
  • 快速编译,可以快速构建和部署应⽤程序

        缺点:

  • 缺乏丰富的类库,与 Java 和 C++ 相⽐有些不⾜
  • 在⼀些性能要求极⾼的场景中可能不如 C++ 表现
  • 语⾔本身还⽐较年轻,相关⽣态和⼯具还需要进⼀步完善 

 C++优点:

  • 速度快,适合编写需要⾼性能的应⽤程序
  • 应⽤⼴泛,特别是在游戏开发、操作系统和嵌⼊式系统开发⽅⾯
  • 灵活性⾼,可以直接访问硬件和内存

        缺点:

  • 学习难度较⾼,需要掌握指针、内存管理等底层知识
  • 容易出现内存泄漏和指针错误等问题
  • 编写代码过程中需要更多的⼿动管理,相⽐ Java 更容易出错

5、Java 中 final 关键字有什么用?

1.final 修饰类,表示该类不能被继承。final 类中的⽅法默认都是 final 的,不能被⼦类重写。

2. final 修饰⽅法,表示该⽅法不能被⼦类重写。

3. final 修饰变量,表示该变量只能被赋值⼀次。final 修饰的变量必须在声明时或构造函数中初始化,且不能再 被修改。常⽤于定义常量。

4.确保对象引⽤不可变,在对象引⽤声明前加上 final 关键字,可以确保该引⽤指向的对象不能被改变,但是该对象的内容可以被改变。例如,final MyClass obj = new MyClass(); 将 obj 声明为⼀个不可变引⽤,指向⼀个可变的 MyClass 对象。

何为"不可变的对象引用"呢?

        final只保证引用类型变量所引用的地址不会改变,即一直引用同一个对象,但是这个对象的内容(对象的非final成员变量的值可以改变)完全可以发生改变(比如final int[] intArray;,intArray不允许再引用其他对象,但是intArray内的int值却可以被修改) 

使⽤ final 修饰的变量在编译时就已经确定了其值,因此在运⾏时访问时⽐⾮ final 变量更快。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/392274.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

社区居家养老新选择,全视通智慧方案让长者生活更安心

随着人口老龄化趋势加剧,养老问题已经成为社会各界关注的焦点。我国政府积极采取相关措施,加速推动养老服务业的健康发展。2023年5月,《城市居家适老化改造指导手册》发布,针对城市老年人居家适老化改造需求,提出了47项…

Linux线程(1)--线程的概念 | 线程控制

目录 前置知识 线程的概念 Linux中对线程的理解 重新定义进程与线程 重谈地址空间 线程的优缺点 线程的优点 线程的缺点 线程异常 线程的用途 Linux线程 VS 进程 线程控制 创建线程 线程等待 线程终止 线程ID的深入理解 前置知识 我们知道一个进程有属于自己的P…

python学习24

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

macOS开启HiDPI外接2K显示器(解决字体发虚问题)

1.前言: 购置了一台2K显示器,但通过HDMI直接连接时的显示效果让人难以接受,因此我们需要启用苹果系统的HiDPI模式,以实现更完美的显示效果。 那么,为什么要启用HiDPI模式呢?2K显示器的分辨率为2560*1440&…

数学建模【线性规划】

一、线性规划简介 线性规划通俗讲就是“有限的资源中获取最大的收益”(优化类问题)。而且所有的变量关系式都是线性的,不存在x、指数函数、对数函数、反比例函数、三角函数等。此模型要优化的就是在一组线性约束条件下,求线性目标…

7.1 Qt 中输入行与按钮

目录 前言: 技能: 内容: 参考: 前言: line edit 与pushbotton的一点联动 当输入行有内容时,按钮才能使用,并能读出输入行的内容 技能: pushButton->setEnabled(false) 按钮不…

17.3.2.9 像素处理与内存处理之比较

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 通过第17.3.2.1节到第17.3.2.8节,相信读者对通过锁定内存来处理图像有了一定认识。与第17.3.1节相比较,可以…

【递归】【后续遍历】【迭代】【队列】Leetcode 101 对称二叉树

【递归】【后续遍历】Leetcode 101 对称二叉树 解法一: 递归:后序遍历 左右中解法二: 迭代法,用了单端队列 ---------------🎈🎈对称二叉树 题目链接🎈🎈------------------- 解法一…

项目开发日志(登录界面):2. LoginTitle组件

LoginTitle组件 样式 说明 属性 属性名含义类型是否必填默认值welcomeTitle欢迎标语String是无mainTitle标题String是无 样式 mainColor -> 主题颜色 代码 <template><div class"logintitle-container"><p class"subtitle">{{ welc…

模拟算法.

1.什么是模拟 在信息奥赛中,有一类问题是模拟一个游戏的对弈过程或者模拟一项任务的操作过程.比如乒乓球在比赛中模拟统计记分最终判断输赢的过程等等,这些问题通常很难通过建立数学模型用特定的算法来解决因为它没有一种固定的解法,需要深刻理解出题者对过程的解释一般只能采…

备战蓝桥杯---图论之建图基础

话不多说&#xff0c;直接看题&#xff1a; 首先&#xff0c;这个不是按照字典序的顺序&#xff0c;而是以只要1先做&#xff0c;在满足后让2先做。。。。 就是让数字小的放前面做拓扑排序。 我们可以先做1&#xff0c;看看它的前驱。 举个例子&#xff1a; 我们肯定要把1放…

⭐北邮复试刷题429. N 叉树的层序遍历(按层入队出队BFS)

429. N 叉树的层序遍历 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&#xff09;。 示例 1&#xff1a;输入&a…

VMware Workstation创建虚拟机

一、VMware Workstation下载安装 1、安装教程 VMware Workstation下载安装&#xff08;含密钥&#xff09; 二、VMware Workstation 创建虚拟机 1、新建虚拟机&#xff0c;点击“创建新的虚拟机” 2、选择自定义&#xff08;高级&#xff09;&#xff0c;点击“下一步” 3…

docker (六)-进阶篇-数据持久化最佳实践MySQL部署

容器的数据挂载通常指的是将宿主机&#xff08;虚拟机或物理机&#xff09;上的目录或文件挂载到容器内部 MySQL单节点安装 详情参考docker官网文档 1 创建对应的数据目录、日志目录、配置文件目录(参考二进制安装&#xff0c;需自己建立数据存储目录) mkdir -p /data/mysq…

Ps:污点修复画笔工具

污点修复画笔工具 Spot Healing Brush Tool专门用于快速清除图像中的小瑕疵、污点、尘埃或其他不想要的小元素。 它通过分析被修复区域周围的内容&#xff0c;无需手动取样&#xff0c;自动选择最佳的修复区域来覆盖和融合这些不完美之处&#xff0c;从而实现无痕修复的效果。 …

使用PaddleNLP UIE模型提取上市公司PDF公告关键信息

项目地址&#xff1a;使用PaddleNLP UIE模型抽取PDF版上市公司公告 - 飞桨AI Studio星河社区 (baidu.com) 背景介绍 本项目将演示如何通过PDFPlumber库和PaddleNLP UIE模型&#xff0c;抽取公告中的相关信息。本次任务的PDF内容是破产清算的相关公告&#xff0c;目标是获取受理…

解锁Spring Boot中的设计模式—02.解释器模式:探索【解释器模式】的奥秘与应用实践!

解释器模式 1.简介 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为设计模式&#xff0c;它用于定义语言的文法&#xff0c;并且解释语言中的表达式。在Java中&#xff0c;解释器模式可以用于构建解释器以解析特定的语言或表达式&#xff0c;如数学表达式、…

OpenAI发布Sora模型,可根据文字生成逼真AI视频

早在2022年11月30日&#xff0c;OpenAI第一次发布人工智能聊天机器人ChatGPT&#xff0c;随后在全世界掀起了人工智能狂潮&#xff0c;颠覆了一个又一个行业。在过去的一年多的时间里&#xff0c;chatGPT的强大功能改变了越来越多人的工作和生活方式&#xff0c;成为了世界上用…

Open CASCADE学习|Geom_BSplineSurface转TopoDS_Face

B样条曲面&#xff08;B-Spline Surface&#xff09;是一种数学上用于描述三维形状的工具&#xff0c;它是B样条曲线在二维空间上的扩展。B样条曲面在计算机图形学、计算机辅助设计&#xff08;CAD&#xff09;、动画和许多其他领域都有广泛的应用。 B样条曲面由一组控制点和一…

使用八叉树模拟水和烟雾 Simulating Water and Smoke with an Octree Data Structure 论文阅读笔记

原文&#xff1a; Losasso, Frank, Frdric Gibou, and Ron Fedkiw. “Simulating water and smoke with an octree data structure.” Acm siggraph 2004 papers. 2004. 457-462. 引言 这篇文章扩展了 [Popinet 2003] 的工作&#xff0c;拓展到表面自由流&#xff0c;并且使…