JAVA面试——程序基础篇

来源:互联网 发布:旅游分销平台源码 编辑:程序博客网 时间:2024/05/19 13:45

1 JDK和JRE的区别是什么?

JDK是JAVA程序的开发工具包,主要包含了各种类库和开发工具,当然也包括了一个JRE。JDK安装完成后需要进行环境变量配置后才可以使用。
JRE是JAVA程序的运行环境,主要包含JVM,也就是大家熟悉的JAVA虚拟机,还有JAVA类库的所有类的class文件。

答:JDK是JAVA开发工具,它不仅提供了JAVA程序运行所需的JRE,还提供了一系列的编译、运行、开发等工具。JRE只是JAVA程序的运行环境,它最核心的内容就是JAVA虚拟机JVM以及核心类库。

2 如何利用JDK编译和运行程序?

JDK是SUN公司提供给java程序员的开发工具包,除了提供必要的程序运行环境以外,最主要的工具就是编译和运行,也就是javac和java命令,这两个命令均在JDK安装目录下的bin文件中。安装完JDK后需要进行环境变量的配置,具体步骤如下:
1、在系统的环境变量设置中,新建环境变量JAVA_HOME,变量值为JDK的安装路径。
2、在系统的环境变量中找到变量名为Path的环境变量,然后对其进行编辑,在最后面写上“;%JAVA_HOME%\bin”,点击保存。
3、在系统的环境变量中新建CLASSPATH环境变量,变量值为“%JAVA_HOME%\lib”。

答:利用JDK提供的命令javac对原文件进行编译,然后利用java命令来运行JAVA程序。为了更加方便的使用这两个命令,需要把JDK安装目录下的bin文件路径配置到系统环境变量Path中。

3 环境变量CLASSPATH的作用是什么?

CLASSPATH环境变量是在编译JAVA源码和运行程序是使用的,也就是为JAVA程序所依赖的接口、类等指定一个搜索路径。

答:CLASSPATH环境变量保存时一些目录和jar文件的地址,这些路径是为JAVA程序在编译和运行的时候搜索类而使用的。

4 如何为JAVA程序动态的指定类搜索路径?

答:JDK中的javac和java命令,提供了“-cp”和“-classpath”选项为JAVA程序动态的指定类搜索路径,使用方法比较简单,只需要把文件相应的目录路径或jar文件路径跟在选项后面就行。列如:javac -cp D:\work\java\log4j.jar HelloWord.java。

5 JAVA和C++在程序编译和运行上有什么区别?

任何一门计算机高级语言最终都会转变成机器码,也就是二进制,这样才会被计算机识别。其中,与机器码最为接近的就属汇编语言了,而JAVA和C++都会直接或者间接的变成汇编语言后,再运行程序。
对于C++来说,它的编译器都是把源码直接编译成计算机可以认识的机器码,如exe、dll之类的文件,然后直接运行即可。
对于JAVA来说,为了达到它的跨平台性能,就不得不多一个中间步骤,就是把源码编译成字节码文件(class文件),但是class文件是不能被计算机识别的,它只能被JAVA虚拟机识别,所以在运行JAVA程序之前必须先启动JAVA虚拟机。

答:C++源码编译以后,生成的是特定机器可以直接运行的文件,而JAVA源码编译以后生成的是中间的字节码文件(class文件)。这些字节码文件需要放在JVM中运行,而JVM有多个平台版本的,因此JAVA具有跨平台性,而C++没有。

6 什么是JVM及其工作原理?

JVM是JAVA程序的运行平台,就像虚拟出来一台计算机一样,负责执行JAVA编译好的字节码文件,并且为JAVA的跨平台性起到了关键作用。

答:JVM是一种用软件模拟出来的计算机,用于执行JAVA程序,有一套非常严格的技术规范,是JAVA跨平台性的依赖基础。JAVA虚拟机有它自己想象中的硬件,比如处理器、堆栈、寄存器等,还具有相应的指令系统,它允许JAVA程序就和普通计算机运行C++程序一样。

7 JAVA程序为什么无需使用delete语句进行内容回收?

JVM中有垃圾回收的机制,也就是堆内存管理的自动进行。列如java.lang.Object类中的finalize()方法,它会在垃圾回收器认为这个对象是垃圾的之后,真正回收之前被调用。但是JVM规范中并没有强制要实现垃圾自动回收功能,不过大部分版本的JVM已经实现此功能。值得注意的是垃圾回收线程是一个优先级很低的线程。

答:JAVA的堆内存数据的释放功能是由垃圾回收器自动进行的,无需程序员显示的调用delete方法。该机制有效的避免了程序员因为忘记释放内存而造成的内存溢出错误。

8 如何利用命名提示符把JAVA程序打包成jar文件?

jar命令不仅可以用来打包JAVA程序,只要是跟jar有关的操作,都可以通过jar命令来完成。命令格式如下:
jar {c t x u f} {v m e 0 M i} [-c 目录] 文件名。。。
其中{c t x u f}是必选参数,{v m e 0 M i}是可选参数,文件名也是必须有的。
-c 创建一个jar包;
-t 显示一个jar包的内容列表;
-x 解压一个jar包;
-u 添加文件到jar包中;
-f 指定jar包的文件名;

答:利用JDK下的bin目录中的jar命令就可以完成JAVA程序的打包,其中C、-v、-f是最常用的命令参数。

9 关于JAVA WEB项目的生成、部署、和配置问题?

java web开发指的是使用JAVA语言,并按照javaEE规范开发的web应用程序,这些应用程序需要可以部署到任何符合该规范的web容器中运行。java web程序的规范一般包括:目录结构,web配置文件,打包和部署,Servlet,jsp等。

答:java Web 应用程序的生成,需要把它需要的class文件编译好以后存放在WEB-INF/classes目录下,然后按照目录结构放置各类文件。如果需要增加自己的配置,那么久需要增加或者修改web.xml文件。对于java web应用程序的部署,可以使用文件夹和war文件两种部署方式,其中war文件就是把文件按照jar形式进行打包,只不过后缀为war。

10 EJB项目的生成和部署?

EJB作为SUN公司javaEE中的一套规范,它规范了一系列的API。EJB定义三种类型的Bean,分别是会话Bean(Session Bean),实体Bean(Entity Bean),消息驱动Bean(MessageDriven Bean)。

答:EJB项目的生成过程主要有两个步骤,编译class文件和在特定的位置放置配置文件。部署的过程也非常简单,就是把打包好的jar文件或者不打包的文件夹,存放在javaEE服务器指定的路径下即可。


原创粉丝点击