大家好,我是大彬~
我本科学的不是计算机,大四开始自学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后台核心知识,欢迎大家关注~