Java面试工作必备九道题(配置与基础知识点)

第1章【在Java中,为什么要配置JAVA_HOME环境变量?】

答:因为JAVA_HOME环境变量,在Java开发和使用中,起着至关重要的作用。

它主要用于指定JDK(Java开发工具包)的安装路径,通常涉及在操作系统的环境变量设置中,添加一个新的变量,并将其值,设置为JDK的安装路径。

以下5点,就是JAVA_HOME的主要作用:

1、命令行工具定位
通过设置JAVA_HOME,其他Java相关的命令行工具(如javac、java、javadoc等)可以在任何位置被调用,因为系统会根据JAVA_HOME变量找到这些工具的正确路径。

2、IDE配置
许多集成开发环境(IDE)如IntelliJ IDEA、Eclipse等,在配置Java开发环境时,需要知道JDK的安装位置。

这时,它们通常会查看JAVA_HOME环境变量来自动设置JDK路径。

3、构建工具配置
构建工具如Maven、Gradle等,在构建Java项目时也需要知道JDK的位置。

通过设置JAVA_HOME,这些工具可以自动找到并使用正确的JDK版本。

4、服务器和容器配置
对于运行Java应用程序的服务器和容器(如Tomcat、Jetty、WildFly等),JAVA_HOME可以帮助它们找到JDK并正确地运行Java应用程序。

5、版本管理
在系统中可能安装了多个版本的JDK。

通过调整JAVA_HOME的值,可以方便地切换不同版本的JDK,以满足不同项目或任务的需求。

总结:
通过以上5点需求,我们深刻地知道,正确设置JAVA_HOME环境变量,是Java开发和使用中的一项重要任务。

第2章【在Java中,该怎么配置JAVA_HOME环境变量呢?】

答:配置JAVA_HOME环境变量很简单,主要分四步,即“JAVA_HOME配置4步走”。

JAVA_HOME环境变量的4步配置如下:

1、
首先,需要确定JDK的安装路径。

一般情况下,JDK默认安装在C盘或用户指定的其他盘中,找到该路径后复制下来备用。

右键点击“我的电脑”(或者是“此电脑”),选择“属性”。

在弹出的页面上点击“高级系统设置”,然后在弹出的窗口中选择“高级”标签页下的“环境变量”按钮。

在“系统变量”部分中点击下方的“新建”按钮,创建一个新的系统变量。

变量名填写为"JAVA_HOME",变量值则粘贴刚才复制的JDK安装路径。

例如:“D:\project\tool\Java\jdk_9.0.1”。

划重点:注意这里一定要在“系统变量”中创建新的变量,而不是在“用户变量”中创建。

2、
然后,找到已存在的Path变量(通常在系统变量的列表中),选中后点击下方的“编辑”按钮。然后在新窗口中的变量值的最后加上:“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”。

划重点:注意多个路径之间使用分号隔开,并且这个新增的路径要放在原有内容的后面,不要覆盖掉Path以前的内容。

3、
再次点击下方的“新建”按钮,这次新建一个名为“CLASSPATH”的系统变量。

其值为:“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;” 注意最前面有个点和最后的英文分号都不能省略,且中间各个路径也是通过分号来分隔开来的。

配置完成后点击确定保存所有更改即可。

4、
为了验证是否配置成功可以按下Windows+R键输入CMD打开命令行界面,在其中输入javac命令查看是否能够正确输出javac的用法说明,如果正确输出了,则说明已经成功地配置了Javahome环境变量。(使用java -version也可以)

第3章【在Java中,CLASSPATH环境变量是必须要配置的吗?】

答:不是必须的。

CLASSPATH环境变量,在Java中并不是必须要配置的,尤其是在迭代更新飞快的现代开发环境中。

但,在某些情况下,它仍然有用。

以下3点,就详细说明了CLASSPATH配置与否的现状。

1、
CLASSPATH环境变量主要用于指定Java虚拟机(JVM)在哪里查找类文件。

在早期的Java开发环境中,当你编译一个Java程序时,会生成一个或多个.class字节码文件。

JVM需要知道这些.class文件的位置,以便在运行Java程序时能够找到并加载它们。

CLASSPATH环境变量,就是用来告诉JVM这些.class文件的位置的。

2、
然而,在现代的Java开发环境中,我们通常使用构建工具(如Maven或Gradle)来管理项目依赖和类路径。

这些工具,会自动处理类文件的查找和加载,因此我们通常不需要,手动设置CLASSPATH环境变量。

3、
另外,对于使用Java集成开发环境(IDE)如IntelliJ IDEA或Eclipse的开发者来说,IDE会内部处理类路径的问题,因此也不需要配置CLASSPATH环境变量。

总结:
虽然CLASSPATH环境变量,在早期的Java开发中很重要,但在现代的开发环境中,它通常不是必需的。

然而,如果你在某些特殊情况下,需要手动指定类文件的查找路径,那么配置CLASSPATH环境变量,可能会有所帮助。

划重点:
你需要注意的是,即使你不配置CLASSPATH环境变量,也需要确保JVM,能够找到Java运行时库(JRE)的位置,这通常是通过设置JAVA_HOME环境变量来实现。

第4章【在Java中,JDK每个版本的特点?】

答:

JDK版本从JDK1.1到JDK21的新特性如下:

1、
首先,JDK 1.1,这个版本增加了内部类、反射、RMI(远程方法调用)等新特性,提供了更好的性能和稳定性。

它让Java在功能性和效率上都有了不小的提升。

2、
然后,JDK 1.2(也被称为Java 2),这是一次重大的更新。

它引入了许多重要的改进,包括集合框架、Swing GUI 组件、JavaBeans、Java Plug-in等。

这些改进让Java在桌面应用和网络应用方面都有了更强大的能力。

3、
接下来是JDK 1.3和JDK 1.4,这两个版本主要是对性能进行了优化,并增加了一些新功能,比如NIO(New I/O)、XML处理、Java Web Start等。

这些功能让Java在处理数据和网络方面变得更加灵活和高效。

4、
JDK 5.0则是一个里程碑式的版本。

它引入了许多新的语言特性,比如泛型、注解、枚举类型等。

这些特性让Java的编程变得更加简洁和强大。

5、
至于JDK 6,它增强了对内存泄漏的分析和诊断能力,提供了更好的内存管理功能。

同时,它还引入了一些新的API和改进了的编译器优化技术。

6、
进入JDK 7,这个版本对“并发编程”进行了改进,引入了新的并发API和Fork/Join框架。

此外,它还支持动态语言调用接口和二进制字面量等新特性。

7、
JDK 8,则是近年来非常受欢迎的一个版本。

它引入了Lambda表达式、接口的默认方法和静态方法、Stream API等新特性。

这些特性,让Java在函数式编程和数据处理方面,有了更大的突破。

8、
到了JDK 9,它引入了模块系统,可以更好地控制访问权限和减少内存占用。

这个改进让Java在模块化开发和性能优化方面有了更大的提升。

9、
JDK 10,则引入了局部变量类型推断和增强的JVM内存管理功能。

这些改进让Java编程,变得更加简洁高效。

10、
至于JDK 11,它引入了HTTP Client API、动态类文件常量、Stream API增强等新特性。

这些特性,让Java在“网络通信和数据处理”方面,有了更大的进步。

11、
JDK 12的新特性如下:
(1)引入了“JVM常量API”
允许开发者,更灵活地访问和操作Java类文件中的常量池。

(2)扩展了switch语句
提供了更强大的模式匹配功能,使得switch语句更加灵活和强大。

(3)支持Unicode 11.0
为Java程序提供了对最新Unicode标准的支持。

(4)为日本Reiwa Era提供了方形字符支持
增强了Java程序对日本文化的支持。

(5)NumberFormat增加了对以紧凑格式格式化数字的支持
使得数字格式化更加灵活和符合本地化需求。

12、
JDK 13,新增了“动态CDS档案”,即允许Java应用程序,在执行结束时,动态归档类,这提高了应用程序的启动性能。

13、

总结:
每个版本的JDK都有其独特的特点和优势,它们共同推动了Java语言的发展,以及Java应用领域的拓展。

第5章【JDK21是最新版吗?】

答:截止2024年3月,JDK21是Oracle所发布的JDK最新版。

2023年9月19日 ,Oracle 发布了 JDK21,是自 JDK17 之后最新的 LTS 版本(long-term support,长期支持版)。

LTS版本,一般每两年发布一个,JDK目前的LTS版本有:JDK8 、JDK11 、JDK17 、JDK21。

Java21新特性:( oracle jdk、openjdk文档)

1、字符串模板(预览版)

2、虚拟线程
(在JDK19中是预览版,在JDK21中是正式版,会大大改变多线程的编程风格,以及解决问题的方式)

3、顺序集合
(JDK21引入了SequencedCollection、SequencedSet 、SequencedMap 接口,这些接口提供了在集合开头或结尾处添加、修改或删除元素的方法,以及反转集合的功能)

4、分代ZGC(属于JVM层面的功能)

5、记录模式

6、Switch的模式匹配

7、未命名模式和变量(预览版)

8、未命名类和实例的main方法(预览版)

9、作用域值(预览版)

10、矢量API(第六个孵化器)

11、弃用Windows32位x86端口

12、禁止代理的动态加载

13、密钥封装机制的API
(引入密钥封装机制 (KEM) 的 API,是一种使用公钥加密来保护对称密钥的加密技术)

14、结构化并发(预览版, 简化并发编程)

15、外部函数与内存API(第三次预览版)

第6章【JDK1.8、JDK8、JDK8.0,是同一个JDK吗?】

答:是,JDK1.8,就是JDK8,或者JDK8.0,它们是同一个版本的不同命名方式。

Java Development Kit(JDK)是Sun Microsystems针对Java开发员的产品,自从被Oracle收购后,其更新和发布由Oracle负责。

在版本的迭代过程中,最初的版本命名为JDK 1、JDK 2等,后来逐渐变为使用小数点分隔的形式如JDK 1.7、JDK 1.8。

因此,无论是JDK8还是JDK1.8或JDK8.0都指的是同一个Java开发工具包版本。

第7章【在2024年,Java哪个版本的JDK,不需要配置环境变量了?】

答:JDK 9及以后版本,不再需要手动配置CLASSPATH环境变量,JAVA_HOME还是需要看情况配置的。

从JDK 9开始,Java平台引入了模块化系统,这解决了早期版本中,需要配置CLASSPATH的问题。

因此,从JDK 9及以后版本开始,包括JDK 11、JDK 17等,不再需要手动配置CLASSPATH环境变量。

然而,虽然JDK的某些版本可能自动配置了部分环境变量,如PATH,但JAVA_HOME环境变量通常仍需要手动设置。

特别是当需要在多个Java版本之间切换,或需要使用特定的Java配置时。

JAVA_HOME变量,通常指向JDK的安装目录,它帮助其他Java工具或应用,去定位JDK的位置。

值得注意的是,如果采用特定的安装程序(如某些集成开发环境IDE自带的JDK安装程序),可能在安装过程中,就已经自动配置了所需的环境变量,若是在这种情况下,就无需再手动配置。

总的来说,是否需要配置环境变量,取决于具体的JDK版本、安装方式和使用的操作系统。

在安装新的JDK版本时,最好检查并确认环境变量是否已正确配置,以确保Java程序能够正常运行。

如果需要手动配置,可以根据操作系统的不同,在相应的环境变量设置中进行配置。

第8章【JDK、JRE的用法与区别,是什么?】

JDK与JRE,在用法与区别上,主要体现在以下几个方面:

一、用法

1、JDK
JDK是Java开发工具包,它包含了编写和运行Java程序所必需的编译器和解释器等工具。

程序员可以使用JDK编写Java代码,并将其编译成“.class”字节码文件。

此外,JDK还包含了一些用于开发Java应用程序的辅助工具,如调试器和性能分析工具。

2、JRE
JRE是Java运行时环境(Java Runtime Environment),它包含了运行Java程序所必需的Java虚拟机(JVM)、Java核心类库和支持文件,但不包含开发工具(JDK)。

JRE是Java应用程序所运行的环境,只有安装JRE,才能运行编译好的Java程序。

因此,用户可以只使用JRE,就可以运行已经编译好的Java程序,而无需安装JDK。

二、区别

1、面向人群
(1)JDK主要面向程序员和Java开发人员,为他们提供了编写、编译和运行Java程序所需的全部工具。
(2)JRE则主要面向普通用户,他们只需要运行已经编译好的Java程序,而不需要编写或修改代码。

2、功能与重要性
(1)JDK包含了JRE,因此其功能更加全面,如果你需要编写Java程序,那么必须安装JDK。

(2)如果你只需要运行Java程序,那么只需要安装JRE即可。

3、安装目录
在安装JDK时,电脑会同时安装两套JRE。

一套是JDK自带的JRE,位于JDK安装目录下的“jre”子目录中。

另一套是独立的JRE安装,其默认安装位置通常在系统的程序文件目录下。

综上所述,JDK和JRE在用法和区别,主要体现在其面向的人群、功能与重要性,以及安装目录上。

JDK更侧重于开发,而JRE更侧重于运行。

对于Java开发人员来说,JDK是必不可少的工具,而对于普通用户来说,只需要安装JRE就可以运行Java程序了。

第9章【常见的Java编程问题,有哪七点?】

答:常见的Java编程问题有七个,即空指针异常、类型转换异常、并发问题、内存泄漏、代码重复、数据库连接问题、性能问题、、

下面就是一些常见的JAVA编程问题:

1、空指针异常:
这是JAVA开发中最让人头疼的问题之一。
当你试图访问或操作一个为null的对象时,就会抛出这个异常。
为了避免这个问题,一定要在使用对象之前进行非空判断。

2、类型转换异常:
当你尝试将一个对象转换为不兼容的类型时,就会发生这种异常。
例如,将一个整数转换为字符串是合法的,但将一个字符串转换为整数(如果字符串不是有效的数字)就会导致异常。
为了避免这种情况,你可以在转换之前使用instanceof来检查对象的类型。

3、并发问题:
在多线程环境中,如果多个线程试图同时访问和修改共享资源,就可能出现并发问题,如数据不一致或死锁。
为了解决这个问题,你可以使用同步机制,如Synchronized关键字或Lock接口。

4、内存泄漏:
如果你的程序长时间持有不再需要的对象,不释放其占用的内存,就可能导致内存泄漏。
这会使程序运行变慢,甚至导致系统崩溃。
为了避免内存泄漏,你可以使用垃圾回收器,并确保在不再需要对象时及时释放其占用的资源。

5、代码重复:
重复的代码,不仅增加了维护的复杂性,还可能导致逻辑错误。
你应该尽量遵循“DRY”(Don't Repeat Yourself)原则,将重复的代码封装成方法或类,并在需要的地方,调用或实例化它们。

6、数据库连接问题:
在进行数据库操作时,可能会遇到连接超时、SQL注入、数据库崩溃等问题。
为了确保数据的安全和稳定,你应该使用连接池来管理数据库连接,并对用户输入,进行验证和过滤,防止SQL注入攻击。

7、性能问题:
Java程序在运行时,可能会出现性能瓶颈,如响应时间过长、资源消耗过多等。
为了优化性能,你可以使用性能分析工具,来找出瓶颈所在,并进行针对性的优化,如改进算法、减少不必要的对象创建等。

以上,就是JAVA编程中常见的一些开发问题了。

当然,具体问题可能因项目的需求和复杂性而有所不同。

所以,作为一名优秀的JAVA开发者,你应该具备解决问题的能力,能够迅速定位,并修复这些问题,以确保程序的稳定运行。

好了,今天的分享就到这里了,你学到%多少啦?

(如有疑问,或倾诉,请留言告诉我哟~~~)

第10章:【JDK,JRE,JVM,IDE,它们各自的作用是什么?彼此之间又有什么关系呢?】

答:它们各自的作用,以及四者的关系,具体内容如下...

一、JDK
它的全名Java Development Kit,是Java开发工具包。

它的作用嘛,就像是一个大工具箱,里面装满了Java程序员需要的各种工具,比如编译器、调试器等。

有了它,程序员就可以,更轻松地开发Java应用程序了。

二、JRE
全称Java Runtime Environment,是Java运行环境。

它包含了JVM(Java虚拟机)和Java的核心类库。

JVM是执行Java程序的关键,它可以把Java字节码转换成机器能懂的语言,这样Java程序,就能在不同的操作系统上运行啦。

而核心类库,则提供了很多常用的功能和工具,帮助程序员简化开发过程。

三、JVM
Java虚拟机,就像是一个翻译,把Java字节码翻译成机器能懂的语言。

这样,Java程序,就能在不同的平台上运行了,这也是Java跨平台特性的关键所在。

而且,JVM还负责内存管理和安全等工作,确保Java程序能够稳定、安全地运行。

四、IDE
全称Integrated Development Environment,也就是集成开发环境。

它就像是一个强大的编程助手,提供了代码编辑、编译、调试、项目管理等功能。

有了它,程序员就能,更高效地编写和调试代码了。

五、四者关系
它们之间的关系嘛,简单来说就是:
JDK包含了JRE和Java的开发工具集,JRE包含了JVM和Java的核心类库,而IDE则是一个帮助程序员,更高效地使用JDK和JRE的开发环境。

......

所以,以上内容,你明白了吗?!

希望,我的分享能对正求职或刚入职场的你,提供哪怕一丢丢的帮助,这也就是我的开心啦~

每天一点点,十年亿点点,从菜鸟到大牛不是梦!

如有问题,请留言tell我哈。

95adfa0e7c664f15919a8f5fac49e7d7.png

 

 

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值