Java初识【面试题】
1.总结
- Java语言是跨平台的
- 怎么理解跨平台? 一次编译,到处运行。Java代码只需要编写一次,可以在不同的操作系统当中。
- 怎么实现的?在操作系统上安装一个Java虚拟机(JVM)不同的操作系统安装的JVM是不同版本的。
- 怎么安装不同版本的JVM?下载不同版本的JDK即可。
- 我们Java程序员编写程序的时候,是在Xxxx.java文件中编写,这个文件叫做源文件。(源码)Xxxx.java源文件需要经过一个编译的过程,变成Xxxx.class文件。JVM将字节码解释成机器码,操作系统执行机器码和硬件平台交互。

- Java的加载与执行原理
- Java程序包括两大阶段:编译阶段:依靠javac.exe命令;运行阶段:依靠java.exe命令。编译和运行可以在不同的OS上运行。
- 描述整个过程:
- 程序员新建一个.java结尾的文件,该文件称为源文件,在该文件中编写Java源码
- 使用javac.exe命令对Xxx.java文件进行编译 语法:javac java源文件的路径 注意:java源文件可以是绝对路径,也可以是相对路径
- 当java源文件语法合法,经过javac进行编译,会生成class文件。
- xxxx.class文件称为字节码文件,字节码文件不是机器码,操作系统无法执行。
- 使用java命令来运行Java程序:语法:java 类名
- 描述 java T 这个命令执行之后发生了什么?
首先java命令会启动JVM。
JVM会启动classLoader(类加载器)
classloader通过一个环境变量classpath找“T.class”文件
15.找不到责报错,找到则执行,怎么执行?
执行T.class中的入口方法:main方法。
16.JVM会将class字节码文件解释成机器码二进制,操作系统执行机器码和底层硬件进行交互。
- Path环境变量
- path环境变量和java无关,是OS级别的一个环境变量。
- Windows操作系统找命令的时候从那里开始找?
- 默认情况下是从当前路径下找命令,如果找不到,再去path环境变量中查找。
- 如果找到则执行,找不到就会报错,错误信息如下:'jslkjg' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- classpath
- 这个环境变量是隶属于java的,和操作系统无关。
- 这个环境变量是给谁指路的? 是给类加载器指路的。
- 类加载:classloader
- classloader会从classpath环境变量指定的路径中搜索“字节码文件”,找到字节码则执行,找不到字节码报错、
- 当classpath没有配置的情况下,classloader默认去“当前路径”下找。
2.面试题
2.1你认为Java是解释型语言还是编译型语言?
Java既不是纯解释型语言,也不是纯编译型语言,而是一种混合型语言。Java源代码首先会被编译成字节码文件,字节码文件不是针对特定的硬件和操作系统而编译的,而是针对Java虚拟机(JVM)而编译的。字节码文件在运行时由JVM解释执行,JVM会将字节码文件转换为机器码并执行,这样就可以实现跨平台性,使得Java程序可以在任何安装了JVM的计算机上运行。因此,Java是一种混合型语言,它既具备编译型语言的高效性,又具备解释型语言的跨平台性。
2.2Java是如何做到跨平台的?
Java是一种基于虚拟机的编程语言,它的跨平台性是通过Java虚拟机(JVM)实现的。Java程序在编译时会被编译成字节码,而不是直接编译成机器语言。这些字节码可以在任何支持Java虚拟机的平台上运行,包括Windows、Mac、Linux等操作系统。
Java虚拟机是一个抽象的计算机,它提供了一个独立于硬件平台的运行环境。当Java程序在不同的操作系统上运行时,JVM会将字节码解释成机器码,从而实现跨平台运行。这种机制保证了Java程序在不同平台上的一致性和可移植性。
总的来说,Java的跨平台性是通过将程序编译成字节码,再由Java虚拟机解释执行实现的。这种机制使得Java程序可以在不同平台上运行,无需重新编译。
2.3解释一下Java中的类路径是什么?
Java中的类路径(Classpath)是指JVM在搜索类文件(.class文件)时所使用的路径。在Java中,当需要加载一个类时,JVM会按照一定的顺序在类路径中查找该类的字节码文件。如果找到了该文件,则会加载该类并创建相应的对象。
类路径可以由多个路径组成,路径之间用分号(Windows系统)或者冒号(Unix/Linux系统)分隔。在Java中,类路径可以分为系统类路径和用户类路径。
系统类路径是JVM默认的类路径,它包含了Java运行环境中的核心类库和扩展类库。系统类路径可以通过系统属性"java.class.path"来获得。
用户类路径是用户自定义的类路径,它包含了用户自己编写的类文件和第三方库文件。用户类路径可以通过"-classpath"或"-cp"选项指定,也可以通过设置系统环境变量CLASSPATH来指定。
通常情况下,Java程序的类文件都位于用户类路径中,而核心类库和扩展类库位于系统类路径中。在编写Java程序时,需要根据实际情况配置类路径,以确保程序能够正常运行。
4.4. Java字节码是机器码吗?
Java字节码不是机器码。Java源代码在编译时会被编译成Java字节码(.class文件),而不是直接编译成机器码。Java字节码是一种中间代码,它是一种平台无关的二进制代码,可以在任何支持Java虚拟机(JVM)的平台上运行。
Java字节码是由Java编译器生成的一种二进制文件,它包含了Java源代码编译后的中间代码,而不是机器码。Java字节码可以被JVM解释执行,JVM会将字节码解释成机器码,从而实现跨平台运行。
Java字节码的优点是可以在不同平台上运行,而不需要重新编译。这种机制使得Java程序具有很强的可移植性和跨平台性。但是,由于Java字节码需要被JVM解释执行,因此Java程序的执行速度相对较慢。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)