Java技术栈学习路线

✏️写作:个人博客,InfoQ,掘金,知乎,CSDN

公众号:进击的Matrix

特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。

开发环境

Java开发工具 :Intellij idea,简称IDEA, 最智能的Java开发工具,Java程序员大部分都使用这个工具进行开发,因为真的是太好用了。

JDK:JDK开发版本最好使用最新版本。

Java基础

书名 内容
《Java核心编程 卷I》 [美] 凯.S.霍斯特曼(Cay S. Horstmann)(最新版) 基础语法: Java变量,常量,数据类型,运算符,方法,数组,流程控制语句,面向对象: 类,对象,继承,多态,接口,抽象类,内部类,集合,线程
《Java核心编程 卷II》 [美] 凯.S.霍斯特曼(Cay S. Horstmann)(最新版) 基础功能:流和文件,XML, 网络编程,数据库编程,国际化,图形化界面编程,Java Beans组组件,Java安全,注解,分布式对象、Native方法

Java基础进阶

内容 技术要点
常用API Date, DateFormat, Calendar, System, String, StringBuilder
集合 Collection, 泛型, List, Set, Collections, Map, HashMap等常用集合
异常 异常体系, 异常分类,异常处理, 自定义异常
多线程 线程概念,线程同步, 锁, 线程生命周期, 线程池, Java线程池框架
Lambda表达式 函数式编程思想,Lambda标准格式,Lambada语法与注意事项
IO流 文件, 字节流, 字符流,字符编码
网络编程 网络编程要素,Socket原理机制, TCP/UDP传输
Java个版本的新特性 1.5/1.6/1.7/1.8/1.9 等版本新增的各个特性

Java Web基础

书名 内容
《深入分析Java技术内幕》 作者:许令波 介绍JavaWeb开发中涉及的一些基本知识,包括Web请求过程、HTTP协议、DNS技术和CDN技术。其次深入介绍Java技术,包括I/O技术、中文编码问题、Javac编译原理、Class文件结构解析、ClassLoader工作机制及JVM的内存管理等。最后介绍Java服务端技术,主要包括Servlet、Session与Cookie、Tomcat与Jetty服务器、Spring容器、MyBatis框架和Velocity框架等原理介绍
内容 技术要点
JDBC MySQL数据库基本知识,JDBC, 数据库连接池, JdbcTemplate
前端基础知识 HTML/CSS, JavaScript,Bootstrap
基础加强 Java的反射技术, BeanUtils, 注解
XML XML基本语法, 约束
Servlet Tomcat,request, response, cookie, session,Filter,HTML,CSS,JavaScript
Web异步开发 jquery, ajax,json
Maven Maven概念与作用, Maven常用命令,依赖管理

Java Web进阶

Java Web进阶的内容大多是Java后端开发中的框架学习,需要学习的框架有Spring,Spring MVC,Mybatis以及项目管理工具Maven,如果有足够精力学习,可以学习Spring Boot, Spring Cloud, 但是对于找工作学会Spring,SpringMVC, MyBatis,Maven就足够了,因为重要的是基础,基础不懂,学习其他的也只是蜻蜓点水,理解不深的。后面的框架学习可以在自己工作中,或有其余精力的时候进行学习,当然如果掌握后面的SpringBoot, SpringCloud对找工作肯定是锦上添花,有加分的。

如何学习好框架呢?最好的学习文档为框架的官方文档。

例如: MyBatis框架的官方文档为:http://www.mybatis.org/mybatis-3/zh/index.html

官方文档的使用说明,能够更清晰的说明框架的使用,但是大部分的框架为国外的,所以文档为英文,较少框架有中文翻译,所以一定要具备良好英文阅读能力(学习计算机的好处就是:顺带学好了英语阅读,顺带把四六级给过了),如果对于阅读英文档比较吃力,绝对不用强求,利用百度(谷歌):可以在网上寻找是否有翻译的文档,或者是相关技术点的博客,或者下面的相关书籍。

书名 内容
《深入浅出MyBatis技术原理与实战》 作者:杨开振 MyBatis 的基础应用、原理及插件开发、实践应用
《Spring实战》 作者: 沃尔斯 (Craig Walls) Spring框架的核心知识,Spring构建Web应用程序,应用程序的后端使用Spring,Spring与其他的应用和服务进行集成
《Sring源码深度解析》 作者:郝佳 Spring的设计理念和整体架构、容器的基本实现、默认标签的解析、自定义标签的解析、bean的加载、容器的功能扩展、AOP、数据库连接JDBC、整合MyBatis、事务、SpringMVC、远程服务、Spring消息服务等内容
内容 技术要点
MyBatis MyBatis入门,架构分析,常用API,配置与事务管理,mapper代理,数据封装,动态SQL,关联查询,性能优化,查询缓存
Spring Sprin体系结构,Spring配置,bean管理,Spring IOC/DI,Spring AOP, 事务管理,Spring5新特性
Spring MVC Spring MVC 概述,控制器,常用注解,参数绑定,json数据交换, resutful, 拦截器,文件上传,异常处理,SSM整合
Maven Maven分模块构建, 本地仓库,私服
MQ 消息队列(消息中间件),异步解耦,削峰填谷作用,开源消息中间件有:RocketMQ,QMQ,Kafka等等
RPC 远程过程调用中间件,微服务,开源RPC:Dubbo,gRPC,Thrift,Spring Cloud等等
Redis(NoSQL,缓存) NoSQL基本特性, Redis数据类型,常用命令, Jedis

Java必读书

Java虚拟机是Java程序员必须学习的,还有Java中的多线程编程是重点,设计模式学习了后对于自己软件开发过程怎么写好代码是有非常有帮助的。

书名 作者 说明
《深入理解Java虚拟机:JVM高级特性与最佳实践》 周志华 熟悉Java虚拟机必读
《Java多线程编程核心编程》 高洪岩 熟悉Java中多线程的使用,对象及变量的并发访问,线程将通信,锁的使用,定时器等
《Java并发编程的艺术》 方腾飞/魏鹏/程晓明 是Java程序员必看书,并发实战之路上的利器
《Head First 设计模式(中文版)》(或者《大话设计模式》) 弗里曼(Freeman,E.)(美) 设计模式最通俗易懂,是看过最有趣的计算机丛书
《大型网站系统与Java中间件实现》 曾宪杰 Java中间件
《大型分布式网站架构设计与实践》 陈康贤 分布式网站架构设计
《微服务架构与实践》 王磊 微服务设计

计算机网络

计算机网络主要是学习TCP/IP相关知识,其实我们的课本谢希仁的《计算机网络》知识就已经足够了,只是大多的人没有好好重视学习,对于基本的网络知识没有理解透彻。学习知识不求多,只求能够理解透彻,学懂。学懂了基础知识,后面学习其他的内容将会变得容易。如果看网络看不懂可以看:《图解TCP/IP》或《图解HTTP》,“图解”系列相关书籍对于技术的理解会更加容易一点,初期可以阅读。

书名 作者
《计算机网络》 谢希仁
《TCP/IP协议族》 福罗赞
《TCP/IP详解 卷1:协议》 [美] W·Richard Stevens

数据库知识

软件开发会使用到数据相关知识,首先学习数据库知识必须会SQL, SQL的学习可以通过W3CSchool或W3CSchool菜鸟教程:https://www.w3cschool.cn/,SQL比较简单, W3School里面有很多计算机基础知识,里面有HTML/CSS, JavaScript, 数据库,XML, 开发工具等等,可以作为一个知识的查询手册,学习快速上手,非常方便。

书名 作者 内容
《高性能MySQL》 瓦茨 (Baron Schwartz) / 扎伊采夫 (Peter Zaitsev) / 特卡琴科 (Vadim Tkachenko) 了解数据的基本知识,以及MySQL数据的特性, 性能优化
《MySQL技术内幕:InnoDB存储引擎》 姜承尧 MySQL的数据库特点,InnoDB 存储引擎特性,实现原理、工作机制,索引与算法,文件,锁,事务,备份与恢复。

数据结构与算法

数据结构与算法的学习,首先得了基本的数据结构例如: 栈,堆,链表,图,树等等,基本的算法知识: 二分查找,基本排序算法,分析算法的时间复杂度和空间复杂度等等,最重要的还是动手实践,多写写数据结构和算法。对于数据结构与算法练习可以多去github上开源的例子去进行学习,先看看别人是如何实现,然后自己再想想如何实现,会采用怎么做,把它写出来。 面试的时候经常是手写基本排序算法以及一些经典的算法题。
算法的练习还可以上LeetCode: https://leetcode.com/problemset/algorithms/
上进行训练,里面每周都会更新算法题,也有很多解题思路,还有就是多去牛客网上刷算法题。

书名 作者
《大话数据结构》 程杰
《剑指offer》 何海涛
《算法》第4版 塞奇威克 (Robert Sedgewick) / 韦恩 (Kevin Wayne)

软件开发使用工具

软件开发中有许多工具需要掌握,尤其是Git,公司开发中肯定会使用到Git的,平常的开发中也需要养成代码版本管理的好习惯,经常提交代码到自己Github仓库上进行管理。

工具 工具使用
Git 使用git作为项目版本控制工具,会向开源网站例如github建立仓库,提交代码,管理代码
Postman 会使用postman工具模拟各种网络请求,在项目调试开发的时候特别方便的一个工具
Nacicat 可视化数据库管理工具(可视化数据库管理工具对数据库管理方便,开发效率高),其他可视化数据库管理工具都行
Mobaxterm 远程连接工具,SSH连接远程终端设备,还有其他远程连接工具例如:Xshell,Putty,SecureCRT,自己觉得哪个好用用哪个

关于找工作

对于找计算机相关工作中,主要考察的还是的计算机基础知识,还有看一个人的学习能力是否足够强,是否具有潜力,基础知识的考察无非是:数据结构与算法,编程的基础知识(例如Java,选择一门自己最擅长的语言即可),计算机网络,操作系统等等。对于某一技术方向的考察,会再进行深入的考察,这个就是针对你投递的岗位了,例如: 投递的是Java开发工程师,那么就会问Java相关知识,而不会问你C++的相关知识了,

现在的互联网公司招聘,一般会有提前批的内部推荐,内推可以优先筛选简历,简历筛选通过就有面试机会,所以能够拿到的面试机会,能内推一定要找内推,内推相当于多一次机会。对于招聘投递简历,简历一定要写好,简历在整个招聘的时候非常非常非常重要!

如果内推没有成功,那么可以走正常的校园招聘,先笔试,笔试通过才有面试机会了,所以笔试无论如何都要通过,否则任何的面试准备都是空谈,当然没有通过笔试也绝对不要灰心,看该公司的面试地点在哪里,去面试现场进行霸面,如果面试人员会给霸面的机会就可以进行霸面。

面试环节,一般根据和你的投递的岗位和遇到的面试情况而不同,如果你面试的是前端工程师,面试官大概率也会是做前端开发的工程师,有的面试官可能就直接问前端相关的知识,相关技术点,有的喜欢问项目经历,大部分都是基础知识技术和项目都会问,所以对于简历一定要写好;如果是一个非前端的面试官,那么他肯定主要会考察你计算基础知识了,看你基础扎不扎实,算法怎么样,编程能力怎么样,了解的深度怎么样,广度怎么样,学习能力怎么样,沟通交流能力怎么样。

面试般有好几面: 技术面试至少有2面,一般是越往后越难(当然还是看公司,有的公司可能不太一样),当有的公司的几轮面试中,会有一轮压力面,所谓压力面,就是各种刁难,问到你不会,既是考核你的技术深度,也是考核你的承压能力,心理素质。如果遇到压力面,还是机灵应对较好,不必太过纠结。技术面试通过之后,最后的面试一般是HR,HR面一般来说通过的概率是就比较大了,当然也不要掉以轻心,一般在HR中也有根据HR面试情况筛选人的考核,不要自己作死和表达自己极端的性格和行为就好,HR面试正常的进行OK。


最后欢迎大家点赞、收藏、评论,转发!

欢迎大家关注我的微信公众号!微信搜索:进击的Matrix

欢迎大家关注我的知乎!可乐

你可能感兴趣的:(Java,软件工程,java,学习,后端)