aliases:
- 面试八股文
author: zhanglei
tags:
- JAVA
- 面试
- 八股文
date: 2023-11-22
☀️ 当前文章笔记均是基于javaguid, 结合个人立即学习感悟而写, 链接Java基础常见面试题总结(上) | JavaGuide(Java面试 + 学习指南)
JAVA
基础概念与常识
Java语言有哪些特点?
-
简单易学(相比于C, C++, 汇编来讲)
-
是一门面向对象的语言(封装,继承,多态)
-
一次编译, 到处运行, 实现方式是因为JAVA运行在虚拟机, 不过各个平台的虚拟机是不同的
-
支持多线程(C++语言没有内置的多线程机制, 因此需要调用操作系统的多线程功能来进行多线程程序设计)
-
可靠性(具备完善的异常管理机制try-catch与内存管理机制GC垃圾回收)
-
安全性, 主要体现在以下方面
-
严格遵循面向对象的设计, 完善的访问权限修饰符
修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包 public Y Y Y Y Y protected Y Y Y Y/N N default Y Y Y N N private Y N N N N -
限制系统直接访问操作系统资源, 不像C语言一样存在指针层面的运算, 更多的是内存级别的运算
-
数据边界的检查, 有效防止缓存溢出等安全漏洞??
-
强制类型转换, 不允许非同类对象之间进行类型转换
-
对线程安全的支持CAS原子类的存在
-
代码执行之前需要经过编译器的检查
-
-
支持网络编程
-
独一无二的生态, spring真的是java程序员的春天
JAVA SE与EE的相同与不同?
- Java SE(Java Platform,Standard Edition): Java 平台标准版,Java 编程语言的基础,它包含了支持 Java 应用程序开发和运行的核心类库以及虚拟机等核心组件。Java 可
以用于构建桌面应用程序或简单的服务器应用程序。 - Java EE(Java Platform, Enterprise Edition ):Java 平台企业版,建立在 Java SE 的基础上,包含了支持企业级应用程序开发和部署的标准和规范(比如 Servlet、JSP、EJB、JDBC、JPA、JTA、JavaMail、JMS)。 Java EE 可以用于构建分布式、可移植、健壮、可伸缩和安全的服务端 Java 应用程序,例如 Web 应用程序。
简单来说,Java SE 是 Java 的基础版本,Java EE 是 Java 的高级版本。Java SE 更适合开发桌面应用程序或简单的服务器应用程序,Java EE 更适合开发复杂的企业级应用程序或 Web 应用程序。
除了 Java SE 和 Java EE,还有一个 Java ME(Java Platform,Micro Edition)。Java ME 是 Java 的微型版本,主要用于开发嵌入式消费电子设备的应用程序,例如手机、PDA、机顶盒、冰箱、空调等。Java ME 无需重点关注,知道有这个东西就好了,现在已经用不上了。
JVM vs JDK vs JRE
jvm (JavaVirtualMachine)
java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。

JVM 并不是只有一种!只要满足 JVM 规范,每个公司、组织或者个人都可以开发自己的专属 JVM。 也就是说我们平时接触到的 HotSpot VM 仅仅是是 JVM 规范的一种实现而已。
JDK(Java Development Kit)和JRE(Java Runtime Environment)
JDK(Java Development Kit),它是功能齐全的 Java SDK,是提供给开发者使用的,能够创建和编译 Java 程序。他包含了 JRE,同时还包含了编译 java 源码的编译器 javac 以及一些其他工具比如 javadoc(文档注释工具)、jdb(调试器)、jconsole(基于 JMX 的可视化监控⼯具)、javap(反编译工具)等等。
JRE(Java Runtime Environment) 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,主要包括 Java 虚拟机(JVM)、Java 基础类库(Class Library)。
也就是说,JRE 是 Java 运行时环境,仅包含 Java 应用程序的运行时环境和必要的类库。而 JDK 则包含了 JRE,同时还包括了 javac、javadoc、jdb、jconsole、javap 等工具,可以用于 Java 应用程序的开发和调试。如果需要进行 Java 编程工作,比如编写和编译 Java 程序、使用 Java API 文档等,就需要安装 JDK。而对于某些需要使用 Java 特性的应用程序,如 JSP 转换为 Java Servlet、使用反射等,也需要 JDK 来编译和运行 Java 代码。因此,即使不打算进行 Java 应用程序的开发工作,也有可能需要安装 JDK.
