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 什么是方法 完成特定功能的代码块 修饰符 返回值类型 方 ...
随机推荐
- maven仓库策略
当构建Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下: 1.从本地资源库中查找并获得依赖包,如果没有,执行第2步. 2.从Maven默认中央仓库中查找并获得依赖包(h ...
- 移动Web开发实践——解决position:fixed自适应BUG
在移动web中使用position:fixed,会踩到很多坑,在我之前的一篇文章<移动端web页面使用position:fixed问题总结>中已经总结了很多bug,但是在后续的开发中有关f ...
- day3 创建数组并完成对数组的操作
1.实现函数action()初始化数据全0的操作 2.实现函数assignment()利用指针给数组赋值0~9 3.实现函数print()打印数组的每个函数 4.实现函数reverse()完成对数组的 ...
- 性能优化-使用双buffer实现无锁队列
借助本文,实现一种在"读多写一"场景下的无锁实现方式 在我们的工作中,多线程编程是一件太稀松平常的事.在多线程环境下操作一个变量或者一块缓存,如果不对其操作加以限制,轻则变量值或者 ...
- 在Excel VBA中写SQL,是一种什么体验
每每提到Excel办公自动化,我们脑海里能想到的就是公式.数据透视表.宏.VBA,这也是我们大部分人数据分析的进阶之路.当我们对于常用VBA技巧已经相当熟练后,往往会有一种"我的VBA知识够 ...
- Kubernetes的故事之持久化存储(十)
一.Storage 1.1.Volume 官网网址:https://kubernetes.io/docs/concepts/storage/volumes/ 通过官网说明大致总结下就是这个volume ...
- python第三方模块详细教程(紧急情况宝典)
目录 一:第三方模块 第三方模块:并不是python自带的 需要基于网络下载! 使用下载第三方模块 需要将python pip添加到环境变量 1.验证pip路径添加成功 2.pycharm添加第三方模 ...
- Homework_2
禁 止 吃 瓜 我是小鱼 刚才有个同学问我小鱼发生肾么事了 我说怎么回事? 给我发了一个张截图,我一看! 噢!原来是昨天发布第二次寒假作业了 我大一了啊没有闪 来!偷袭!我三岁的小同志 当时就流眼泪了 ...
- HowToDoInJava 其它教程 1 · 翻译完成
原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 Maven 教程 如何在 ...
- AT2348 [ARC070D] HonestOrUnkind
不妨先从无解的情况下手,不难发现当 \(A \le B\) 时是一定无解的. 因为不诚实的 \(B\) 个人可以装作是诚实的,全部说自己这一方是诚实的对方是不诚实的我们就无法判断了. 下面我们就可以在 ...