大家好,我是大彬~
我本科学的不是计算机,大四开始自学Java,并且找到了中大厂的offer。自学路上遇到不少问题,每天晚上都是坚持到一两点才睡觉,最终也拿到了30w的offer。
在这里也提醒学弟学妹们,要尽早确定以后的方向,读研还是工作,找工作的话,也要尽快确定工作岗位,想转行的,需要花更多的时间准备。很多同学到了大四快毕业的时候,才思考自己未来要做什么,这个时候已经有点晚了。如果错过了校招,走社招渠道去找工作,难度将会提升一个等级,到时后悔也来不及!
好了,下面给大家分享一下我的自学经验。
首先看一下Java学习路线图:
内容还是挺多的,需要不断坚持!
给大家分享一份精心整理的大厂高频面试题PDF,需要的小伙伴可以自行下载:
http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY0MQ==&mid=2247485445&idx=1&sn=1c6e224b9bb3da457f5ee03894493dbc&chksm=ce98f543f9ef7c55325e3bf336607a370935a6c78dbb68cf86e59f5d68f4c51d175365a189f8#rd
初学者的建议就是:多敲代码!多敲代码!多敲代码!
学习编程就是看书加实践,要多动手,不然看过的知识点很快就会忘,而且多实践也会遇到很多坑,丰富经验。 可以到github上找一些项目练练手,通过做项目巩固知识,而且每实现一个功能之后,会有满满的成就感,也会激励你不断去学习。
推荐书籍:
head first系列的书籍讲解比较有趣,比较好理解。《JAVA核心技术卷》难度相对适中,内容也比较全面,部分章节(如Swing)可以跳过。
Java基础知识主要有:
类与对象
面向对象特性
抽象类和接口
数据类型、重写重载、封装继承多态
容器类Map/List/Set等
IO操作:InputStream , OutputStream, Reader/Writer, 文件读取,各种流读取等
异常处理
反射机制
泛型
final关键字的作用
throw和throws
自定义异常
内部类
匿名内部类
IO流操作:
File类对文件的操作
字节流写数据
字节流读数据的方式
字节流完成视频文件的复制
编码表
字符流写数据
字符串读数据
字符缓冲流的使用
标准输入输出流
对象序列化流
内存操作流
RandomAccessFile
SequenceInputStream
压缩流/解压缩流
集合基础:
Java Web是一系列技术的综合,也是大多数Java开发者的技术方向。有必要学习一下。这部分可以看看视频教程。
视频推荐【尚硅谷】的JavaWeb全套教程,HTML/CSS/JavaScript等跟前端相关的可以倍速观看。
https://www.bilibili.com/video/BV1Y7411K7zz
【黑马程序员】的Java web教程总体也不错,IDEA版本的:https://www.bilibili.com/video/BV1qv4y1o79t
HTML基本使用
HTML常用标签
CSS选择器
HTML5新特性
CSS3新特性
JavaScript嵌入方式
JavaScript基本语法
ECMA6新特性
JavaScript流程控制
数组、函数、对象
JavaScript面向对象
常用内置对象
JavaScript事件绑定/触发
JavaScript DOM操作及API
JavaScript BOM对象及API
Servlet概述
Servlet执行过程分析
Servlet的实现方式分析
Servlet的类试图详解
Servlet的生命周期
Servlet的线程安全问题分析
JavaEE规范
静态资源和动态资源
C/S和B/S
Tomcat概述
Tomcat下载与安装
Tomcat各版本所需支持
Tomcat启动及启动问题分析及解决
Tomcat目录结构
JavaEE工程概述
首先是 Git,版本控制工具,必须掌握。很多刚工作的同学,可能经常会遇到Git相关的问题,如代码冲突、分支合并等,所以还是得把Git学会。推荐狂神的视频:
Git零基础入门到实战详解:
https://www.bilibili.com/video/BV1FE411P7B3
接下来是 Maven 和 Gradle,构建工具,用来构建和管理各种项目。
maven零基础入门:
https://www.bilibili.com/video/BV1TW411g7hP
Maven环境搭建
Maven构建&自动化构建
本地仓库&中央仓库
Maven创建Java、Web工程
pom.xml、依赖管理
坐标、依赖、生命周期等
pom文件依赖传递介绍
依赖冲突的解决
Maven项目继承的关系
Maven项目聚合的关系
分模块搭建聚合项目
私有服务器仓库介绍和搭建
本地资源上传到私有服务器
从私有服务器下载资源到本地
安装第三方资源到本地仓库
安装第三方资源到私有服务器仓库
Docker镜像命令
Docker容器命令
Docker部署MySQL、Redis等
容器保存转为镜像
镜像备份
镜像恢复和迁移
Dockerfile
Docker Compose 常用命令
Docker私有仓库使用
数据库也是必学的一块内容,主要是Mysql数据库。书籍推荐:
《mysql必知必会》主要是Mysql的基础语法,很好理解。后面有了基础再看《高性能mysql》,这本书主要讲解索引、SQL优化、高级特性等,很多Mysql相关面试题出自《高性能Mysql》这本书,值得一看。
MySQL基础知识:
增删改查
事务特性、隔离级别
索引原理、优化
b+树
最左匹配原则
存储引擎
MVCC
执行计划
分库分表
日志,bin log/undo log/redo log
数据的复杂查询
约束的使用
多表关系(一对一、一对多、多对多)
数据库的还原和备份
多表查询操作
事务介绍
事务的隔离
数据库的用户管理和权限管理
视图的使用
存储过程的使用
触发器的使用
存储引擎原理
索引高效查询
锁机制
数据库集群
主流框架主要有:
Spring概述
耦合与解耦
工厂设计模式
IoC概述及作用
依赖注入的概念
Spring中的依赖注入
Spring基于注解的IoC配置
常用注解的使用
组件扫描器
BeanFactoryPostProcessor
BeanPostProcessor
InitializingBean
全局配置文件
映射配置文件
增删改查
参数深入
结果集封装
连接池与事务深入
动态sql语句
多表查询
延迟加载策略
新增分页插件
日志集成
SpringBoot的核心功能
SpringBoot的优势
起步依赖原理分析
自动配置原理解析
自定义起步依赖并实现自动配置
SpringBoot配置文件类型
配置文件与配置类的属性映射方式
SpringBoot整合Mybatis
自定义Starter
事件监听
初始化流程
服务注册中心Eureka介绍
Eureka服务端开发
微服务开发并注册到Eureka服务注册中心
Eureka保护模式
客户端负载和服务端负载
Ribbon实现客户端负载均衡
Feign的实现
Feign工作原理
雪崩效应与熔断器
熔断器Hystrix使用
网关介绍
基于Gateway构建网关服务
通过Gateway网关访问微服务
Spring Cloud Config
使用Git存储的方式实现配置管理
微服务改造从配置中心获取配置信息
服务总线Spring Cloud Bus介绍和应用
Dubbo简介
Dubbo架构
Dubbo服务提供方
Dubbo服务消费方
Dubbo相关配置
监控中心
架构原理
工作原理与服务治理
心跳与通信
Redis优势
Redis五大数据类型
基本操作命令
Redis持久化(RDB和AOF)
LUA脚本
分布式锁
pipeline
Redis数据删除策略
Redis数据淘汰策略
集群主从复制
集群哨兵模式
搭建RocketMQ
RocketMQ-Console
RocketMQ模式
消息丢失
消息重复
基于MQ的分布式事务解决方案说明
jvm也是面试经常会问的内容。Java开发者不用自己进行内存管理、垃圾回收,jvm帮我们做了,但是还是有必要了解下jvm的工作原理,这样在出现oom等问题的时候,才有思路去排查和解决问题。书籍推荐周老师的《深入理解Java虚拟机》。
jvm的基础知识:
并发编程的相关内容可以看看《JAVA并发编程实战》这本书,主要内容有:
线程的基本定义
实现线程的种方法
线程运行状态
线程池原理
线程间通信方式
锁(synchronized、ReentrantLock)
并发工具类(CountDownLatch/CyclicBarrier/Semaphore)
原子类
AQS
线程间通信的方法
线程同步
线程死锁
平时抽空学习计算机基础知识,巩固基础。
推荐书籍《数据结构与算法分析 java语言描述》,用Java语言描述各种数据结构和算法,对于Java开发者来说,更容易理解,主要学习以下内容:
推荐《计算机网络自顶向下方法》:
学起来比较头大,可以到b站找找视频看,推荐清华大学的公开课。书籍推荐《深入理解计算机系统》,大部头,经典书籍,值得多读几遍。
基础知识:
推荐书籍《鸟哥的linux私房菜》。
以上就是Java的学习路线,整个路线学习下来,基本最少也要半年时间,坚持就是胜利!
最后给大家分享一个github仓库,上面放了200多本经典的计算机书籍,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~
github仓库:https://github.com/Tyson0314/java-books
如果github访问不了,可以访问gitee仓库。
gitee仓库:https://gitee.com/tysondai/java-books
码字不易,小伙伴们觉得有帮助的话,可以点个赞!
我是程序员大彬,定期分享Java后台核心知识,欢迎大家关注~