毕业两年程序员Java学习路线

前言

作为从20年因疫情而毕业,经历过校招(小公司)和社招,工作已经两年左右的过来人,将结合自己的经验和体会,分享一些Java学习相关的基本路线和解答Java入门到进阶的常见困惑,希望可以帮助到即将入行或者初入行的Java小包拥有一个良好的职业规划。

学习之路

自学或者培训

一般情况下,自学或者培训都是看同学的自制能力和经济能力。

有些同学因为经济能力的限制,可能会选择在线的技术网站课程,从中看视频或者看书自学,有些同学因为自制力并且经济能力比较好,可能会选择线下的培训机构来进行学习。如何选择更适合自己的,也要根据自己的情况来定。

一般情况下科班的同学选择自学或者在线技术网站为主,因为科班出身的同学在学校中已经或多或少的了解过Java知识,甚至有些同学已经具备独立写代码的能力,所有科班选择机会也比较多。相对比科班来讲,转行的同学可能会倾向于培训,因为转行的同学可能经济条件上比可办的好很多,比较向往互联网行业的高薪资待遇,但是一般公司不太喜欢培训出来的同学,因为培训出来的同学往往是6个月学习完科班同学的3年甚至是4年的课程,无论是知识的深度还是知识的广度都相对比科班同学都比较欠缺,同时培训的同学希望能够尽快找到工作,可能以面试突击为主,甚至有些培训机构会过度包装。

如果是科班同学在校期间,尽量接触一些有项目的老师或者跟学校合作的项目,可以获得已经项目实践的机会,从而增加自己校招进入大公司的机会。

对比自己的学习之路

回顾自己的学习Java之路,我主要分为三个阶段校园阶段、校招阶段、工作阶段

校园阶段

校园阶段其实就是入门阶段,主要通过学习学校的课程,了解基本的知识,然后通过课下时间图书馆的学习或者在线网站的培训视频进行复习和巩固,从而到达到掌握。

大一阶段,我仅仅接触过C和C++,对于C和C++的掌握程度仅限于完成课后作业。当时对于C和C++的了解就知道名次,到现在为止,我已经忘记了其中的知识点。

大二阶段,学习了Java和JavaWeb,接触到了HTML、CSS、JS等这些前端知识,从大二开始我才开始真正的基础Java相关的知识,那时候,一般情况会从图书馆中借阅《Java核心技术卷》和《Java编程思想》这两本书,这两本到现在我还会不时的翻阅,还会有新的收获,建议购买当前时间最新版本,避免老版本的技术遗留问题。

大三和大四阶段,就逐步接触Spring、SpringMVC和Mybaits这些Java框架知识以及MySQL和Oracle数据等,这一阶段,主要是以培训技术视频为止,因为读书太困惑,跟视频进行进行学习,可以更容易上手,了解思路,最好是课后自己在敲一遍相关代码。同时也会学一些其他知识,比如如何使用IDEA、如何调试bug。然后就是自己找一些培训项目demo进行知识巩固。

校招阶段

校招阶段,我跟平常的同学一样,不知道面试阶段重点是什么,也不知道重点看哪些书,一般都会从网上找面经这些资料,非常的零散,刚开始我准备也是不是很充分,也错过了很多公司的机会,面试之前刷一下leetCode中《剑指offer》基本上可以应付大部分的算法题,同时刷一些Java八股文,就可以轻松的应对基础知识,对于中小型公司,这些基本上完全够用,如果对自己的算法和Java基础比较自信可以面试一下大厂,体验一下。当然,面试完之后总结和反思面试中的问题,哪些回答的不够好,哪些回答不出来,这可能就是知识薄弱部分,可以针对性的补充学习一下。然后经过多次面试后,可以面一些自己中意的公司,从而更容易的拿到offer。

工作阶段

刚开始工作阶段,那段时间也很迷茫,遇到问题问同事问多了,怕同事觉得自己能力不行,问少了可能很多项目上的东西都不了解或者无法解决bug,不知道该如何进阶。经过多方面的沟通和询问,大概分为两个方面,一方面是要把Java基础部分牢固,同时学习一些项目中进阶的知识,比如SpringCloud、Rabbit、Redis、Nginx等继续学习。另一方面就是不断的在项目积累经验,完成功能需求。比如更加高级的调试技巧、如何排查问题、遇到新需求如何分解等功能。这一部分主要是从项目中成长,从校园走向社会的第一步。

其实,刚进公司,就是公司开始的安排啥做啥,产品怎么设计,我们就怎么做,然后到开始提出一些建议,学习产品思维,学会“以终为始”,根据目的来反推设计。从完成任务为主,到考虑如何提高性能,考虑如何提高代码的可读性和可测试性。开始知识非常零散,通过一方面巩固专业基础,一方面不断“归纳和演绎”,现在知识更加系统化。开始从纯开发的视角聊问题,开始转变为用产品能听得懂的话和产品沟通,用测试能听得懂的话和测试沟通。学知识从记忆为主,会用为主,变为思考技术是为了解决什么问题,该技术的优缺点,作者为什么要这么设计,如果没有这个技术该怎么办等。学会采用“先猜想,后验证”的思维方式来学习,发现效果好很多。从纯输入为主,开始输出自己的学习方法论,通过博客输出自己的经验,通过技术群和一些优秀的朋友相互交流学习。现在一直在不断进阶前行的路上。

由于本人个人能力有限,下面的学习路线以及方法推荐一定还有很多欠缺的地方。本文比较适合刚入门或者想打好 Java 基础的朋友,比较基础。

学习路线

Java入门阶段

Java入门最重要的就是掌握Java基础,比如Java各种基础语法、各种集合的基本使用、IO流的操作、多线程等多方面的知识进行学习。

一般情况下学习 《Java 核心技术卷 1/2》《Head First Java》 这两本书就可以,这两本书作为Java入门书籍还是很好的,特别是 《Java 核心技术卷 1/2》 知识点更全民安,但是也更加繁琐,看起来很枯燥。《Head First Java》 翻译成中文就是 《Java 编程思想》 ,这本书比较难理解,属于Java进阶内容,是值得重复观看的一本书。

对比于书籍,刚毕业或者待入门的大学生可能更加适合边看视频边看书学习,不管是尚硅谷、黑马等培训机构的时候,都挺适合基础入门,讲解的知识点都通俗易懂。对于 Java8 新特性的东西,我建议你基础学好之后可以看一下,暂时看不太明白也没关系,后面抽时间再回过头来看。

JavaWeb阶段

经过Java入门阶段之后,就可以进入JavaWeb阶段,JavaWeb阶段有很多知识点,比如HTMl基本使用、CSS基本使用、Git版本控制、Web服务器的基本使用以及Linux命令等,通常情况下每个知识点都有很多阅读的书籍。 一般情况下,前端知识点主要在W3School中进行学习。至于Git和Linux都可以在对应的官网上找到相关教程。

数据库阶段

数据阶段主要以MySQL为主,通常讲解了MySQL的历史渊源、基本概念、基本使用、部分高级应用等。主要推荐的书籍有 《SQL 基础教程(第 2 版)》 (入门级)、 《高性能 MySQL : 第 3 版》 (进阶)、 《MySQL 必知必会》

同时一些很不错文件可以看一下

SSM项目常用框架阶段

常用框架一般是 SpringSpringMVCMybatis、等框架的使用,特别是 Spring 原理 基本是面试必问,虽然源码基本小公司不问,但是大厂面试必备,可以有必要学习一下。

Spring 真的很重要! 一定要搞懂 AOP 和 IOC 这两个概念。Spring 中 bean 的作用域与生命周期、SpringMVC 工作原理详解等等知识点都是非常重要的,一定要搞懂。

掌握了最基本的框架技术,那么应付一般公司的使用是没有问题的。

除了SSM之外还需要掌握SpringBoot技术,目前主流使用SpringBoot,但是SpringBoot还是以SPring为基础,可以通过JavaGuide开源的 Spring Boot 教程 (SpringBoot 核心知识点总结。 基于 Spring Boot 2.19+)。

同时JavaGuide也推荐看文档+视频结合的方式,中途配合实战来学习,学习期间可以多看看 JavaGuide 对于常用框架的总结

其他应用框架

  • 缓存框架(Redis)
  • 消息队列(Kafka、Rabbit)
  • 负载均衡(Nginx)
  • 服务保障(Zookeeper、Nacos)
  • 注册中心(Nacos、GateWay)
  • 搜索引擎(ElasticSearch)
  • 分库分表(MyCat)

这些技术都比较常用,同时也可以帮我们更加完善我们的学习系统。

其他进阶知识

  • UML
  • 设计模式
  • 操作系统
  • 数据结构
  • 计算机网络
  • 算法
  • JVM
  • 架构
  • 表达和沟通

这些进阶知识在工作之余进行学习,可以有效的帮助和扩展知识面。

总结

以上就是Java入门到进阶的基本学习路线。

如果是刚入门不久或者刚工作不久,下面一些建议大家可以参考下:

  • 学习的时候电脑上备着一份API手册**,随时查阅。
  • 充分利用搜索引擎:谷歌、百度、必应等。
  • 严格遵守代码规范,养成良好的编程习惯。可参考《阿里巴巴Java编程规范》
  • 学习技术看英文原版的官方文档和官方GitHub源码和示例。
  • 多实践出真知,如果看学习视频一定至少自己敲一遍。
  • 关注一些非常好的技术类公众号(如:慕课网、阿里技术、架构师之路等)了解最新进展,了解别人的经历和经验。
  • 可以加入一些靠谱的Java学习群和一些比自己更优秀的人交流。
  • 维护一个技术博客,把自己技术上遇到的难题和解决方案,自己遇到的一些坑分享上去,一方面加深自己的印象,一方面帮助其他人。
  • 最经典的图书一定要看。如《Java核心技术》、《深入理解Java虚拟机:JVM高级特性与最佳实践》、《Java并发编程的艺术》、《Java多线程编程核心技术》、《EffectiveJava》、《深入剖析Tomcat》等。
  • 遇到的问题一定要记录下来,可以记录到印象笔记、有道云笔记、为知笔记等,以后再遇到类似问题很容易找到之前的解决方案。也可以通过CSDN等平台采用博客的形式记录。
  • 编程的时候感觉哪个类或者哪个方法感兴趣,可以直接去查看源码一探究竟。要有精益求精的精神。如果可以优化尽量去优化代码。
  • 制定学习计划和目标,多久掌握某某框架,一年之后、两年之后要达到什么程度等等。
  • 多去一些知名互联网公司校招网站查查自己岗位所需的技能,有针对性的复习;
  • 可以去“牛客网”去查看一些面经,针对题目有目的的学习或者复习。心态上非常重要,不要被“觉得挺难”吓倒。
  • 学习初期很多困惑没关系,不要以为有困惑就代表自己学的不好,先学会用,然后到后面会自然而然的懂了,不懂的话再去思考。
  • 学习新技术直接去github上搜入门demo或者官方example,很快就可以上手。
  • 学习总结排查错误的能力,比如看错误堆栈信息,比如打日志,比如本地或者远程调试,比如分析源码等。强烈建议新手遇到问题一定要先思考,再分析调试,再网上搜答案,否则很难快速成长。

特别鸣谢:JavaGuide大佬

猜你喜欢

转载自juejin.im/post/7083287945280487455