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 什么是方法 完成特定功能的代码块 修饰符 返回值类型 方 ...
随机推荐
- SQL高级优化(六)之MySQL索引
一.索引概述 1. 索引的优点 为什么要创建索引?这是因为,创建索引可以大大提高系统的查询性能.如果不使用索引,查询时从第一行开始查询.如果使用了索引,所以就可以更加快速的找到希望的数据. 第一. ...
- JWT原理及实现
wt(JSON Web Tokens),是一种开发的行业标准 RFC 7519 ,用于安全的表示双方之间的声明.目前,jwt广泛应用在系统的用户认证方面,特别是现在前后端分离项目. 1. jwt认证流 ...
- SYCOJ137斜线输出(1)
题目-斜线输出(1) (shiyancang.cn) 在同一斜线上的满足方程.坐标关系计算即可. #include<bits/stdc++.h> using namespace std; ...
- Linux驱动实践:中断处理函数如何【发送信号】给应用层?
作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++.嵌入式.Linux. 关注下方公众号,回复[书籍],获取 Linux.嵌入式领域经典书籍:回复[PDF],获取所有原创文章( PDF 格式). ...
- [.Net]使用ABP 数据库迁移migration遇到的坑及解决方案
问题:在使用Update-Database时,突然出现"数据库中已存在名为 'XXX' 的对象". 检查发现__EFMigrationsHistory表中的MigrationI ...
- 《剑指offer》面试题03. 数组中重复的数字
问题描述 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中 ...
- 《剑指offer》面试题51. 数组中的逆序对
问题描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1: 输入: [7,5,6,4] 输出: 5 限制: ...
- 《剑指offer》面试题56 - I. 数组中数字出现的次数
问题描述 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 1: 输入:nums = [4,1 ...
- jsp标签问题
在jsp页面使用标签过程中有时候不注意规则的话,eclipse会提示一些错误,下面针对这些错误提出相应的解决办法:<form></form>标签1. Invalid locat ...
- linux 创建用户 用户组,sudo,禁止root远程ssh登录
创建用户 useradd hanli 为新用户设置密码(在root下可以为普通用户重置密码) passwd hanli 创建用户组 groupadd op 将用户添加到用户组 usermod ...