包含JavaSE、集合、JVM、并发、MySQL、Redis、Spring、Mybatis、操作系统、计算机网络、分布式
参考:
面渣逆袭(https://tobebetterjavaer.com/sidebar/sanfene/nixi.html)
面试小抄第二版 亮白 By 库森
Java是一种广泛使用的面向对象的编程语言,其特点包括封装、继承和多态等核心概念,以及平台无关性。平台无关性得益于Java虚拟机(JVM)的机制,使得Java程序能够在任何支持JVM的平台上运行,无需重新编译。此外,Java还强调可靠性和安全性,比如垃圾回收机制帮助程序员避免内存泄漏,而类加载器则确保类的安全加载。
JVM(Java Virtual Machine)是Java程序运行的基础,它解析和执行Java字节码,实现了跨平台的能力。JRE(Java Runtime Environment)包含了运行Java程序所需的一切,包括JVM和必要的库,但不包含开发工具。JDK(Java Development Kit)是全面的Java SDK,除了JRE包含的内容外,还添加了编译器、调试器(如javac、jdb)和其他开发工具,用于创建和编译Java程序。
跨平台性是Java的重要特性,其原理在于Java程序编译后的字节码是与平台无关的,每种操作系统都有对应的JVM实现,JVM将字节码解释成对应平台的机器指令执行。这样,Java程序只需一次编译,就能在多种操作系统上运行。
字节码是Java源代码编译后的中间表示形式,以.class文件存在,它可以被任何平台上的JVM理解和执行,从而实现平台无关性。使用字节码的好处在于减少了编译次数和提高了程序的可移植性。
Java的数据类型分为两大类:基本数据类型(如byte、short、int、long、float、double、char和boolean)和引用数据类型(如类、接口和数组)。在类型转换中,较小的数据类型可以自动转换为较大的数据类型,而较大的数据类型转换为较小的数据类型需要强制转换。自动拆箱和装箱是Java自动处理基本类型与其对应的包装类之间的转换过程。
在逻辑运算符中,&和&&有显著区别。&是逻辑与运算符,总是会评估两边的表达式;而&&是短路与运算符,如果左边表达式为false,右边的表达式将不再计算,这在避免异常和提高效率方面很重要。例如,在判断字符串是否为空的场景下,应使用"&&"而非"&",以防止未初始化的对象引用引发NullPointerException。
Java的switch语句在不同版本中有不同的限制。在Java 5之前,switch仅支持byte、short、char和int。自Java 5引入枚举类型后,switch也可以接受枚举类型的值。直到Java 7,switch才开始支持字符串(String)操作,扩展了其灵活性,便于处理更多类型的数据。这些变化反映了Java语言随着版本更新不断演进以满足开发者需求的特点。