自学Java找到20k的工作

程序员大彬
English

大家好,我是大彬~

我本科学的不是计算机,大四开始自学Java,并且找到了中大厂的offer。自学路上遇到不少问题,每天晚上都是坚持到一两点才睡觉,最终也拿到了30w的offer。

在这里也提醒学弟学妹们,要尽早确定以后的方向,读研还是工作,找工作的话,也要尽快确定工作岗位,想转行的,需要花更多的时间准备。很多同学到了大四快毕业的时候,才思考自己未来要做什么,这个时候已经有点晚了。如果错过了校招,走社招渠道去找工作,难度将会提升一个等级,到时后悔也来不及!

好了,下面给大家分享一下我的自学经验。

首先看一下Java学习路线图:

内容还是挺多的,需要不断坚持!

给大家分享一份精心整理的大厂高频面试题PDF,需要的小伙伴可以自行下载:

http://mp.weixin.qq.com/s?__b...

Java基础

初学者的建议就是:多敲代码!多敲代码!多敲代码!

学习编程就是看书加实践,要多动手,不然看过的知识点很快就会忘,而且多实践也会遇到很多坑,丰富经验。 可以到github上找一些项目练练手,通过做项目巩固知识,而且每实现一个功能之后,会有满满的成就感,也会激励你不断去学习。

推荐书籍:

  • 《head first java》
  • 《JAVA核心技术卷》

head first系列的书籍讲解比较有趣,比较好理解。《JAVA核心技术卷》难度相对适中,内容也比较全面,部分章节(如Swing)可以跳过。

Java基础知识主要有:

  1. 类与对象
  2. 面向对象特性
  3. 抽象类和接口
  4. 数据类型、重写重载、封装继承多态
  5. 容器类Map/List/Set等
  6. IO操作:InputStream , OutputStream, Reader/Writer, 文件读取,各种流读取等
  7. 异常处理
  8. 反射机制
  9. 泛型
  10. final关键字的作用
  11. throw和throws
  12. 自定义异常
  13. 内部类
  14. 匿名内部类

IO流操作:

  1. File类对文件的操作
  2. 字节流写数据
  3. 字节流读数据的方式
  4. 字节流完成视频文件的复制
  5. 编码表
  6. 字符流写数据
  7. 字符串读数据
  8. 字符缓冲流的使用
  9. 标准输入输出流
  10. 对象序列化流
  11. 内存操作流
  12. RandomAccessFile
  13. SequenceInputStream
  14. 压缩流/解压缩流

集合基础

  1. 集合框架
  2. ArrayList集合的特点
  3. ArrayList的构造方法
  4. ArrayList的常用操作
  5. HashMap、HashTable、Hashset
  6. HashMap源码
  7. 迭代器Iterator
  8. Map集合遍历
  9. LinkedHashMap
  10. 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(了解)

  1. HTML基本使用
  2. HTML常用标签
  3. CSS选择器
  4. HTML5新特性
  5. CSS3新特性

JavaScript(了解)

  1. JavaScript嵌入方式
  2. JavaScript基本语法
  3. ECMA6新特性
  4. JavaScript流程控制
  5. 数组、函数、对象
  6. JavaScript面向对象
  7. 常用内置对象
  8. JavaScript事件绑定/触发
  9. JavaScript DOM操作及API
  10. JavaScript BOM对象及API

Servlet

  1. Servlet概述
  2. Servlet执行过程分析
  3. Servlet的实现方式分析
  4. Servlet的类试图详解
  5. Servlet的生命周期
  6. Servlet的线程安全问题分析

Java EE

  1. JavaEE规范
  2. 静态资源和动态资源
  3. C/S和B/S
  4. Tomcat概述
  5. Tomcat下载与安装
  6. Tomcat各版本所需支持
  7. Tomcat启动及启动问题分析及解决
  8. Tomcat目录结构
  9. JavaEE工程概述

工具

首先是 Git,版本控制工具,必须掌握。很多刚工作的同学,可能经常会遇到Git相关的问题,如代码冲突、分支合并等,所以还是得把Git学会。推荐狂神的视频:

Git零基础入门到实战详解:

https://www.bilibili.com/vide...

接下来是 Maven 和 Gradle,构建工具,用来构建和管理各种项目。

maven零基础入门:

https://www.bilibili.com/vide...

Git基础知识

  1. Git概述和特点
  2. Git基本概念
  3. Git历史版本控制
  4. Git分支版本控制
  5. Git远程仓库
  6. Git远程托管平台
  7. Git解决冲突

Maven基础知识

  1. Maven环境搭建
  2. Maven构建&自动化构建
  3. 本地仓库&中央仓库
  4. Maven创建Java、Web工程
  5. pom.xml、依赖管理
  6. 坐标、依赖、生命周期等
  7. pom文件依赖传递介绍
  8. 依赖冲突的解决
  9. Maven项目继承的关系
  10. Maven项目聚合的关系
  11. 分模块搭建聚合项目
  12. 私有服务器仓库介绍和搭建
  13. 本地资源上传到私有服务器
  14. 从私有服务器下载资源到本地
  15. 安装第三方资源到本地仓库
  16. 安装第三方资源到私有服务器仓库

Docker基础知识

  1. Docker镜像命令
  2. Docker容器命令
  3. Docker部署MySQL、Redis等
  4. 容器保存转为镜像
  5. 镜像备份
  6. 镜像恢复和迁移
  7. Dockerfile
  8. Docker Compose 常用命令
  9. Docker私有仓库使用

数据库

数据库也是必学的一块内容,主要是Mysql数据库。书籍推荐:

  • 《mysql必知必会》
  • 《高性能mysql》

《mysql必知必会》主要是Mysql的基础语法,很好理解。后面有了基础再看《高性能mysql》,这本书主要讲解索引、SQL优化、高级特性等,很多Mysql相关面试题出自《高性能Mysql》这本书,值得一看。

MySQL基础知识:

  1. 增删改查
  2. 事务特性、隔离级别
  3. 索引原理、优化
  4. b+树
  5. 最左匹配原则
  6. 存储引擎
  7. MVCC
  8. 执行计划
  9. 分库分表
  10. 日志,bin log/undo log/redo log
  11. 数据的复杂查询
  12. 约束的使用
  13. 多表关系(一对一、一对多、多对多)
  14. 数据库的还原和备份
  15. 多表查询操作
  16. 事务介绍
  17. 事务的隔离
  18. 数据库的用户管理和权限管理
  19. 视图的使用
  20. 存储过程的使用
  21. 触发器的使用
  22. 存储引擎原理
  23. 索引高效查询
  24. 锁机制
  25. 数据库集群

框架

主流框架主要有:

  • spring:面向切面、依赖注入,推荐书籍《Spring实战》,通过demo的方式带你一步步搭建Spring应用
  • springboot:习惯优于配置、自动配置。目前很多公司内部都是使用Spring Boot。书籍推荐《Spring Boot实战》
  • springmvc:基于MVC架构模式的轻量级Web框架
  • Mybatis:orm框架,推荐书籍《深入浅出Mybatis》
  • springcloud:现在面试基本都会问到微服务相关的内容,最好了解下微服务相关的知识。服务注册与发现、负载均衡、服务降级、API网关等。推荐书籍《spring cloud微服务实战》

Spring

  1. Spring概述
  2. 耦合与解耦
  3. 工厂设计模式
  4. IoC概述及作用
  5. 依赖注入的概念
  6. Spring中的依赖注入
  7. Spring基于注解的IoC配置
  8. 常用注解的使用
  9. 组件扫描器
  10. BeanFactoryPostProcessor
  11. BeanPostProcessor
  12. InitializingBean

SpringMVC

  1. 常用组件
  2. @RequestMapping注解
  3. 请求参数封装
  4. 表单校验相关注解
  5. ServletAPI相关的注解使用
  6. 控制器方法的返回值详解
  7. 的异步交互和相关注解介绍
  8. Rest风格URL
  9. @PathVariable注解
  10. 跨域访问详解和 @CrossOrigin注解的使用
  11. SpringMVC中的异常处理
  12. SpringMVC中的拦截器

MyBatis

  1. 全局配置文件
  2. 映射配置文件
  3. 增删改查
  4. 参数深入
  5. 结果集封装
  6. 连接池与事务深入
  7. 动态sql语句
  8. 多表查询
  9. 延迟加载策略
  10. 新增分页插件
  11. 日志集成

Spring Boot

  1. SpringBoot的核心功能
  2. SpringBoot的优势
  3. 起步依赖原理分析
  4. 自动配置原理解析
  5. 自定义起步依赖并实现自动配置
  6. SpringBoot配置文件类型
  7. 配置文件与配置类的属性映射方式
  8. SpringBoot整合Mybatis
  9. 自定义Starter
  10. 事件监听
  11. 初始化流程

SpringCloud

  1. 服务注册中心Eureka介绍
  2. Eureka服务端开发
  3. 微服务开发并注册到Eureka服务注册中心
  4. Eureka保护模式
  5. 客户端负载和服务端负载
  6. Ribbon实现客户端负载均衡
  7. Feign的实现
  8. Feign工作原理
  9. 雪崩效应与熔断器
  10. 熔断器Hystrix使用
  11. 网关介绍
  12. 基于Gateway构建网关服务
  13. 通过Gateway网关访问微服务
  14. Spring Cloud Config
  15. 使用Git存储的方式实现配置管理
  16. 微服务改造从配置中心获取配置信息
  17. 服务总线Spring Cloud Bus介绍和应用

Dubbo

  1. Dubbo简介
  2. Dubbo架构
  3. Dubbo服务提供方
  4. Dubbo服务消费方
  5. Dubbo相关配置
  6. 监控中心
  7. 架构原理
  8. 工作原理与服务治理
  9. 心跳与通信

中间件

Redis

  1. Redis优势
  2. Redis五大数据类型
  3. 基本操作命令
  4. Redis持久化(RDB和AOF)
  5. LUA脚本
  6. 分布式锁
  7. pipeline
  8. Redis数据删除策略
  9. Redis数据淘汰策略
  10. 集群主从复制
  11. 集群哨兵模式

RocketMQ

  1. 搭建RocketMQ
  2. RocketMQ-Console
  3. RocketMQ模式
  4. 消息丢失
  5. 消息重复
  6. 基于MQ的分布式事务解决方案说明

JVM

jvm也是面试经常会问的内容。Java开发者不用自己进行内存管理、垃圾回收,jvm帮我们做了,但是还是有必要了解下jvm的工作原理,这样在出现oom等问题的时候,才有思路去排查和解决问题。书籍推荐周老师的《深入理解Java虚拟机》。

jvm的基础知识:

  • jvm内存结构(程序计数器、虚拟机栈、本地方法栈、堆、方法区、运行时常量池、直接内存)
  • 类加载过程
  • 类文件结构
  • 对象头
  • 双亲委派
  • 内存分配和回收
  • 垃圾回收算法
  • 垃圾回收器
  • 调优工具(jsp/jstack/jstat/jmap,了解即可)

并发

并发编程的相关内容可以看看《JAVA并发编程实战》这本书,主要内容有:

  1. 线程的基本定义
  2. 实现线程的种方法
  3. 线程运行状态
  4. 线程池原理
  5. 线程间通信方式
  6. 锁(synchronized、ReentrantLock)
  7. 并发工具类(CountDownLatch/CyclicBarrier/Semaphore)
  8. 原子类
  9. AQS
  10. 线程间通信的方法
  11. 线程同步
  12. 线程死锁

计算机基础知识

平时抽空学习计算机基础知识,巩固基础。

数据结构和算法

推荐书籍《数据结构与算法分析 java语言描述》,用Java语言描述各种数据结构和算法,对于Java开发者来说,更容易理解,主要学习以下内容:

  • 基本数据结构(数组、链表、栈、队列等)
  • 树(二叉树、avl树、b树、红黑树等)
  • 堆结构
  • 排序算法(冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等及时间空间复杂度)
  • 动态规划
  • 回溯
  • 贪心算法

计算机网络

推荐《计算机网络自顶向下方法》:

  • 网络分层结构
  • TCP/IP
  • 三次握手四次挥手
  • 滑动窗口、拥塞控制
  • HTTP/HTTPS
  • 访问某个链接的整个过程
  • DNS
  • 网络安全问题(CSRF、XSS、SQL注入等)

操作系统

学起来比较头大,可以到b站找找视频看,推荐清华大学的公开课。书籍推荐《深入理解计算机系统》,大部头,经典书籍,值得多读几遍。

基础知识:

  1. 进程线程
  2. 进程间通信方式
  3. 线程同步方式
  4. 死锁是什么?产生条件
  5. 死锁处理策略
  6. 分页分段区别
  7. 进程调度策略
  8. 虚拟内存是什么
  9. 页面置换算法
  10. 信号量
  11. ...

linux

推荐书籍《鸟哥的linux私房菜》。

以上就是Java的学习路线,整个路线学习下来,基本最少也要半年时间,坚持就是胜利!

最后给大家分享一个github仓库,上面放了200多本经典的计算机书籍,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~

github仓库:https://github.com/Tyson0314/...

如果github访问不了,可以访问gitee仓库。

gitee仓库:https://gitee.com/tysondai/ja...

码字不易,小伙伴们觉得有帮助的话,可以点个赞

我是@程序员大彬,定期分享Java后台核心知识,欢迎大家关注~

阅读 689

非科班转码,校招拿了多家互联网中大厂offer,专注分享Java技术干货

283 声望
463 粉丝
0 条评论

非科班转码,校招拿了多家互联网中大厂offer,专注分享Java技术干货

283 声望
463 粉丝
文章目录
宣传栏