2020年最新整理的java学习路线

阶段一:数据结构

一、基础

1、基本的数据结构

[](1)基础概念

[](2)数组

[](3)链表

[](4)栈:

[](5)队列

2、树

[](1)哈夫曼树

[](2)平衡二叉树

[](3)红黑树

[](4)B树、B+树

[](5)LSM树

3、图

[](1)最小生成树

[](2)最短路径算法

[](3)拓扑排序

4、排序

[](1)选择排序

[](2)冒泡排序

[](3)插入排序

[](4)快速排序

[](5)归并排序

[](6)希尔排序

[](7)基数排序

[](8)java中的排序工具

[](9)排序算法的特点总结和性能比较

二、中级

[]1、KMP算法

[]2、布隆过滤器

[]3、并查集

[]4、符号表

[]5、汉诺塔

常见的面试题总结:

1、手写排序算法,比较他们之间的性能

2、解决hash冲突的方法

3、字符串和二叉树的手写实现

最主要的就是手写代码。对于每一种数据结构和算法,都要能够手写实现

阶段二:java基础

1、常见的集合类

[](1)基础类型和封装类

[](2)String

[](3)System

2、关键字

[](1)transient

[](2)instanceof

[](3)final

[](4)static

[](5)this

[](6)super

[](7)void

3、高级

[](1)泛型

[](2)枚举

[](3)异常

[](4)注解

[](5)泛型

[](6)反射

[](7)进制

[](8)编码转化

4、集合类

[](1)总体框架

[](2)Collection

[](3)ArrayList

[](4)fail-fast原理

[](5)LinkedList

[](6)Vector

[](7)Stack

[](8)HashMap

[](9)TreeMap

[](10)LinkedHashMap

[](11)HashSet

[](12)TreeSet

5、其他

[](1)String为什么不可变

[](2)java8新特性

[](3)java9、10、11、12新特性

[](4)== 和 equal的区别

[](5)HashCode方法的作用

[](6)创建对象的几种方式

每一个知识点不仅仅是机试中的重点,也是面试中的重点

对于java基础知识,复习的方法就是在你学完了上面的知识点之后,在牛客网等网站一天几十道题进行训练。然后进行错题总结

阶段三:设计模式

1、创建型模式

[](1)工厂方法模式

[](2)抽象工厂模式

[](3)单例模式

[](4)建造者模式

[](3)原型模式

2、结构型模式

[](1)适配器模式

[](2)装饰模式

[](3)代理模式

[](4)外观模式

[](5)桥接模式

[](6)组合模式

[](7)享元模式

3、行为型模式

[](1)策略模式

[](2)模板模式

[](3)观察者模式

[](4)迭代子模式

[](5)责任链模式

[](5)命令模式

[](5)备忘录模式

[](5)状态模式

[](1)访问者模式

[](2)中介者模式

[](3)解释器模式

  • ★★☆ 设计模式的作用。
  • ★★★ 手写单例模式,特别是双重检验锁以及静态内部类。
  • ★★★ 手写工厂模式。
  • ★★★ 理解 MVC,结合 SpringMVC 回答。
  • ★★★ 理解代理模式,结合 Spring 中的 AOP 回答。
  • ★★★ 分析 JDK 中常用的设计模式,例如装饰者模式、适配器模式、迭代器模式等。

阶段四:java虚拟机

[]1、java内存结构

[]2、垃圾回收

[]3、类加载机制

[]4、内存分配和回收策略

[]5、java中的四种引用

[]6、jvm调优(时机、原则、目标、步骤、参数)

[]7、内存溢出(原因、例子、解决方式)

全是重点

阶段五:操作系统

[]1、操作系统的基本特征

[]2、进程与线程的本质区别、以及各自的使用场景。

[]3、进程的几种状态。

[]4、常见的进程同步方式和线程同步

[]5、进程通信方法的特点以及使用场景。(分为windows和linux,以及共有的)

[]6、进程任务调度算法的特点以及使用场景。

[]7、死锁的原因、必要条件、死锁处理。手写死锁代码。java是如何解决死锁的。

[]8、线程实现的方式。

[]9、协程的作用。

[]10、内存管理的方式:段式、页式、段页式。比较他们的区别

[]11、虚拟内存的作用,分页系统实现虚拟内存原理。

[]12、页面置换算法的原理,特别是 LRU 的实现原理,最好能手写,再说明它在 Redis 等作为缓存置换算法。

[]13、分析静态链接的不足,以及动态链接的特点。

可以看书进行总结,不过这里已经整理好了。

阶段六:Linux

一、基础

[]1、Linux目录结构

[]2、Linux常见命令

[]3、Linux文件系统管理

[]4、Linux用户系统管理

[]5、Linux进程管理

[]6、Linux高效的文本文件处理命令

二、中级

[]1、Linux网络管理

[]2、Liux加密解密原理以及数据安全

[]3、Linux系统备份和恢复

[]4、shell编程

常见的面试题总结:

[]1、常见命令的考察,推荐指数:。

[]2、 僵尸进程与孤儿进程的区别,从 SIGCHLD 分析产生僵尸进程的原因

[]3、 硬链接与软链接的区别。

[]4、 僵尸进程与孤儿进程的区别,从 SIGCHLD 分析产生僵尸进程的原因

常见问题链接地址:

1、46个Linux面试常见问题送给你

2、39条常见的Linux系统简单面试题

阶段七:网络

1、基础知识

[](1)五层协议(各自的作用)

[](3)物理层(集线器、交换机、路由器作用、以太网特点以及帧结构)

[](4)数据链路层

[](5)传输层

[](6)传输层

[](7)应用层

[](8)HTTP

2、socket

[](1)阻塞式IO

[](2)非阻塞式IO

[](3)复用IO

[](4)信号驱动IO

[](5)异步IO

[](6)五大IO模型比较

3、序列化

[](1)java序列化

[](2)protoBuf

[](3)ProtoStuff

[](4)avro

4、Netty

[](1)基本案例

[](2)粘包问题解决

[](3)编码问题解决

[](4)实时通信问题解决

[](5)源码分析

5、远程调用

[](1)rmi

[](1)thrift

  • ★★★ 各层协议的作用,以及 TCP/IP 协议的特点。
  • ★★☆ 以太网的特点,以及帧结构。
  • ★★☆ 集线器、交换机、路由器的作用,以及所属的网络层。
  • ★★☆ IP 数据数据报常见字段的作用。
  • ★☆☆ ARP 协议的作用,以及维护 ARP 缓存的过程。
  • ★★☆ ICMP 报文种类以及作用;和 IP 数据报的关系;Ping 和 Traceroute 的具体原理。
  • ★★★ UDP 与 TCP 比较,分析上层协议应该使用 UDP 还是 TCP。
  • ★★★ 理解三次握手以及四次挥手具体过程,三次握手的原因、四次挥手原因、TIME_WAIT 的作用。
  • ★★★ 可靠传输原理,并设计可靠 UDP 协议。
  • ★★☆ TCP 拥塞控制的作用,理解具体原理。
  • ★★☆ DNS 的端口号;TCP 还是 UDP;作为缓存、负载均衡。
  • ★★★ GET 与 POST 比较:作用、参数、安全性、幂等性、可缓存。
  • ★★☆ HTTP 状态码。
  • ★★★ Cookie 作用、安全性问题、和 Session 的比较。
  • ★★☆ 缓存 的Cache-Control 字段,特别是 Expires 和 max-age 的区别。ETag 验证原理。
  • ★★★ 长连接与短连接原理以及使用场景,流水线。
  • ★★★ HTTP 存在的安全性问题,以及 HTTPs 的加密、认证和完整性保护作用。
  • ★★☆ HTTP/1.x 的缺陷,以及 HTTP/2 的特点。
  • ★★★ HTTP/1.1 的特性。
  • ★★☆ HTTP 与 FTP 的比较。
  • ★★☆ 五种 IO 模型的特点以及比较。
  • ★★★ select、poll、epoll 的原理、比较、以及使用场景;epoll 的水平触发与边缘触发。

阶段八:并发基础

1、基础知识

[](1)线程的概念以及案例

[](2)Thread生命周期状态

[](3)Thread构造函数

[](4)java内存模型

[](5)线程通信

[](6)sleep和wait的区别

[](7)synchronized

[](8)volatile

[](9)ThreadLocal

2、原子包

[](1)AtomicInteger

[](2)CAS原理

[](3)AtomicBoolean

[](4)AtomicStampedReferece

[](5)Unsafe

3、并发工具

[](1)CountDownLatch

[](2)CyclicBarrier

[](3)Semaphore

[](4)Exchanger

4、锁机制

[](1)ReentrantLock

[](2)ReenReadWriteLock

[](3)StampedLock

[](4)ForkJoin

[](5)Phaser

[](6)AQS原理

5、线程池

[](1)Excutor

[](1)Future&Callable

[](5)CompletionService

[](5)ExcutorService

[](5)ThreadFactory

[](5)CompleteableFuture

6、并发容器

[](1)ConcurrentHashMap

[](2)ConcurrentSkipListMap

[](3)ConcurrentSkipSet

[](4)ConcurrentLinkedQueue

[](5)CopyOnWriteArrayList

[](6)BlockingQueue

1、一共35个知识点,但是实际可能会更多,基本上都是重点,面试常考点

阶段九:微服务架构

1、servlet

[](1)servlet的生命周期

[](2)API(get和post区别、forward和redirect区别)

[](3)JSP和servlet的比较

[](4)四种会话跟踪技术

[](5)request对象的主要方法

[](6)cookie和session的比较

2、Srping

[](1)Spring架构(七大模块概述)

[](1)Spring上下文和容器

[](5)Spring加载机制

[](5)SpringBean探秘

[](5)AOP与代理

3、SpringMVC

[](1)SpringMVC架构与流程

[](1)DispatcherServlet的实现

[](5)每一控制器的流程解读

4、Springboot

[](1)SpringBoot入门

[](1)整合其他技术

[](5)打包部署

[](5)actuator监控

[](5)源码分析

5、SpringCloud

[](1)服务注册与发现Eureka

[](2)客户端负载均衡Ribbon

[](3)声明式Rest调用Feign

[](4)容错机制Hystrix

[](5)服务网关Zuul

[](6)配置中心Apollo

[] (7)负载均衡算法

Spring常见面试题

SpringMVC常见面试题

阶段十:分布式架构

1、基础

[](1)CAP理论

[](2)BASE理论

2、框架

[](1)Dubbo服务治理

[](1)Zookeeper协调

[](5)Nginx

阶段十一:数据库

1、Mysql

[](1)UML图

[](2)Mysql基本操作

[](3)视图、函数、存储过程、变量、事务、流程控制、游标、权限管理

[](4)索引

[](5)查询性能优化

[](6)存储引擎的比较

[](7)切分:水平和竖直,sharding策略和问题

[](8)复制:主从复制和读写分离

2、Redis

3、MongoDB

4、ElasticSearch

5、中间件:AQ、RQ、Kafka

6、JDBC

7、Mybatis

8、fastDFS

9、Mycat

  • ★★★ B+ Tree 原理,与其它查找树的比较。
  • ★★★ MySQL 索引以及优化。
  • ★★★ 查询优化。
  • ★★★ InnoDB 与 MyISAM 比较。
  • ★★☆ 水平切分与垂直切分。
  • ★★☆ 主从复制原理、作用、实现。
  • ★☆☆ redo、undo、binlog 日志的作用。
  • ★★☆ 字典和跳跃表原理分析。
  • ★★★ 使用场景。
  • ★★★ 与 Memchached 的比较。
  • ★☆☆ 数据淘汰机制。
  • ★★☆ RDB 和 AOF 持久化机制。
  • ★★☆ 事件驱动模型。
  • ★☆☆ 主从复制原理。
  • ★★★ 集群与分布式。
  • ★★☆ 事务原理。
  • ★★★ 线程安全问题。

阶段十二:工具

1、git

2、日志

3、测试Junit

4、Docker

5、Tomcat

6、正则表达式

7、Maven

8、k8s

阶段十三:安全

1、Shiro

2、对称加密

3、数字签名

4、Base64

阶段十三:面试算法题

我的公众号:java的架构师技术栈。有本系列的文章还有教程

2020年最新整理的java学习路线_第1张图片
image

你可能感兴趣的:(2020年最新整理的java学习路线)