# 大纲

  1. 基础 (大概学习 2-3 个月可以掌握)

  2. 工具 maven+git+idea

  3. mysql (2 星期左右)

  4. 基础前端 (2 星期左右)

  5. 框架 SSM+Springboot (1 到 2 个月左右)

  6. 项目 电商项目已做过了,再找几个不同类别差不多的做做 (2 个月左右)

  7. 找工作面试阶段

一般来说:1 周至 1 个月,如果 3 个月都找不到工作简历有大问题了

# 2023.4.26 自我分析

  1. Java 基础差不多了,需要结合面试题笔试题巩固
  2. 工具基本上全用过,也较为熟练了,不需要刻意再专研。
  3. 数据库已会,多看看 sql 文件,理解句子,时间充裕可以写写 SQL
  4. 三件套和前端 vue 基本会,可以再学点 react
  5. 框架会用但缺乏原理理解,需要结合面试题八股文学习。
  6. 项目:电商差不多就是要把做过的会说出来,再者就是再做个优质的,尽量是技术含量高一点的某一个模块,不需要完整的一个项目都做出来。
  7. 工作的话就主要是简历及时更新,暂定每个月的一号去写一下简历。

# 2023.5.7 自我分析

  1. 计划是面试算法:今天已经完成到了第十题,总共 66 题,还有 56 题,预计 7 月 2 日完成。
  2. 英语六级,5 月 21 日前完成所有。
  3. 今天 rabbitMQ 入门完成。

# 2023.5.17 自我分析

# 做过的项目总结与收获

# 电脑商城

这个项目是我最早接触到的 SpringBoot 项目,通过该项目快速的了解了前端后端接口数据的传输,以及 json,Ajax,数据库表的一些设计。

# springboot+vue 全栈开发一个后台管理系统

这个系统一开始是出于对 vue 的一个补充而学的,起初速成学习了一下 vue 的基本语法,nodejs,以及脚手架的搭建。项目的低阶部分完成的已经非常不错了,使用了一些比较的常用的技术栈,包括 element-ui。高阶部分就是一些高德地图的 api 整合还没有尝试整合,有些渲染问题自己也不太会调试,还是没有那个前端的体系开发能力

# 接下来就是一些乱起八糟的项目一点点的单独技术栈了,前面可以说是入职 java 工程师的基本操作了


# redis 秒杀商城

学习了基本的 redis 概念,一开始是用虚拟机进行环境的搭建的,但是还没有开始进行入门,仅仅是搭建了环境,现在是基本上都用 docker 容器进行搭建,非常的方便,包括后面的 rabhitMQ 我也是用的 docker 安装一个镜像来直接使用,就是需要注意端口的一致性问题。

# 自己的博客搭建系统

2023.5.2 更新:系统开发的,做完了一般就没动静了,受限于技术的问题,有空一定要把项目功能尽可能的去完善,以后的路线就是主要专门抓住某一个模块功能进行开发。这个项目也是基本上用到了自己所学的技术了,能做的也都做了。
2023. 更新。。。

# 技术栈总结

# 数据库

建议学 mysql 就可以,oracle 有精力可以研究下,银行电信偏爱 oracle, 但互联网公司等中小公司基本都是 mysql (免费啊)

存储过程建议了解,互联网公司都是禁止把代码写到存储过程到,但是有些传统公司偷懒也是用存储过程写业务

优化 SQL 是面试必问的,建议把索引好好学习下

# 中间件

redis 必学,高频面试 ,互联网公司必备

消息中间件学一个就可以,推荐 RabbitMQ

(东西比较多,会主流即可)

# 微服务

互联网公司喜欢问微服务,程序汪建议可以学阿里的 dubbo 框架,

有能力可以再学下 springcloud

包装微服务项目经验,程序汪不建议 因为 真实的微服务项目很复杂的,包装了你也讲不清楚啊

互联网公司面试是比较爱问微服务,准备下这方面的项目面试会加分

# Java 的一些概况

Java Swing 图形界面开发 ,基本可以跳过这块知识点里

IO 流(一般难)里面 API 非常多,基本文件读写学会就可以,不用把所有 API 都学会

反射(比较难),其实反射基本 API 了解就可以,开发框架反射用的很多,实际业务开发代码用的很少,如果你要深耕源码 那反射必须学深点

网络编程(很难),其实一本业务开发网络编程这块涉及比较少,学好非常难,建议小白们可以跳过,如果你要深耕源码 ,那请你啃下去

多线程(比较难),互联网业务真的会用到,但一般公司很少用多线程,因为他们数据量非常少,如果你要去互联网公司必须把多线程研究深点点

前端,如果你自己定位是全栈 前端的基本知识点肯定要会,大公司都流行前后端分离了,后端就只搞后端,前端基本了解就可以,目前 vue 用的比较多

# Java 基本语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
55
56
57
58
59
60
61
62
63
1. Java语言的发展史

2. JDK的下载和安装

3. DOS命令的介绍和使用

4. Path环境变量的配置

5. 第一个代码HelloWorld案例

6. NotePad++软件的安装和使用

7. Java中的数据类型

8. 常量的使用

9. 变量的定义与使用

10. Java中代码的书写规范

11. 数据类型之间的转换

12. Java中的各种运算符操作

13.if分支语句的灵活使用

14. switch分支语句

15. for循环结构

16. while循环结构

17. do..while循环结构

18.各种循环语句的区别和应用场景

19.循环跳转控制语句

20. 嵌套循环的应用

21. 使用循环嵌套打印直角三角形

22. IDEA开发软件

23. 数组的动态初始化

24. 数组的访问格式|

25. 数组的静态初始化

26. Java的内存划分和作用

27. 分析数组在内存中的存储

28. 方法的定义和调用

29. 方法的参数和返回值问题

30. 方法的重载(Overload)

31. 参数是基本类型和引用类型的区别

32. Debug断点调试的使用

# 基础

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
1. 类和对象的概述

2. 分析对象在内存中的存储

3. 成员变量和局部变量的区别

4. private关键字的应用

5. this关键字的应用

6. this关键字的内存原理

7. 面向对象特性之封装

8. 构造方法(Constructor)

9. 构造方法的注意事项

10. 标准类的定义规范

03、API基础

1. API的使用方式

2. String类的特点

3. String类的常用构造方法

4. 字符串的比较规则

5. 用户登录的案例

6. 遍历字符串的方式

7. 字符串的拼接

8. 字符串的反转操作

9. StringBuilder类的作用

10. StringBuilder类的构造方法

11. StringBuilder类的常用方法

12. 用StringBuilder完成字符串拼接和反转

04、集合基础

1. ArrayList集合的特点

2. ArrayList的构造方法

3. ArrayList的常用操作

4. 集合存储自定义类型并遍历
1. 面向对象特性之继承

2. 继承的好处和弊端

3. super关键字的作用

4. 继承时子父类的访问特点

5. 方法的重写(Override)

6. package关键字的作用

7. import关键字的作用

8. final关键字的作用

9. static关键字的作用

10. static关键字内存分析

11. 面向对象特性之多态

12. 多态的好处和弊端

13. 多态中成员访问的特点

14. 多态中的数据类型转型

15. instanceof关键字的使用

16. 抽象类的特点

17. 抽象类的成员特点

18. 模板设计模式

19. 接口的概述

20. 接口的特点和注意事项

21. 类、抽象类、接口之间的关系

22. 内部类的概述

23. 成员内部类的使用

24. 局部内部类的使用

25. 匿名内部类的使用

26. 匿名内部类在开发中的应用

1. Math类及其常用方法

2. System类及其常用方法

3. Object类的toString()和equals()方法

4. Objects类以及常用方法

5. BigDecimal类及其常用方法

6. 二分查找原理以及代码实现

7. 冒泡排序的原理分析及代码实现

8. 递归的应用和注意事项

9. 快速排序原理以及代码实现

10. jar包的制作以及使用

11. Arrays类及其常用方法

12. 基本类型的包装类

13. 自动拆箱和自动装箱

14. Optional类以及使用

15. ProcessBuilder类以及使用

16. 日期Date类型及其常用方法

17. 日期格式化类SimpleDateFormat

18. 日历Calendar类的使用

19. Jdk8新增的日期Date API(Local￾DateTime,LocalDate,LocalTime,

Instant,Period,Duration)

20. NumberFormat类以及使用

1. 异常的概述

2. JVM默认处理异常的方式

3. 异常处理方式之try..catch

4. 异常处理方式之throws

5. Throwable的常用方法

6. 异常的分类和区别

7. 异常的注意事项

8. 自定义异常的使用



04、集合

06、多线程

1. 集合体系结构

2. 单列集合体系的详细讲解

3. 迭代器的使用

4. 增强for循环的使用

5. forEach方法遍历

6. 并发修改异常的产生原因和解决办法

7. 数据结构之栈和队列

8. 数据结构之数组和链表

9. ArrayList集合源码分析

10. LinkedList集合源码分析

11. 双列集合体系的详细讲解

12. Map集合的遍历方式

13. TreeSet的自然排序和比较器排序

14. 数据结构之树

15. 数据结构之二叉树

16. 数据结构之二叉平衡树

17. 数据结构之红黑树

18. TreeSet(TreeMap)底层源码分析

19. 数据结构之哈希表

20. Jdk1.7中HashSet(HashMap)源码分析

21. Jdk1.8中HashSet(HashMap)源码分析

22. 泛型的使用

23. 泛型通配符的使用

24. 可变参数的使用和注意事项

05、IO

1. File类对文件的操作

2. IO流的概述和分类

3. 字节流写数据的方式

4. FileOutputStream和BufferedOutput￾Stream源码分析

5. 字节流读数据的方式

6.FileInputStream和BufferedInput￾Stream源码分析

7. 字节流完成视频文件的复制

8. 编码表

9. 字符流写数据的方法

10. 字符串读数据的方法

11. 字符缓冲流的使用

12. 字符缓冲流的特有方法

13. 标准输入输出流

14. 打印流的使用

15. 对象序列化流

16. serialVersionUID&transient

1. 进程和线程的区别

2. Java实现多线程的三种方式

3. 线程API之线程名称

4. 线程API之线程休眠

5. 线程API之线程礼让

6. 线程API之线程优先级

7. 线程API之线程中断

8. 线程API之后天线程

6. 线程的安全问题

8. 同步代码块

9. 同步方法

10. Lock锁

11. 死锁概述以及现象演示

12. 死锁诊断(jstack工具的使用)

13. 线程通讯之生产者消费者问题

14. 线程通讯代码实现之同步代码块

15. 线程通讯代码实现之Condition实现

通信

16.线程通讯代码实现之阻塞队列

(BlockingQueue)实现

17. 线程的状态

18. 线程池概述

19. 自定义线程池

20. Executors创建线程池

21. ThreadPoolExecutor创建线程池

22.ThreadPoolExecutor原理介绍以及

任务拒绝策略介绍

23. volatile关键字

24. JMM内存模型

25. 原子性概述

26. 原子类AtomicInteger类的使用

27. CAS算法

28.并发容器ConcurrentHashMap原

理讲解

29.并发工具类(CountDown￾Latch,Semaphore,CyclicBarrier,Ex￾changer)的使用

17. Properties的用法

18. 内存操作流的使用

19. RandomAccessFile使用

20. SequenceInputStream的使用

21. 压缩流/解压缩流







07/08

07、网络编程 10、基础加强

1. 网络编程的概述

2. 网络编程的三要素之ip地址(ipv4,ipv6)

3. InetAddress类的操作

4. 网络编程的三要素之端口和协议的详

细解释

5. 网络参考模型

6. UDP协议发送与接收数据

7. 聊天小程序案例

8. UDP协议中广播与组播

9. TCP协议发送与接收数据

10. 多线程下文件的上传

11. NIO概述

12. NIO之Buffer的使用

13. NIO之Channel的使用

14. NIO之Selector的使用

15. 自定义非阻塞式的HTTP静态服务器

08、Lambda

1. Lambda表达式的标准写法

2. Lambda的省略规则

3. Lambda和匿名内部类的区别

4. JDK8和9对接口组成的更新

5. 方法引用的介绍

6. Stream流的中间操作

7. Stream流的终结操作

8. Stream流的收集操作

09、反射

1.虚拟机类加载机制(概述,类加载过

程,类的初始化时机)

2.类加载器(概述,分类,双亲委派机

制,ClassLoader类,自定义类加载)

3. 反射机制的概述

4. 获取Class类的对象

5. 反射获取构造方法并使用

6. 反射获取成员方法并使用

7. 反射获取成员变量并使用

9.自定义非阻塞式的HTTP动态服务器

# 普通 maven 会用就行,高级的就得懂原理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Maven高级

1. pom文件依赖传递介绍

2. 依赖冲突的解决

3. Maven项目继承的关系

4. Maven项目聚合的关系

5. 分模块搭建聚合项目

6. 私服仓库介绍和搭建

7. 本地资源上传到私服

8. 从私服下载资源到本地

9. 安装第三方资源到本地仓库

10. 安装第三方资源到私服仓库

11. Maven多环境开发

12. 单元测试

13. 自定义插件

# git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1. Git概述和特点

2. Git的下载安装

3. Git基本概念

4. Git操作入门

5. Git历史版本控制

6. Git分支版本控制

7. Git远程仓库的操作

8.Git远程托管平台应用(GitHub,码云)

9. Git解决冲突

10.IDEA中集成Git应用

11.Git常用操作命令

# spring

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
1.框架简介

2.Spring概述

3.耦合与解耦

4.工厂设计模式

5.IoC概述及作用

6.Spring基于XML的IoC配置入门

7.Spring基于XML的IoC配置详解

8.依赖注入的概念

9.Spring中的依赖注入

10.Spring中多配置文件配置及问题分析

11.Spring基于XML和Mybatis的整合

12.Spring基于注解的IoC配置

13.常用注解的使用

14.Spring整合Junit

15.Spring高级分析之-IoC容器说明

16.Spring高级分析之-组件扫描器TypeFilter

17.Spring高级分析之-Import注解和自

定义导入器

18.Spring高级分析之-BeanFactoryPostProcessor

19.Spring高级分析之-BeanPostProcessor

20.Spring高级分析之-InitializingBean

21.Spring高级分析之-FactoryBean

22.AOP编程思想,作用,优势及实现原

理分析

23.代理模式和动态代理实现AOP思想的

案例

24.Spring中的AOP简介和常用术语

25.Spring基于XML的AOP配置

26.5种通知类型分析

27.切入点表达式详解

28.Spring基于注解的AOP配置

29.Spring中AOP的高级分析之-EnableAspectjAutoProxy注解的解析分析

30.Spring中AOP的运行期增强的执行过

程分析

31.Spring中事务的API详解

32.Spring基于XML的事务配置

33.Spring基于注解的事务配置

34.Spring事务高级分析之-TransactionTemplate源码分析

35.Spring事务高级分析之-DataSourceUtils源码分析

36.Spring事务高级分析之-TransactionSynchronizationManager源码分析

37.Spring事务高级分析之-TransactionEventListener注解的加载过程分析

38.Spring中的模板对象介绍

39.JdbcTemplate和NamedParameterJdbcTemplate的使用

40.RedisTemplate的使用

41.Spring事务设计的设计模式分析

# SpringMVC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
1.SpringMVC概述

2.SpringMVC基于XML的环境搭建

3.SpringMVC基于Servlet3.0规范的纯注解环境搭建

4.纯注解环境搭建的入门案例执行过程分析

5.SpringMVC常用组件介绍

6.SpringMVC的 @RequestMapping注解详解

7.SpringMVC中的请求参数封装

8.SpringMVC中的表单校验相关注解

9.SpringMVC中和ServletAPI相关的注解使用详解

10.SpringMVC中控制器方法的返回值详解

11.SpringMVC中的异步交互和相关注解介绍

12.Rest风格URL详解

13.@PathVariable注解详解

14.Postman工具

15.跨域访问详解和 @CrossOrigin注解

的使用

16.SpringMVC中的请求参数封装源码

分析和运用的设计模式介绍

17.SpringMVC中的父子容器

18.SpringMVC中的异常处理

19.SpringMVC中的拦截器使用

20.SpringMVC中的文件上传

21.Spring SpringMVC Mybatis的整合

# Mybatis-Plus

1
2
3
4
5
6
7
8
9
10
11
1.Mybatis-Plus简介

2.Mybatis-Plus快速入门

3.Mybatis-Plus通用CRUD

4.Mybatis-Plus条件构造器

5.Mybatis-Plus的Service封装

6.Mybatis-Plus代码生成器

# SpringBoot

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1. SpringBoot介绍

2. SpringBoot的核心功能

3. SpringBoot的优势

4. SpringBoot入门程序

5. 起步依赖原理分析

6. 自动配置原理解析

7. 自定义起步依赖并实现自动配置

8. SpringBoot配置文件类型

9. 配置文件与配置类的属性映射方式

10. SpringBoot整合Mybatis

11. SpringBoot整合Junit

12. SpringBoot整合Redis

13. 自定义Starter

14. 事件监听

15. 初始化流程

# 最后是鼠鼠翻身

1. 基本功

对 JDK 要比较熟练地理解和使用,重点内容有:集合,多线程,IO,异常,反射,注解,序列化,反序列化等知识。
网络和数据结构:网络至少要知道三次握手,四次分手,HTTPS,GET,POST 等。数据结构会问下红黑树,平衡二叉树。如果了解 Redis ,还可以聊下跳跃表,前缀树。
操作系统问的不多,一般就问下实际中有没有出现过 CPU 过高或者内存过高的情况,然后怎么定位解决。

2. 中间件框架

Spring :常问题目要了解。比如启动过程,Bean 的初始化流程,Bean 的生命周期,如何解决循环依赖问题,IoC,AOP 等。
缓存:不论 Redis、 MemCache 或其他的,至少要有一个比较熟练的,能了解底层数据结构及实现原理,常规的使用方法。
数据库:MySQL 或者 Oracle 要熟悉一种,数据库一般要知道分库分表的实现,数据库备份,数据库的事务,数据库和缓存的数据一致性,数据库的索引,锁机制等等。常用的 RPC 框架可以了解下,优缺点,RPC 的原理要懂,如果有时间自己可以基于 Netty 写一个实战一下。
MQ :一般会问下消息的幂等性,事务性实现,如何保证不丢消息等,要熟练至少一种消息队列,了解原理。
Zookeeper:有时问有时不问,这个有时间也可以看下,毕竟这是分布式协调器,很多时候在分布式系统中都会使用 zk 来保证强一致性的问题。

3. 设计题:一般会给定某个特定场景,让你去做,如果是架构设计,一般就是高并发。如果是数据库的设计,一般看你对数据怎么设计能够方便查询。

4. 理论题:一般看你对现在常用的分布式理论的理解。一致性协议,分布式 CAP,BASE 理论,服务降级,熔断,RESTful 接口等等。

5. 项目:这是个重点,如果连自己做的项目都讲不清楚的话,基本就没希望过了,所以一定要想下自己做的项目,有什么难点,解决了什么问题,架构有什么调整,为什么这么做,最后的结果是什么。

6. 手写代码:代码考核是进入每个大公司都需要准备的,这个就是要刷刷题,LeetCode,有时间逛逛,你值得拥有。