Skip to content

Commit cd8624e

Browse files
author
JasonLou
committed
update
1 parent 6877d82 commit cd8624e

13 files changed

Lines changed: 1336 additions & 564 deletions

‎Java工程师面试突击_目录.md‎

Lines changed: 50 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,59 @@
11
### <a name="3">Java工程师面试突击_目录</a>
22

3-
#### <a name="31">消息中间件</a>
4-
- [如何进行消息队列的选型](./notes/待整理.md)
5-
- [引入消息队列后如何保证其可用性](./notes/待整理.md)
6-
- [为什么消息队列里消费到了重复数据](./notes/待整理.md)
7-
- [发到消息队列的数据不见了](./notes/待整理.md)
8-
- [如何保证从消息队列拿到的数据按照顺序执行](./notes/待整理.md)
9-
- [几百万消息在小消息队列里积压了几小时](./notes/待整理.md)
10-
- [如果让你开发一个消息中间件,你会怎么设计架构](./notes/待整理.md)
11-
- [消息队列相关问题的面试技巧](./notes/待整理.md)
3+
#### <a name="31">[消息中间件](./Java工程师面试突击/消息中间件)</a>
4+
&ensp;&ensp;&ensp;&ensp; • [1. 如何进行消息队列的选型](./notes/待整理.md)<br>
5+
&ensp;&ensp;&ensp;&ensp; • [2. 引入消息队列后如何保证其可用性](./notes/待整理.md)<br>
6+
&ensp;&ensp;&ensp;&ensp; • [3. 为什么消息队列里消费到了重复数据](./notes/待整理.md)<br>
7+
&ensp;&ensp;&ensp;&ensp; • [4. 发到消息队列的数据不见了](./notes/待整理.md)<br>
8+
&ensp;&ensp;&ensp;&ensp; • [5. 如何保证从消息队列拿到的数据按照顺序执行](./notes/待整理.md)<br>
9+
&ensp;&ensp;&ensp;&ensp; • [6. 几百万消息在小消息队列里积压了几小时](./notes/待整理.md)<br>
10+
&ensp;&ensp;&ensp;&ensp; • [7. 如果让你开发一个消息中间件,你会怎么设计架构](./notes/待整理.md)<br>
11+
&ensp;&ensp;&ensp;&ensp; • [8. 消息队列相关问题的面试技巧](./notes/待整理.md)<br>
1212

13-
#### <a name="32">分布式搜索</a>
14-
- [分布式引擎架构是怎么设计的,为什么是分布式的](./notes/待整理.md)
15-
- [分布式搜索引擎写入和查询的工作流程](./notes/待整理.md)
16-
- [分布式搜索引擎在几十亿数据量级的场景下如何优化查询性能](./notes/待整理.md)
17-
- [你们公司分布式搜索引擎是怎么部署的](./notes/待整理.md)
18-
- [分布式搜索引擎相关问题的面试技巧](./notes/待整理.md)
13+
#### <a name="32">[分布式搜索](./Java工程师面试突击/分布式搜索)</a>
14+
&ensp;&ensp;&ensp;&ensp; • [1. 分布式引擎架构是怎么设计的,为什么是分布式的](./notes/待整理.md)<br>
15+
&ensp;&ensp;&ensp;&ensp; • [2. 分布式搜索引擎写入和查询的工作流程](./notes/待整理.md)<br>
16+
&ensp;&ensp;&ensp;&ensp; • [3. 分布式搜索引擎在几十亿数据量级的场景下如何优化查询性能](./notes/待整理.md)<br>
17+
&ensp;&ensp;&ensp;&ensp; • [4. 你们公司分布式搜索引擎是怎么部署的](./notes/待整理.md)<br>
18+
&ensp;&ensp;&ensp;&ensp; • [5. 分布式搜索引擎相关问题的面试技巧](./notes/待整理.md)<br>
1919

20-
#### <a name="33">分布式缓存</a>
21-
- [分布式缓存第一个问题]()
22-
- [redis线程模型,为什么单线程还是有很高的效率]()
23-
- [redis有哪些数据类型,分别在什么场景下使用比较合适]()
24-
- [redis过期策略,手写LRU]()
25-
- [怎么保证redis是高并发和高可用]()
26-
- [怎么保证redis挂掉之后再重启数据可以恢复]()
27-
- [redis cluster集群模式的原理]()
28-
- [一般如何应对缓存雪崩以及穿透问题]()
29-
- [如何保证缓存与数据库双写时的数据一致性]()
30-
- [redis的并发竞争该如何解决]()
31-
- [你们公司生产环境的redis集群的部署架构是什么样的]()
32-
- [分布式缓存面试题的回答技巧]()
20+
#### <a name="33">[分布式缓存](./Java工程师面试突击/分布式缓存)</a>
21+
&ensp;&ensp;&ensp;&ensp; • [1. 分布式缓存第一个问题]()<br>
22+
&ensp;&ensp;&ensp;&ensp; • [2. redis线程模型,为什么单线程还是有很高的效率]()<br>
23+
&ensp;&ensp;&ensp;&ensp; • [3. redis有哪些数据类型,分别在什么场景下使用比较合适]()<br>
24+
&ensp;&ensp;&ensp;&ensp; • [4. redis过期策略,手写LRU]()<br>
25+
&ensp;&ensp;&ensp;&ensp; • [5. 怎么保证redis是高并发和高可用]()<br>
26+
&ensp;&ensp;&ensp;&ensp; • [6. 怎么保证redis挂掉之后再重启数据可以恢复]()<br>
27+
&ensp;&ensp;&ensp;&ensp; • [7. redis cluster集群模式的原理]()<br>
28+
&ensp;&ensp;&ensp;&ensp; • [8. 一般如何应对缓存雪崩以及穿透问题]()<br>
29+
&ensp;&ensp;&ensp;&ensp; • [9. 如何保证缓存与数据库双写时的数据一致性]()<br>
30+
&ensp;&ensp;&ensp;&ensp; • [10. redis的并发竞争该如何解决]()<br>
31+
&ensp;&ensp;&ensp;&ensp; • [11. 你们公司生产环境的redis集群的部署架构是什么样的]()<br>
32+
&ensp;&ensp;&ensp;&ensp; • [12. 分布式缓存面试题的回答技巧]()<br>
3333

34-
#### <a name="34">分布式系统</a>
35-
- [为什么要把系统拆分为分布式,为啥要用dubbo]()
36-
- [dubbo的工作原理,注册中心挂了可以继续通信嘛]()
37-
- [dubbo都支持哪写通信协议以及序列化协议]()
38-
- [dubbo支持哪写负载均衡,高可用以及动态代理策略]()
39-
- [SPI是啥意思,dubbo的SPI机制原理]()
40-
- [基于dubbo如何做服务治理、服务降级以及重试]()
41-
- [分布式接口的幂等性如何保证,比如不能重复扣款]()
42-
- [分布式系统中的接口调用如何保证顺序性]()
43-
- [如何设计一个类似dubbo的rpc框架,架构上如何考虑]()
44-
- [zookeeper一般都有哪写使用场景]()
45-
- [什么是分布式锁,对比redis和zk两种分布式锁的优劣]()
46-
- [说说你们的分布式session方案,怎么做的]()
47-
- [分布式事务方案,有啥坑]()
48-
- [一般如何设计一个高并发的系统架构]()
34+
#### <a name="34">[分布式系统](./Java工程师面试突击/分布式系统)</a>
35+
&ensp;&ensp;&ensp;&ensp; • [1. 为什么要把系统拆分为分布式,为啥要用dubbo]()<br>
36+
&ensp;&ensp;&ensp;&ensp; • [2. dubbo的工作原理,注册中心挂了可以继续通信嘛]()<br>
37+
&ensp;&ensp;&ensp;&ensp; • [3. dubbo都支持哪写通信协议以及序列化协议]()<br>
38+
&ensp;&ensp;&ensp;&ensp; • [4. dubbo支持哪写负载均衡,高可用以及动态代理策略]()<br>
39+
&ensp;&ensp;&ensp;&ensp; • [5. SPI是啥意思,dubbo的SPI机制原理]()<br>
40+
&ensp;&ensp;&ensp;&ensp; • [6. 基于dubbo如何做服务治理、服务降级以及重试]()<br>
41+
&ensp;&ensp;&ensp;&ensp; • [7. 分布式接口的幂等性如何保证,比如不能重复扣款]()<br>
42+
&ensp;&ensp;&ensp;&ensp; • [8. 分布式系统中的接口调用如何保证顺序性]()<br>
43+
&ensp;&ensp;&ensp;&ensp; • [9. 如何设计一个类似dubbo的rpc框架,架构上如何考虑]()<br>
44+
&ensp;&ensp;&ensp;&ensp; • [10. zookeeper一般都有哪写使用场景]()<br>
45+
&ensp;&ensp;&ensp;&ensp; • [11. 什么是分布式锁,对比redis和zk两种分布式锁的优劣]()<br>
46+
&ensp;&ensp;&ensp;&ensp; • [12. 说说你们的分布式session方案,怎么做的]()<br>
47+
&ensp;&ensp;&ensp;&ensp; • [13. 分布式事务方案,有啥坑]()<br>
48+
&ensp;&ensp;&ensp;&ensp; • [14. 一般如何设计一个高并发的系统架构]()<br>
49+
50+
#### <a name="35">[数据库](./Java工程师面试突击/数据库)</a>
51+
&ensp;&ensp;&ensp;&ensp; • [1. 如何分库分表]()<br>
52+
&ensp;&ensp;&ensp;&ensp; • [2. 如何系统不停机迁移到分库分表]()<br>
53+
&ensp;&ensp;&ensp;&ensp; • [3. 如何设计可动态扩容缩容的分库分表方案]()<br>
54+
&ensp;&ensp;&ensp;&ensp; • [4. 分库分表后全局id如何生成]()<br>
55+
&ensp;&ensp;&ensp;&ensp; • [5. MySQL读写分离的原理,主从同步如何解决]()<br>
4956

50-
#### <a name="35">数据库</a>
51-
- [如何分库分表]()
52-
- [如何系统不停机迁移到分库分表]()
53-
- [如何设计可动态扩容缩容的分库分表方案]()
54-
- [分库分表后全局id如何生成]()
55-
- [MySQL读写分离的原理,主从同步如何解决]()
5657

5758

5859
---

‎Java应届生面试突击/多线程和并发/02_线程池的问题.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ handler 处理被拒绝的任务***。 <br>
4040
数会被自动释放。当线程池中线程数量大于 corePoolSize 时,如果某线程
4141
空闲时间超过 keepAliveTime,线程将被终止,直至线程池中的线程数目不
4242
大于 corePoolSize。这样,线程池可以动态的调整池中的线程数。*** <br>
43-
[02_1_1](/data/images/Java应届生面试突击/多线程和并发/02_1_1.png) <br>
43+
![02_1_1](/data/images/Java应届生面试突击/多线程和并发/02_1_1.png) <br>
4444

4545

4646
#### 使用线程池的好处:
@@ -84,7 +84,7 @@ public static ScheduledExecutorService ***newScheduledThreadPool***(int
8484
corePoolSize) <br>
8585
&ensp;&ensp;&ensp;&ensp;
8686
创建一个支持定时及周期性的任务执行的线程池,多数情况下可用来替代 Timer 类。 <br>
87-
[02_1_2](/data/images/Java应届生面试突击/多线程和并发/02_1_2.png) <br>
87+
![02_1_2](/data/images/Java应届生面试突击/多线程和并发/02_1_2.png) <br>
8888

8989

9090

@@ -163,7 +163,7 @@ public static ExecutorService newCachedThreadPool() {
163163
统(或者说 JVM)能够创建的最大线程大小。
164164

165165
##### ThreadPoolExecutor 类
166-
[02_1_3](/data/images/Java应届生面试突击/多线程和并发/02_1_3.png) <br>
166+
![02_1_3](/data/images/Java应届生面试突击/多线程和并发/02_1_3.png) <br>
167167

168168

169169
在 ThreadPoolExecutor 类中提供了四个构造方法: <br>
@@ -287,7 +287,7 @@ List<Runnable>容器,作为返回值。取消正在执行的线程(实际上仅
287287
果队列,工作线程通过轮询 requestQueue 获得任务,主线程通过查看结果队列,获得执
288288
行结果。因此,***对这个队列的设计,要实现线程同步***,以及一定阻塞和超时机制的设计,
289289
以防止因为不断轮询而导致的过多 cpu 开销。 <br>
290-
[02_1_4](/data/images/Java应届生面试突击/多线程和并发/02_1_4.png) <br>
290+
![02_1_4](/data/images/Java应届生面试突击/多线程和并发/02_1_4.png) <br>
291291

292292
##### 问:
293293
&ensp;&ensp;&ensp;&ensp;

‎Java应届生面试突击/多线程和并发/04_并发包的问题.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
### <a name="1">1. 并发包(Concurrent 包)中含有的类。</a>
1010
***并发包(Concurrent 包)中含有的类:*** <br>
11-
[04_1_1](/data/images/Java应届生面试突击/多线程和并发/04_1_1.png) <br>
11+
![04_1_1](/data/images/Java应届生面试突击/多线程和并发/04_1_1.png) <br>
1212

1313
&ensp;&ensp;&ensp;&ensp;
1414
***ConcurrentHashMap / CopyOnWriteArrayList。 <br>
@@ -26,9 +26,9 @@ Lock 接口。 <br>
2626
#### 同步辅助类的介绍如下:
2727

2828
##### 1.CountDownLatch:
29-
[04_1_2](/data/images/Java应届生面试突击/多线程和并发/04_1_2.png) <br>
30-
[04_1_3](/data/images/Java应届生面试突击/多线程和并发/04_1_3.png) <br>
31-
[04_1_4](/data/images/Java应届生面试突击/多线程和并发/04_1_4.png) <br>
29+
![04_1_2](/data/images/Java应届生面试突击/多线程和并发/04_1_2.png) <br>
30+
![04_1_3](/data/images/Java应届生面试突击/多线程和并发/04_1_3.png) <br>
31+
![04_1_4](/data/images/Java应届生面试突击/多线程和并发/04_1_4.png) <br>
3232

3333

3434
&ensp;&ensp;&ensp;&ensp;
@@ -61,8 +61,8 @@ countDown()之后,“锁计数器”才为 0,而前面提到的等待线程才
6161
比如:开 5 个多线程去下载,当 5 个线程都执行完了才算下载成功。 <br>
6262

6363
##### 2.CyclicBarrier
64-
[04_1_5](/data/images/Java应届生面试突击/多线程和并发/04_1_5.png) <br>
65-
[04_1_6](/data/images/Java应届生面试突击/多线程和并发/04_1_6.png) <br>
64+
![04_1_5](/data/images/Java应届生面试突击/多线程和并发/04_1_5.png) <br>
65+
![04_1_6](/data/images/Java应届生面试突击/多线程和并发/04_1_6.png) <br>
6666

6767
&ensp;&ensp;&ensp;&ensp;
6868
CyclicBarrier 翻译过来就是:循环的屏障,这个类是一个可以重复利用的

0 commit comments

Comments
 (0)