Skip to content

Commit 3e3a1e8

Browse files
committed
[docs update]Java基础常见面试题总结(下)内容完善
1 parent 1a44e4a commit 3e3a1e8

11 files changed

+29
-45
lines changed

docs/database/redis/cache-basics.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ tag:
55
- Redis
66
---
77

8-
**缓存基础常见知识点&面试题总结** 为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)中。
8+
**缓存基础常见知识点&面试题总结** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)(点击链接即可查看详细介绍以及获取方法)中。
99

1010
[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) 的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。
1111

docs/database/redis/redis-cluster.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ tag:
55
- Redis
66
---
77

8-
**Redis 集群** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)中。
8+
**Redis 集群** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)(点击链接即可查看详细介绍以及获取方法)中。
99

1010
[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) 的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。
1111

docs/distributed-system/distributed-transaction.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: 分布式事务
33
category: 分布式
44
---
55

6-
**分布式事务** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)中。
6+
**分布式事务** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)(点击链接即可查看详细介绍以及获取方法)中。
77

88
[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) 的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。
99

docs/high-availability/fallback&circuit-breaker.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: 降级&熔断
33
category: 高可用
44
---
55

6-
**降级&熔断** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)中。
6+
**降级&熔断** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)(点击链接即可查看详细介绍以及获取方法)中。
77

88
[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) 的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。
99

docs/high-performance/load-balancing.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ head:
99
content: 负载均衡指的是将用户请求分摊到不同的服务器上处理,以提高系统整体的并发处理能力。负载均衡可以简单分为服务端负载均衡和客户端负载均衡 这两种。服务端负载均衡涉及到的知识点更多,工作中遇到的也比较多,因为,我会花更多时间来介绍。
1010
---
1111

12-
**负载均衡** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)中。
12+
**负载均衡** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)(点击链接即可查看详细介绍以及获取方法)中。
1313

1414
[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) 的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。
1515

docs/java/basis/generics-and-wildcards.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ tag:
55
- Java基础
66
---
77

8-
**泛型&通配符** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)中。
8+
**泛型&通配符** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)(点击链接即可查看详细介绍以及获取方法)中。
99

1010
[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) 的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。
1111

docs/java/basis/java-basic-questions-03.md

+18-34
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ String[] stringArray = { "Hello", "World" };
312312
printArray( intArray );
313313
printArray( stringArray );
314314
```
315+
315316
> 注意: `public static < E > void printArray( E[] inputArray )` 一般被称为静态泛型方法;在 java 中泛型只是一个占位符,必须在传递类型后才能使用。类在实例化时才能真正的传递类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数,静态的方法的加载就已经完成了,所以静态泛型方法是没有办法使用类上声明的泛型的。只能使用自己声明的 `<E>`
316317
317318
### 项目中哪里用到了泛型?
@@ -435,7 +436,7 @@ SPI 将服务接口和具体的服务实现分离开来,将服务调用方和
435436

436437
通过 SPI 机制能够大大地提高接口设计的灵活性,但是 SPI 机制也存在一些缺点,比如:
437438

438-
- 遍历加载所有的实现类,这样效率还是相对较低的
439+
- 需要遍历加载所有的实现类,不能做到按需加载,这样效率还是相对较低的
439440
- 当多个 `ServiceLoader` 同时 `load` 时,会有并发问题。
440441

441442
## I/O
@@ -461,7 +462,7 @@ SPI 将服务接口和具体的服务实现分离开来,将服务调用方和
461462

462463
<p style="text-align:right;font-size:13px;color:gray">https://www.corejavaguru.com/java/serialization/interview-questions-1</p>
463464

464-
### Java 序列化中如果有些字段不想进行序列化,怎么办
465+
### 如果有些字段不想进行序列化怎么办
465466

466467
对于不想进行序列化的变量,使用 `transient` 关键字修饰。
467468

@@ -473,47 +474,30 @@ SPI 将服务接口和具体的服务实现分离开来,将服务调用方和
473474
- `transient` 修饰的变量,在反序列化后变量值将会被置成类型的默认值。例如,如果是修饰 `int` 类型,那么反序列后结果就是 `0`
474475
- `static` 变量因为不属于任何对象(Object),所以无论有没有 `transient` 关键字修饰,均不会被序列化。
475476

476-
### 获取用键盘输入常用的两种方法
477-
478-
方法 1:通过 `Scanner`
477+
### Java IO 流了解吗?
479478

480-
```java
481-
Scanner input = new Scanner(System.in);
482-
String s = input.nextLine();
483-
input.close();
484-
```
479+
IO 即 `Input/Output`,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称为 IO 流。IO 流在 Java 中分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流。
485480

486-
方法 2:通过 `BufferedReader`
487-
488-
```java
489-
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
490-
String s = input.readLine();
491-
```
481+
Java IO 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。
492482

493-
### Java 中 IO 流分为几种?
483+
- `InputStream`/`Reader`: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。
484+
- `OutputStream`/`Writer`: 所有输出流的基类,前者是字节输出流,后者是字符输出流。
494485

495-
- 按照流的流向分,可以分为输入流和输出流;
496-
- 按照操作单元划分,可以划分为字节流和字符流;
497-
- 按照流的角色划分为节点流和处理流。
486+
相关阅读:[Java IO 基础知识总结](../io/io-basis.md)
498487

499-
Java IO 流共涉及 40 多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java IO 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。
488+
### I/O 流为什么要分为字节流和字符流呢?
500489

501-
- InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。
502-
- OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。
503-
504-
按操作方式分类结构图:
505-
506-
![IO-操作方式分类](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/IO-操作方式分类.png)
507-
508-
按操作对象分类结构图:
509-
510-
![IO-操作对象分类](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/IO-操作对象分类.png)
490+
问题本质想问:**不管是文件读写还是网络发送接收,信息的最小存储单元都是字节,那为什么 I/O 流操作要分为字节流操作和字符流操作呢?**
511491

512-
### 既然有了字节流,为什么还要有字符流?
492+
个人认为主要有两点原因:
513493

514-
问题本质想问:**不管是文件读写还是网络发送接收,信息的最小存储单元都是字节,那为什么 I/O 流操作要分为字节流操作和字符流操作呢?**
494+
- 字符流是由 Java 虚拟机将字节转换得到的,这个过程还算是比较耗时;
495+
- 如果我们不知道编码类型的话,使用字节流的过程中很容易出现乱码问题。
515496

516-
回答:字符流是由 Java 虚拟机将字节转换得到的,问题就出在这个过程还算是非常耗时,并且,如果我们不知道编码类型就很容易出现乱码问题。所以, I/O 流就干脆提供了一个直接操作字符的接口,方便我们平时对字符进行流操作。如果音频文件、图片等媒体文件用字节流比较好,如果涉及到字符的话使用字符流比较好。
497+
### Java IO 中的设计模式有哪些?
517498

499+
[Java IO 设计模式总结](../io/io-design-patterns.md)
518500

501+
### BIO、NIO 和 AIO 的区别?
519502

503+
[Java IO 模型详解](../io/io-model.md)

docs/java/io/io-basis.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ output.writeObject(person);
166166
- 字符流是由 Java 虚拟机将字节转换得到的,这个过程还算是比较耗时。
167167
- 如果我们不知道编码类型就很容易出现乱码问题。
168168
169-
乱码问题这个很容易就可以复现,我们只需要将 上面提到的 `FileInputStream` 代码示例中的 `input.txt` 文件内容改为中文即可,原代码不需要改动。
169+
乱码问题这个很容易就可以复现,我们只需要将上面提到的 `FileInputStream` 代码示例中的 `input.txt` 文件内容改为中文即可,原代码不需要改动。
170170
171171
![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/java/image-20220419154632551.png)
172172

docs/system-design/framework/netty.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Netty常见面试题总结
33
category: 框架
44
---
55

6-
**Netty** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)中。
6+
**Netty** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)(点击链接即可查看详细介绍以及获取方法)中。
77

88
[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) 的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。
99

docs/system-design/framework/spring/springboot-knowledge-and-questions-summary.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ tag:
55
- Spring
66
---
77

8-
**Spring Boot** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)中。
8+
**Spring Boot** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)(点击链接即可查看详细介绍以及获取方法)中。
99

1010
[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) 的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。
1111

docs/system-design/system-design-questions.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ title: 系统设计常见面试题总结
33
category: Java面试指北
44
---
55

6-
**系统设计** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)中。
6+
**系统设计** 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)(点击链接即可查看详细介绍以及获取方法)中。
77

8-
[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) 的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。
8+
[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) 的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn) 的补充完善,两者可以配合使用。
99

1010
![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304102536445.png)
1111

0 commit comments

Comments
 (0)