转载自-公众号算法修炼笔记
从电子战领域转向Java后端开发,不到一年,踩了不少坑,走了不少弯路,激烈的校招一直逼迫我快速地吸收知识,加强能力,让我难有喘息的机会。但学习过程中,内心明白效率的重要性,因此始终尽最大努力保证高效地学习,深入地思考,注重将知识融汇贯通,构建合理强大而稳定的知识结构,功夫不负有心人,终取得不错的成绩。在此,将我的学习路径整理成文,供有志于Java后端开发的工程师参考。谨以此文,纪念这高效而充满收获的一年。
目录
-
0.概述
-
1.初阶
-
2.进阶
-
3.综合
0. 概述
在《2019秋招经验谈》这篇文章中,我通过我的练级之路篇介绍了我是如何转行的,开启Java后端开发工程师之路的,通过认知思维篇讲述了在开启练级之路之前你需要具备的心态以及思维,通过专业技术篇介绍了Java后端开发工程师需要掌握的核心知识,通过面试技巧篇介绍了作为一个技术人如何在别人面前展示自己的能力,学习资料篇则介绍了一些非常经典的学习资料,但是只是资料的罗列,并没有指明应该如何系统地开始学习,本文将系统的介绍Java开发工程师的练级攻略。
在正式开始介绍Java练级攻略之前,我需要强调以下几个问题:
-
时刻保持自信。即使遇到困难,也是暂时的,不要因此泄气,跳过它,继续学习,待你学完后面的知识,你便会豁然开朗。
-
始终保持思考。一定要学习思考,思考为什么要这样,而不是那样。当你具备一定知识的时候,还要举一反三的思考,将知识融汇贯通,变成能力,最终构建出自己的知识和能力体系。
-
一定要动手。无论示例多简单,都一定要自己手过一遍,好记性不如烂笔头,大量的思考笔记,大量的编程实践是永远少不了的。你可以读的少,但是不能码的少。
-
不要犹豫。既然选择了一条路,你就坚持走下去,不要想这条路对不对,你只有走了才知道对不对,不要犹豫,开始了,就有收获,走下去,就有结果。
-
迭代学习。不要想着一口吃成个胖子,要讲究迭代学习,即首先了解知识结构,然后再逐层深入,一层层深度逐渐解决问题,这样的迭代学习,不仅会让你的效率提高,而且会让你对知识有不同层面的理解。
接下来,正式开始介绍Java练级攻略。
1. 初阶
初阶的学习,主要是全面了解各个科目的整体的知识结构,在脑海中对每个科目的知识结构能有个全面的印象,主要解决的是怎么做的问题。
1.1 Java核心知识
作为Java后端开发工程师,Java是我们的武器,因此精通Java是必须的。首先我们需要整体掌握Java的知识结构,在此推荐以下2本书(任选其一即可):
-
书籍:《Head First Java》:具有大量插图,非常适合入门
-
书籍:《Java核心技术(卷一):基础知识 》 :sun公司官方出版,与《Java编程思想》齐名的Java图书泰斗
1.2 数据结构与算法
数据结构与算法是一个工程师的内功,当我们掌握了Java的核心知识之后,开始数据结构与算法的学习,是一个不错的选择,一来掌握数据结构与算法,二来也强化Java核心知识的理解,为Java的进阶打下坚实的基础。
关于数据结构与算法,在这里推荐以下资料:
-
书籍:《算法·第四版》
-
视频:[CS61B(UC Berkeley)] https://sp18.datastructur.es/
1.3 TCP/IP协议
TCP/IP协议族对于Java后端工程师来讲,是必不可少的,因此,在学习数据结构与算法的同时,可以开启计算机网络的学习,在这里推荐以下2本书(任选其一即可):
-
书籍:《TCP/IP详解·卷1》
-
书籍:《计算机网络:自顶向下方法(原书第6版)》
1.4 操作系统(OS)
操作系统的学习对于我们认知计算机系统是非常有必要的,在这里推荐以下的材料:
-
书籍:《Operating Systems: Three Easy Pieces》 http://pages.cs.wisc.edu/~remzi/OSTEP/(非常非常好的书,强烈推荐)
-
视频:[操作系统(清华大学)] http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+sp/about
1.5 数据库MySQL
对于Java后端工程师来说,数据库必不可少,以下推荐:
-
视频:[与MySQL的零距离接触] https://www.imooc.com/learn/122
-
书籍:《MySQL必知必会》
1.6 数据库Redis
Redis广泛的应用于缓存和分布式系统中,因此对于Redis的学习非常重要,推荐以下材料:
-
书籍:《Redis实战》
-
官网:https://redis.io/(一定要把官网上的命令好好过一遍,把官网的文章好好读一下,非常好)
1.7 Git & Github
非常流行的版本控制系统,推荐以下资料:
2. 进阶
进阶学习的目的主要是从应用知识转向思考其底层,深入的研究各个科目的底层逻辑,主要解决的是为什么的问题?
2.1 Java核心知识进阶
掌握核心知识基础之后,需要掌握一些Java的高级用法,推荐以下材料:
-
书籍:《Java编程思想》
-
书籍:《Effective Java》
同时,在这里还需要阅读Core Java的底层源码。见《2019秋招经验谈》专业技术篇。
2.2 JVM
掌握Java核心知识之后,我们便需要掌握JVM,推荐以下材料:
-
书籍:《深入理解Java虚拟机》
-
视频:[Java生产环境下性能监控与调优详解] (https://coding.imooc.com/class/241.html) (选做)
2.3 Java并发与多线程
并发与多线程是Java一项很核心的能力,推荐以下资料 (2选1,建议选择后者) :
-
书籍:《Java并发编程的艺术》
-
书籍:《Java并发编程实战》
2.4 数据结构与算法进阶
数据结构与算法的进阶很简单,就是大量的刷题,推荐以下材料:
-
书籍:《剑指offer》
-
书籍:《程序员代码面试指南》左神
-
leetcode:https://leetcode.com/(leetcode刷的越多越好,思考的越多越好,思考很重要)
-
海量数据处理:
-
书籍:《编程珠玑》
-
动态规划:
-
https://www.geeksforgeeks.org/top-20-dynamic-programming-interview-questions/
2.5 TCP/IP协议进阶
推荐以下材料:
-
书籍:《图解TCP/IP》
-
书籍:《图解HTTP》
-
TCP协议:
2.6 操作系统(OS)进阶
推荐以下材料:
-
书籍:《深入理解计算机系统》
-
书籍:《鸟哥的linux私房菜》
2.7 数据库MySQL进阶
推荐以下材料:
-
书籍:《MySQL技术内幕 Innodb存储引擎》
-
书籍: 《高性能MySQL》
2.8 数据库Redis进阶
推荐以下材料:
- 书籍:《Redis设计与实现》
3. 综合
综合部分主要是介绍如何将前面学过的知识应用起来,即解决的是融会贯通,形成知识体系的问题。
3.1 面向对象与设计模式
推荐资料如下:
-
视频:[设计模式(马士兵)]https://study.163.com/course/introduction/1062009.htm
-
书籍:《Head First 设计模式》
3.2 项目(应用)
以下介绍2个项目,至少需要完成其中一个项目:
项目1:慕课网
-
第一阶段:Java从零到企业级电商项目实战-服务端(SSM框架)
-
Goal: 熟悉Java后端开发流程以及SSM基本框架 (能力门槛)
-
技术栈:Java、Linux、Tomcat、Git、Maven、Spring、SpringMVC、MyBatis、MySQL
-
第二阶段: Java企业级电商项目架构演进之路:Tomcat集群与Redis分布式
-
Goal: 项目架构演进 (高手进阶)
-
技术栈:Tomcat集群、Nginx负载均衡、Redis分布式、分布式理论与算法、项目重构
项目2:牛客高级项目课
-
Goal: 熟悉Java后端开发流程
-
技术栈:Spring Boot、MySQL、Redis、异步框架、python、全文搜索技术
参考资料:
-
Spring官网:https://spring.io/
-
MyBatis官网:http://www.mybatis.org/mybatis-3/
3.3 项目进阶(底层研究)
推荐以下材料:
-
书籍:《深入分析JavaWeb技术内幕》
-
书籍:《大型网站技术架构·核心原理与案例分析》
-
书籍:《Spring技术内幕》 (这本写的太好了)
最后分布式系统相关资料:
-
[System Design Primer] : https://github.com/donnemartin/system-design-primer
-
CAP理论
-
一致性模型
-
可用性模式
-
DNS
-
CDN
-
负载均衡
-
反向代理
-
应用层的微服务和服务发现
-
关系型数据库和NoSQL
-
缓存
-
异步通讯
-
安全等
写到这里,我想Java后端开发工程师入门应该是够了,甚至可以说已经有了一定的深入了。回顾一下,发现写了很多,但是大家不要吓到,徐徐图之,人生本来就是一个练级迭代的过程,希望你能保持自信,不断思考,坚持到底,搞定这份攻略。
最后,鉴于水平有限,有可能有遗漏的地方或者是不对的地方,烦请大家补充和指正。
希望这份攻略能够帮助到大家,谢谢~
网友评论