Java全栈学习路线、学习资源和面试题一条龙
肝了一个月,终于把Java学习路线、面试题资源和电子书资源都整理好了。
Java 从基础到微服务的学习路线,其中还包括科班知识、学习建议、后续的学习引导和相应的学习资源(视频、书籍、网站),还整理了Java 面试题,资源都在文末。
写这一篇文章的目的很明确,在个人能力的基础上给小伙伴一个循环渐进的 Java全栈学习路线。为小伙伴布好道路,让学习的路途尽可能的通畅。
在这里点缀下个人对编程的三个层次的理解:
从学会使用(知其表)
到深入架构设计原理(知其理)
再到自研技术(思想铸造)
而本文的学习路线只有前面两个层次,关于“自研层面”属于思想的再创作,恕我无能为力。
能力有限,如有不对,还望纠正。
0.知识广度和深度
对于从事技术开发行业,着重的是技术的应用,技术知识使用起来才能实现它的价值。技术知识的广度就像金字塔的底部,深度就像金字塔的高度,金字塔的底面积大小将决定金字塔的高低,知识面的广度决定深度,深度将决定你在这行业能不能混的好的基础,如果你是做技术的话。
广度:可通过不断学习新技术来拓宽;
深度:基于已有知识深入研究其奥妙。
在这学习路线一开始就先拓宽技术知识面,着重技术的基础使用;后续再深入学习,学习其中的架构设计原理,理解设计者的核心思想,从而提高知识的深度,不至于只知其表不知其理。深入学习后渐渐地就会感受到编程思想带来的质变,是编程能力提高最关键的一步,也是迈进“自研层面”的第一步。
每阶段都配有学习网站和相应书籍,还有阶段项目巩固所学知识。
1.第一部分:Java基础

必须理解面向对象编程,并掌握Java基础知识怎么使用,通过Java编程语言实现一些功能。比如:实现程序和文本的读写(内存和磁盘的交互),简单的多人聊天室(客户端和服务端的交互)。
领悟两点:
第一点:有了这些基础,你可以尝试看看源码(比如:String类的源码),部分源码看得懂了,可能比较费劲。
第二点:所有的服务端编程语言都具备IO流、网络编程、多线程等等这些基础能力,掌握一门编程语言基础对于学习其他编程语言基础那就简单多了。
2.第二部分:MySQL基础

掌握命令的方式操作MySQL 的基础使用;通过JDBC 技术实现对MySQL数据库数据的增删查改。
3.第三部分:JavaWeb

前面两部分是学习Java应用的开发,这部分开始学习Java的web系统开发,主要学习JavaWeb 基础和前端基础知识。学习完这部分,可以基于JavaWeb开发网站、管理系统等,比如:基于JavaWeb的后台管理系统、音乐网站。但是目前直接使用JavaWeb 基础技术开发web系统的很少,一般都是使用框架技术快速开发安全又美观的系统。所以接下来学习主流框架技术。
4.第四部分:主流框架和技术

框架技术主要分为前端和后端框架,目前国内前端以Vue全家桶为主,整合各种框架来完成前端开发;后端以SSM框架技术为主,整合其他框架来完成后端开发。开发框架的主要作用是避免重复造轮子,提高开发效率,降低运维难度,降低人员成本,降低项目风险等等。
学到这里应该知道一些网站架构模式:分层模式,集群模式,缓存模式。
分层模式:常见的有MVC,MVVM,7层的网络通信协议等等。
集群模式:多台服务器部署相同的应用构成一个集群,并通过负载均衡设备共同对外提供服务,提高可用性和并发数。
缓存模式:使用缓存技术提高系统性能。
学习这些模式的使用带来新的问题
集群模式带来的新问题,如:有/无状态服务。
缓存模式带来的新问题,如:缓存穿透。
通过缓存模式解决集群模式带来的新问题,如:会话记录。
先学会框架的使用,再通过阅读源码、相关文档来掌握框架中使用到的编程思想、编程技巧和架构设计,最后在开发的过程中是否能使用上这些编程思想、编程技巧和架构设计。
5.第五部分:回顾并进阶

这部分主要是进阶之前的学习内容和学习更多技术,这都是分布式功能实现需要用到的基础技术。当业务服务变得越来越复杂,部署的服务也越来越多,服务之间错综复杂,难于管理时,就需要自动化的东西替代人类劳动力去解决这一系列问题,所以下个部分内容就是学习分布式服务治理和微服务知识。
6.第六部分:微服务篇

学习各种各样的技术来解决分布式带来的新问题,这些技术的实现都是为了治理错综复杂的业务服务,并提高业务响应速度,服务可用性,性能,扩展性和安全性等等。
7.编程基础的扩展--科班知识(内功)

这一部分的学习是枯燥的,是要掉头发的,但又是必须学习的。关于必学的内容都放前面了,尤其是软件工程、计算机网络、操作系统、数据结构和算法。
8.学习更多

不断学习成长,往更高处走。这只是抛砖引玉,真的要深入学这几本书还真不够。比如架构设计,要从程序员走向架构师,这必须得学;想了解更多有关“云技术”,可以到阿里等各大云平台的开发者社区学习等等。这个就看自己的选择了。
9.学习的一些建议

以上是个人的一些建议。在这里给爱拖延的小伙伴一个行之有效的建议:别干想,行动起来。
10.面试篇

面试资源主要都是来源于网络,做了分类整理,也将部分不易于阅读的处理了(很费时间……)
比如:
处理前:朦胧和挡住了部分内容

处理后:

11.总结
从Java基础到微服务的学习路线和相应的电子书,都已经分享到GitHub,
GitHub链接:https://github.com/yuantingyue/JavaLearningRoutes-Books
后续会不断完善学习路线和学习资源,分享更多的知识和更多资源,一起成长,共勉
想获得最新消息可关注WX公众号:Java全栈布道师

点赞走起
原创不易,转载指明出处,违者必究!!!
Java全栈学习路线、学习资源和面试题一条龙的更多相关文章
- 2019年java全栈工程师学习大全
技术更新日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点我是深有体会的. 我刚开始学习 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,我相信这也是很多初学者经常面临 ...
- Java后端完整学习路线及资源记录
Java后端完整学习路线及资源记录 Java语法基础 书籍教程: 视频教程: IDEA的使用 视频教程:JAVA开发利器-IntelliJ IDEA使用教程 Servlet和Web基础 书籍教程: 视 ...
- 2019 Java 全栈工程师进阶路线图,一定要收藏
技术更新日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的. 我刚开始学习 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,我相信这也是很多初学者经常面 ...
- JAVA全栈工程师应具备怎样的知识体系?
Java是超高人气编程语言,拥有跨平台.面向对象.泛型编程等特性.在TIOBE编程语言排行榜中,连续夺得第一宝座,而且国内各大知名互联网公司,后端开发首选语言:非Java莫属. 今天是针对各类目有更详 ...
- java全栈商业小程序开发
此次开发只为学习和巩固,第一次学习开发 一.开发前需要了解: 开发框架MVVM.痛点.开源工具.VUE前端框架.微信支付模块.uni-app前端框架.小程序申请.开发工具下载.编写测试小程序.小程序结 ...
- Java全栈工程师知识体系介绍
Java全栈工程师,是指掌握多种技能,并能利用多种技能独立完成产品的人,也叫全端工程师(同时具备前端和后台能力),英文Full Stack developer. 那么想要成为一名合格的Java全栈工程 ...
- Java全栈,MySQL搞透,架构手到擒来,还有面试官搞不定?
五月最后一天啦,时间过得真快,做技术的难免做了几年就感觉很迷茫,那就需要多读点书,多学点技术才能有安全感. 栈长之前推荐过不少极客时间的课程,几乎每周都推荐一个,很多朋友评论说,课程太多学不过来,今天 ...
- Ninja:Java全栈Web开发框架-Ninja中文网
相信不少业界人士都还停留在SSh的时代 其实我想给大家推荐的一个轻量级框架那就是Ninja; Ninja是一个Java全栈Web开发框架,稳定.快速.非常高效. 商业价值 在你的下一个项目中,Ninj ...
- java全栈day04--方法
day04内容介绍 1 方法基础知识 2 方法高级内容 3 方法案例 一 方法的概念 A:为什么要有方法 提高代码的复用性 B 什么是方法 完成特定功能的代码块 修饰符 返回值类型 方 ...
随机推荐
- Word2010制作收款单
原文链接:https://www.toutiao.com/i6488255406136099342/ 页面设置 选择"页面布局"选项卡,"页面设置"功能组,&q ...
- 05.python解析式与生成器表达式
解析式和生成器表达式 列表解析式 列表解析式List Comprehension,也叫列表推导式 #生成一个列表,元素0-9,将每个元素加1后的平方值组成新的列表 x = [] for i in ra ...
- 在 python 项目中如何记录日志
一. 概述 写本文的目的是我在写 python 项目的时候需要记录日志,我忘记怎么处理了,每次都需要去网上查一遍,好记性不如烂笔头, 这里把查阅的内容记录下来,方便以后查找. python 项目中记录 ...
- 读《疯狂Java讲义》笔记总结二
1.变量分类图 2.通过实例访问静态变量(类变量) 3.静态导入 4.构造器 5.创建对象内存过程
- leetcode 645. 错误的集合
问题描述 集合 S 包含从1到 n 的整数.不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复. 给定一个数组 nums 代表 ...
- python环境搭建以及jupyter notebook的安装和启动
一.Python 环境搭建 本章节我们将向大家介绍如何在本地搭建Python开发环境. Python可应用于多平台包括 Linux 和 Mac OS X. 你可以通过终端窗口输入 "pyth ...
- 12.25 补充总结-jsp标签
注:标签引用时,需在jsp 头部添加如下语句 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c ...
- 【必杀】为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。
之前写过一篇文章,https://www.cnblogs.com/qidian10/p/6028784.html 解释如何解决此类问题,但现在回过头来想一下,之前的文章还是太过浅显,无法完全有效的彻底 ...
- Message deduplication 这里的去重与你想的可能不一样|Apache Pulsar 技术系列
导语 Apache Pulsar 是一个多租户.高性能的服务间消息传输解决方案,支持多租户.低延时.读写分离.跨地域复制.快速扩容.灵活容错等特性.腾讯云内部 Pulsar工作组对 Pulsar 做了 ...
- 常用字符的ASCII码
字母 ASCII码 十进制数 0 00110000 48 9 00111001 57 A 01000001 ...