2019秋招经验谈之Java练级攻略
以下乃一家之言,有用,则吾心甚慰,无用,君权当一笑。
一家之言,常有多家之辩,望诸君善待吾之善心,莫急言于在下。
吾求无错,奈何水平所限,失误再所难免,请各位提之,吾当改之。
吾所求岗位均为研发岗位,故技术人才更适用之。
从电子战领域转向Java后端开发,不到一年,踩了不少坑,走了不少弯路,激烈的校招一直逼迫我快速地吸收知识,加强能力,让我难有喘息的机会。但学习过程中,内心明白效率的重要性,因此始终尽最大努力保证高效地学习,深入地思考,注重将知识融汇贯通,构建合理强大而稳定的知识结构,功夫不负有心人,终取得不错的成绩。在此,将我的学习路径整理成文,供有志于Java后端开发的工程师参考。谨以此文,纪念这高效的一年。
注1:本文首发于我的公众号~
注2:本文希望大家能够扎实基本功,稳扎稳打地练习自己的能力。如果是为了准备校招,大家要酌情选择一些比较复杂的资料的核心章节,例如《深入理解计算机系统》这样的大部头,选择里面的核心章节阅读即可,例如关于硬件部分的就可以忽略不看。
(这里感谢:山201811022006751 同学的提醒)
目录
- 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的进阶打下坚实的基础。
关于数据结构与算法,在这里推荐以下资料:
1.3 TCP/IP协议
TCP/IP协议族对于Java后端工程师来讲,是必不可少的,因此,在学习数据结构与算法的同时,可以开启计算机网络的学习,在这里推荐以下2本书(任选其一即可):
- 书籍:《TCP/IP详解·卷1》
- 书籍:《计算机网络:自顶向下方法(原书第6版)》
1.4 操作系统(OS)
操作系统的学习对于我们认知计算机系统是非常有必要的,在这里推荐以下的材料:
- 书籍:《Operating Systems: Three Easy Pieces》(非常非常好的书,强烈推荐)
- 视频:操作系统(清华大学)
- 视频:Linux学习视频
1.5 数据库MySQL
对于Java后端工程师来说,数据库必不可少,以下推荐:
- 视频:与MySQL的零距离接触
- 书籍:《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生产环境下性能监控与调优详解(选做)
2.3 Java并发与多线程
并发与多线程是Java一项很核心的能力,推荐以下资料 (2选1,建议选择后者) :
- 书籍:《Java并发编程的艺术》
- 书籍:《Java并发编程实战》
2.4 数据结构与算法进阶
数据结构与算法的进阶很简单,就是大量的刷题,推荐以下材料:
- 书籍:《剑指offer》
- 书籍:《程序员代码面试指南》左神
- 视频:不想看书的,可以直接看左神的视频(我就不用多说了,懂的自然懂)
- 刷题:剑指offer
- 刷题:leetcode
- 刷题:算法练级计划(通过面试题刷算法)
- 海量数据处理:
- 博客: July博客
- 书籍:《编程珠玑》
- 动态规划: 经典动态规划问题
2.5 TCP/IP协议进阶
推荐以下材料:
2.6 操作系统(OS)进阶
推荐以下材料:
- 书籍:《深入理解计算机系统》
- 书籍:《鸟哥的linux私房菜》
2.7 数据库MySQL进阶
推荐以下材料:
- 书籍:《MySQL技术内幕 Innodb存储引擎》
- 书籍: 《高性能MySQL》
2.8 数据库Redis进阶
推荐以下材料:
- 书籍:《Redis设计与实现》
3. 综合
综合部分主要是介绍如何将前面学过的知识应用起来,即解决的是融会贯通,形成体系的问题。
3.1 面向对象与设计模式
推荐资料如下:
- 视频:设计模式(马士兵)
- 书籍:《Head First 设计模式》
3.2 项目(应用)
项目:叶神的高级项目课
- 目标: 熟悉Java后端开发流程,搞定Java后端项目
- 涉及技术栈:Spring Boot、MySQL、Redis、Nginx、Python、异步框架、全文搜索技术、排名算法、敏感词过滤算法、项目部署、项目设计、设计模式等
- 面试相关项目问题:见帖子《2019秋招经验谈》 2.5节:招商银行信用卡中心(信息技术部)面试的问题,对这个项目问的非常详细,给大家一个参考。
至此,关于项目,从项目本身到项目在面试中可能遇到的问题,便都准备完毕了。
参考资料:
- Spring官网:https://spring.io/
- MyBatis官网:http://www.mybatis.org/mybatis-3/
3.3 项目进阶(底层研究)
推荐以下材料:
- 书籍:《深入分析JavaWeb技术内幕》
- 书籍:《大型网站技术架构·核心原理与案例分析》
- 书籍:《Spring技术内幕》 (这本写的太好了)
最后分布式系统相关资料:
- System Design Primer
- CAP理论
- 一致性模型
- 可用性模式
- DNS
- CDN
- 负载均衡
- 反向***
- 应用层的微服务和服务发现
- 关系型数据库和NoSQL
- 缓存
- 异步通讯
- 安全等
写到这里,我想Java后端开发工程师入门应该是够了,甚至可以说已经有了一定的深入了。回顾一下,发现写了很多,但是大家不要吓到,徐徐图之,人生本来就是一个练级迭代的过程,希望你能保持自信,不断思考,坚持到底,搞定这份攻略。
最后,鉴于水平有限,有可能有遗漏的地方或者是不对的地方,烦请大家补充和指正。谢谢大家。如果有用的话,欢迎大家转发分享给同学,也希望大家点个赞鼓励一下~
希望这份攻略能够帮助到大家,也欢迎大家与我私信交流~
推荐阅读
- 1.Java攻略: 《Java练级攻略》
- 2.算法攻略:《算法练级计划》
- 3.校招攻略:《2019秋招经验谈》