Java 编程之美总结

lidong / 2023-05-12 / 原文

内容来自王争 Java 编程之美

1、Java 基础

1、程序本质:代码是如何被执行的?CPU、操作系统、虚拟机各司何职

2、基础语法:从 CPU 角度看变量、数组、类型、运算、跳转、函数等语法

3、引用类型:同样都是存储地址,为何 Java 引用比 C / C++ 指针更安全

4、基本类型:既然 Java 一切皆对象,那又为何要保留 int 等基本类型

5、位运算:>>> 和 >> 有何区别(原码 / 反码 / 补码、算术位移 / 逻辑位移)

6、浮点数:计算机如何用二进制表示浮点数?为何 0.1 + 0.1 != 0.2

7、字符:为何 C / C++ 中 char 占 1 个字节,而 Java 中 char 占 2 个字节

8、字符串:请解释设计 String 类用到的三个技术:压缩、常量池、不可变

9、对象:请描述一下 Java 对象的内存结构,以及如何统计对象大小

10、关键字:静态内部类实现的单例如何做到线程安全且可延迟加载

11、容器:为什么不推荐在项目中使用 Vector、Stack、HashTable

12、容器工具类:请描述 TimSort 和 DualPivotQuickSort 的实现原理

13、HashMap(上):为何 HashMap 中数组的大小必须是 2 的幂次方

14、HashMap(下):为何链表树化的阈值为 8,默认装载因子是 0.75

15、LinkedHashMap:如何使用 LinkedHashMap 实现 LRU 缓存

16、迭代器:绝大多数 Java 容器都有的 modCount 属性是做什么用的

17、异常(上):在项目开发中如何正确的定义、处理、记录异常

18、异常(下):异常导致程序变慢的核心原因是什么

19、io 类库:java.io 类库如此庞大,怎么才能全面系统的掌握它

20、nio 类库:BIO、NIO、AIO 三种 Java I / O 模型的实现原理和区别

21、高速 I / O(上):普通的 I / O 读写流程都存在哪些性能问题

22、高速 I / O(下):mmap 和零拷贝是如何提高 I / O 读写速度的

23、泛型:为什么 C++ 泛型支持 int 等基本类型而 Java 泛型不支持呢

24、反射:为什么通过反射创建对象要比使用 new 创建对象慢

25、注解:注解的配置方式相对于 XML 配置文件有什么优缺点

26、动态代理:为什么基于 JDK 实现的动态代理要求原始类有接口

27、函数式编程:函数接口、Lambda 表达式、方法引用、Stream 流

2、多线程

28、

29、

30、

31、

32、

33、

34、

35、

36、

37、

38、

39、

40、

41、

42、

43、

44、

45、

46、

47、

48、

49、

50、

51、

52、

53、

54、

3、JVM

55、

56、

57、

58、

59、

60、

61、

62、

63、

64、

4、资料

资料 1:字节码

资料 2:查看 Java 代码对应的汇编代码