大家好,我是大彬~
我本迷信的不是计算机,大四开始自学 Java,并且找到了中大厂的 offer。自学路上遇到不少问题,每天晚上都是保持到一两点才睡觉,最终也拿到了 30w 的 offer。
在这里也揭示学弟学妹们,要尽早确定当前的方向,读研还是工作,找工作的话,也要尽快确定工作岗位,想转行的,须要花更多的工夫筹备。很多同学到了大四快毕业的时候,才思考本人将来要做什么,这个时候曾经有点晚了。如果错过了校招,走社招渠道去找工作,难度将会晋升一个等级,到时悔恨也来不及!
好了,上面给大家分享一下我的自学教训。
首先看一下 Java 学习路线图:
内容还是挺多的,须要一直保持!
给大家分享一份精心整顿的 大厂高频面试题 PDF,须要的小伙伴能够自行下载:
http://mp.weixin.qq.com/s?__b…
Java 根底
初学者的倡议就是:多敲代码!多敲代码!多敲代码!
学习编程就是看书加实际,要多入手,不然看过的知识点很快就会忘,而且多实际也会遇到很多坑,丰盛教训。能够到 github 上找一些我的项目练练手,通过做我的项目坚固常识,而且每实现一个性能之后,会有满满的成就感,也会激励你一直去学习。
举荐书籍:
- 《head first java》
- 《JAVA 核心技术卷》
head first 系列的书籍解说比拟乏味,比拟好了解。《JAVA 核心技术卷》难度绝对适中,内容也比拟全面,局部章节(如 Swing)能够跳过。
Java 基础知识次要有:
- 类与对象
- 面向对象个性
- 抽象类和接口
- 数据类型、重写重载、封装继承多态
- 容器类 Map/List/Set 等
- IO 操作:InputStream,OutputStream,Reader/Writer,文件读取,各种流读取等
- 异样解决
- 反射机制
- 泛型
- final 关键字的作用
- throw 和 throws
- 自定义异样
- 外部类
- 匿名外部类
IO 流操作:
- File 类对文件的操作
- 字节流写数据
- 字节流读数据的形式
- 字节流实现视频文件的复制
- 编码表
- 字符流写数据
- 字符串读数据
- 字符缓冲流的应用
- 规范输入输出流
- 对象序列化流
- 内存操作流
- RandomAccessFile
- SequenceInputStream
- 压缩流 / 解压缩流
汇合根底:
- 汇合框架
- ArrayList 汇合的特点
- ArrayList 的构造方法
- ArrayList 的罕用操作
- HashMap、HashTable、Hashset
- HashMap 源码
- 迭代器 Iterator
- Map 汇合遍历
- LinkedHashMap
- ConcurrentHashMap
Java Web
Java Web 是一系列技术的综合,也是大多数 Java 开发者的技术方向。有必要学习一下。这部分能够看看视频教程。
视频举荐【尚硅谷】的 JavaWeb 全套教程,HTML/CSS/JavaScript 等跟前端相干的能够倍速观看。
https://www.bilibili.com/vide…
【黑马程序员】的 Java web 教程总体也不错,IDEA 版本的:https://www.bilibili.com/vide…
HTML&CSS(理解)
- HTML 根本应用
- HTML 罕用标签
- CSS 选择器
- HTML5 新个性
- CSS3 新个性
JavaScript(理解)
- JavaScript 嵌入形式
- JavaScript 根本语法
- ECMA6 新个性
- JavaScript 流程管制
- 数组、函数、对象
- JavaScript 面向对象
- 罕用内置对象
- JavaScript 事件绑定 / 触发
- JavaScript DOM 操作及 API
- JavaScript BOM 对象及 API
Servlet
- Servlet 概述
- Servlet 执行过程剖析
- Servlet 的实现形式剖析
- Servlet 的类试图详解
- Servlet 的生命周期
- Servlet 的线程平安问题剖析
Java EE
- JavaEE 标准
- 动态资源和动静资源
- C/ S 和 B /S
- Tomcat 概述
- Tomcat 下载与装置
- Tomcat 各版本所需反对
- Tomcat 启动及启动问题剖析及解决
- Tomcat 目录构造
- JavaEE 工程概述
工具
首先是 Git,版本控制工具,必须把握。很多刚工作的同学,可能常常会遇到 Git 相干的问题,如代码抵触、分支合并等,所以还是得把 Git 学会。举荐狂神的视频:
Git 零根底入门到实战详解:
https://www.bilibili.com/vide…
接下来是 Maven 和 Gradle,构建工具,用来构建和治理各种我的项目。
maven 零根底入门:
https://www.bilibili.com/vide…
Git 基础知识
- Git 概述和特点
- Git 基本概念
- Git 历史版本控制
- Git 分支版本控制
- Git 近程仓库
- Git 近程托管平台
- Git 解决抵触
Maven 基础知识
- Maven 环境搭建
- Maven 构建 & 自动化构建
- 本地仓库 & 地方仓库
- Maven 创立 Java、Web 工程
- pom.xml、依赖治理
- 坐标、依赖、生命周期等
- pom 文件依赖传递介绍
- 依赖抵触的解决
- Maven 我的项目继承的关系
- Maven 我的项目聚合的关系
- 分模块搭建聚合我的项目
- 公有服务器仓库介绍和搭建
- 本地资源上传到公有服务器
- 从公有服务器下载资源到本地
- 装置第三方资源到本地仓库
- 装置第三方资源到公有服务器仓库
Docker 基础知识
- Docker 镜像命令
- Docker 容器命令
- Docker 部署 MySQL、Redis 等
- 容器保留转为镜像
- 镜像备份
- 镜像复原和迁徙
- Dockerfile
- Docker Compose 常用命令
- Docker 公有仓库应用
数据库
数据库也是必学的一块内容,次要是 Mysql 数据库。书籍举荐:
- 《mysql 必知必会》
- 《高性能 mysql》
《mysql 必知必会》次要是 Mysql 的根底语法,很好了解。前面有了根底再看《高性能 mysql》,这本书次要解说索引、SQL 优化、高级个性等,很多 Mysql 相干面试题出自《高性能 Mysql》这本书,值得一看。
MySQL 基础知识:
- 增删改查
- 事务个性、隔离级别
- 索引原理、优化
- b+ 树
- 最左匹配准则
- 存储引擎
- MVCC
- 执行打算
- 分库分表
- 日志,bin log/undo log/redo log
- 数据的简单查问
- 束缚的应用
- 多表关系(一对一、一对多、多对多)
- 数据库的还原和备份
- 多表查问操作
- 事务介绍
- 事务的隔离
- 数据库的用户治理和权限治理
- 视图的应用
- 存储过程的应用
- 触发器的应用
- 存储引擎原理
- 索引高效查问
- 锁机制
- 数据库集群
框架
支流框架次要有:
- spring:面向切面、依赖注入,举荐书籍《Spring 实战》,通过 demo 的形式带你一步步搭建 Spring 利用
- springboot:习惯优于配置、主动配置。目前很多公司外部都是应用 Spring Boot。书籍举荐《Spring Boot 实战》
- springmvc:基于 MVC 架构模式的轻量级 Web 框架
- Mybatis:orm 框架,举荐书籍《深入浅出 Mybatis》
- springcloud:当初面试根本都会问到微服务相干的内容,最好理解下微服务相干的常识。服务注册与发现、负载平衡、服务降级、API 网关等。举荐书籍《spring cloud 微服务实战》
Spring
- Spring 概述
- 耦合与解耦
- 工厂设计模式
- IoC 概述及作用
- 依赖注入的概念
- Spring 中的依赖注入
- Spring 基于注解的 IoC 配置
- 罕用注解的应用
- 组件扫描器
- BeanFactoryPostProcessor
- BeanPostProcessor
- InitializingBean
SpringMVC
- 罕用组件
- @RequestMapping 注解
- 申请参数封装
- 表单校验相干注解
- ServletAPI 相干的注解应用
- 控制器办法的返回值详解
- 的异步交互和相干注解介绍
- Rest 格调 URL
- @PathVariable 注解
- 跨域拜访详解和 @CrossOrigin 注解的应用
- SpringMVC 中的异样解决
- SpringMVC 中的拦截器
MyBatis
- 全局配置文件
- 映射配置文件
- 增删改查
- 参数深刻
- 后果集封装
- 连接池与事务深刻
- 动静 sql 语句
- 多表查问
- 提早加载策略
- 新增分页插件
- 日志集成
Spring Boot
- SpringBoot 的外围性能
- SpringBoot 的劣势
- 起步依赖原理剖析
- 主动配置原理解析
- 自定义起步依赖并实现主动配置
- SpringBoot 配置文件类型
- 配置文件与配置类的属性映射形式
- SpringBoot 整合 Mybatis
- 自定义 Starter
- 事件监听
- 初始化流程
SpringCloud
- 服务注册核心 Eureka 介绍
- Eureka 服务端开发
- 微服务开发并注册到 Eureka 服务注册核心
- Eureka 保护模式
- 客户端负载和服务端负载
- Ribbon 实现客户端负载平衡
- Feign 的实现
- Feign 工作原理
- 雪崩效应与熔断器
- 熔断器 Hystrix 应用
- 网关介绍
- 基于 Gateway 构建网关服务
- 通过 Gateway 网关拜访微服务
- Spring Cloud Config
- 应用 Git 存储的形式实现配置管理
- 微服务革新从配置核心获取配置信息
- 服务总线 Spring Cloud Bus 介绍和利用
Dubbo
- Dubbo 简介
- Dubbo 架构
- Dubbo 服务提供方
- Dubbo 服务生产方
- Dubbo 相干配置
- 监控核心
- 架构原理
- 工作原理与服务治理
- 心跳与通信
中间件
Redis
- Redis 劣势
- Redis 五大数据类型
- 基本操作命令
- Redis 长久化(RDB 和 AOF)
- LUA 脚本
- 分布式锁
- pipeline
- Redis 数据删除策略
- Redis 数据淘汰策略
- 集群主从复制
- 集群哨兵模式
RocketMQ
- 搭建 RocketMQ
- RocketMQ-Console
- RocketMQ 模式
- 音讯失落
- 音讯反复
- 基于 MQ 的分布式事务解决方案阐明
JVM
jvm 也是面试常常会问的内容。Java 开发者不必本人进行内存治理、垃圾回收,jvm 帮咱们做了,然而还是有必要理解下 jvm 的工作原理,这样在呈现 oom 等问题的时候,才有思路去排查和解决问题。书籍举荐周老师的《深刻了解 Java 虚拟机》。
jvm 的基础知识:
- jvm 内存构造(程序计数器、虚拟机栈、本地办法栈、堆、办法区、运行时常量池、间接内存)
- 类加载过程
- 类文件构造
- 对象头
- 双亲委派
- 内存调配和回收
- 垃圾回收算法
- 垃圾回收器
- 调优工具(jsp/jstack/jstat/jmap,理解即可)
并发
并发编程的相干内容能够看看《JAVA 并发编程实战》这本书,次要内容有:
- 线程的根本定义
- 实现线程的种办法
- 线程运行状态
- 线程池原理
- 线程间通信形式
- 锁(synchronized、ReentrantLock)
- 并发工具类(CountDownLatch/CyclicBarrier/Semaphore)
- 原子类
- AQS
- 线程间通信的办法
- 线程同步
- 线程死锁
计算机基础知识
平时抽空学习计算机基础知识,坚固根底。
数据结构和算法
举荐书籍《数据结构与算法剖析 java 语言形容》,用 Java 语言形容各种数据结构和算法,对于 Java 开发者来说,更容易了解,次要学习以下内容:
- 根本数据结构(数组、链表、栈、队列等)
- 树(二叉树、avl 树、b 树、红黑树等)
- 堆构造
- 排序算法(冒泡排序、抉择排序、插入排序、疾速排序、归并排序、堆排序等及工夫空间复杂度)
- 动静布局
- 回溯
- 贪婪算法
计算机网络
举荐《计算机网络自顶向下办法》:
- 网络分层构造
- TCP/IP
- 三次握手四次挥手
- 滑动窗口、拥塞管制
- HTTP/HTTPS
- 拜访某个链接的整个过程
- DNS
- 网络安全问题(CSRF、XSS、SQL 注入等)
操作系统
学起来比拟头大,能够到 b 站找找视频看,举荐清华大学的公开课。书籍举荐《深刻了解计算机系统》,大部头,经典书籍,值得多读几遍。
基础知识:
- 过程线程
- 过程间通信形式
- 线程同步形式
- 死锁是什么?产生条件
- 死锁解决策略
- 分页分段区别
- 过程调度策略
- 虚拟内存是什么
- 页面置换算法
- 信号量
- …
linux
举荐书籍《鸟哥的 linux 私房菜》。
以上就是 Java 的学习路线,整个路线学习下来,根本起码也要半年工夫,保持就是胜利!
最初给大家分享一个 github 仓库,下面放了200 多本经典的计算机书籍,包含 C 语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,能够 star 一下,下次找书间接在下面搜寻,仓库继续更新中~
github 仓库:https://github.com/Tyson0314/…
如果 github 拜访不了,能够拜访 gitee 仓库。
gitee 仓库:https://gitee.com/tysondai/ja…
码字不易,小伙伴们感觉有帮忙的话,能够 点个赞!
我是 @程序员大彬,定期分享 Java 后盾外围常识,欢送大家关注~