Java 程序员经典面试题集大全(一),分享面试经历的网站
本题集由尚学堂学员整理,列举了众多 IT 公司面试真题,对应聘 Java 程序员职位的常见考点和知识体系都进行的分类和归纳整理。
本题集适合应聘 Java 和 JavaEE 职位的程序员作为面试复习、学习和强化的资料,也适合其他程序员作为拓展读物进行阅读。
本题集包含了常见的算法、数据结构,也包含了新的高级技术,比如:微服务架构等技术的面试题目。本题集非常全面,对于工作 1-5 年左右的 java 程序员面试有非常好的指导作用。
Java 基础、语法:
==========
1、Java 跨平台原理(字节码文件、虚拟机)
C/C++语言都直接编译成针对特定平台机器码。如果要跨平台,需要使用相应的编译器重新编译。
Java 源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。解释是通过 Java 虚拟机来执行的。
字节码文件不面向任何具体平台,只面向虚拟机。
Java 虚拟机是可运行 Java 字节码文件的虚拟计算机。不同平台的虚拟机是不同的,但它们都提供了相同的接口。
Java 语言具有一次编译,到处运行的特点。就是说编译后的.class 可以跨平台运行,前提是该平台具有相应的 Java 虚拟机。但是性能比 C/C++要低。
Java 的跨平台原理决定了其性能没有 C/C++高
?2、Java 的安全性
语言层次的安全性主要体现在:
**Java 取消了强大但又危险的指针,而代之以引用。**由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。
**垃圾回收机制:**不需要程序员直接控制内存回收,由垃圾回收器在后台自动回收不再使用的内存。避免程序忘记及时回收,导致内存泄露。避免程序错误回收程序核心类库的内存,导致系统崩溃。
**异常处理机制:**Java 异常机制主要依赖于 try、catch、finally、throw、throws 五个关键字。
**强制类型转换:**只有在满足强制转换规则的情况下才能强转成功。
底层的安全性可以从以下方面来说明
Java 在字节码的传输过程中使用了公开密钥加密机制(PKC)。
在运行环境提供了四级安全性保障机制:
字节码校验器 -类装载器 -运行时内存布局 -文件访问限制
3、Java 三大版本
Java2 平台包括标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本:
Standard Edition(标准版) J2SE 包含那些构成 Java 语言核心的类。
**比如:**数据库连接、接口定义、输入/输出、网络编程
Enterprise Edition(企业版) J2EE 包含 J2SE 中的类,并且还包含用于开发企业级应用的类。
**比如:**servlet、JSP、XML、事务控制
Micro Edition(微缩版) J2ME 包含 J2SE 中一部分类,用于消费类电子产品的软件开发。
**比如:**呼机、智能卡、手机、PDA、机顶盒
**他们的范围是:**J2SE 包含于 J2EE 中,J2ME 包含了 J2SE 的核心类,但新添加了一些专有类
应用场合,API 的覆盖范围各不相同。
4、什么是 JVM?什么是 JDK? 什么是 JRE?
JVM :
JVM 是 Java 虚拟机(Java Virtual Machine)的缩写,它是整个 java 实现跨平台的最核心的部分,所有的 java 程序会首先被编译为.class 的类文件,这种类文件可以在虚拟机上执行,也就是说 class 并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。JVM 是 Java 平台的基础,和实际的机器一样,它也有自己的指令集,JVM 的主要工作是解释自己的指令集(即字节码)到 CPU 的指令集或对应的系统调用,保护用户免被恶意程序骚扰。?JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件(.class 文件)。
JRE:
JRE 是 Java 运行环境(Java Runtime Environment)的缩写。光有 JVM 还不能让 class 文件执行,因为在解释 class 的时候 JVM 需要调用解释所需要的类库 lib。在 JDK 的安装目录里你可以找到 jre 目录,里面有两个文件夹 bin 和 lib,在这里可以认为 bin 里的就是 jvm,lib 中则是 jvm 工作所需要的类库,而 jvm 和 lib 和起来就称为 jre。所以,在你写完 java 程序编译成.class 之后,你可以把这个.class 文件和 jre 一起打包发给朋友,这样你的朋友就可以运行你写程序了(jre 里有运行.class 的 java.exe)。JRE 是 Sun 公司发布的一个更大的系统,它里面就有一个 JVM。JRE 就与具体的 CPU 结构和操作系统有关,是运行 Java 程序必不可少的(除非用其他一些编译环境编译成.exe 可执行文件……
),JRE 的地位就象一台 PC 机一样,我们写好的应用程序需要操作系统帮我们运行,同样的,我们编写的 Java 程序也必须要 JRE 才能运行。?
JDK:
JDK 是 Java 开发工具包(Java Development Kit)的缩写。每个学 java 的人都会先在机器上装一个 JDK,那 让我们看一下 JDK 的安装目录。在目录下面有六个文件夹、一个 src 类库源码压缩包、和其他几个声明文件。其中,真正在运行 java 时起作用的是以下四个文件夹:bin、include、lib、jre。
评论