Two years after graduation, programmer Java learning route

foreword

As a graduate from the epidemic for 20 years, who has experienced school recruitment (small company) and social recruitment, and has been working for about two years, I will share some basic routes related to Java learning and answers to Java entry based on my own experience and experience. The common confusion of advanced, I hope it can help the Java package that is about to enter or just enter the industry to have a good career plan.

learning path

Self-study or training

Under normal circumstances, self-study or training depends on the self-control and economic ability of students.

Due to financial constraints, some students may choose online technical website courses, watching videos or reading books for self-study, while some students may choose offline training institutions to study because of their self-control and better financial ability. How to choose the one that is more suitable for you also depends on your own situation.

Under normal circumstances, students in majors choose self-study or online technology websites, because students from majors have more or less knowledge of Java in school, and even some students have the ability to write code independently, so all majors have the opportunity to choose. more. Compared with the majors, students who change careers may be inclined to training, because students who change careers may have much better economic conditions than they can do, and are more eager for high salaries in the Internet industry, but generally companies do not like students who have been trained. Because the trained students usually complete the 3- or even 4-year courses of the classmates in 6 months, both the depth and breadth of knowledge are relatively lacking compared to the classmates. At the same time, the trained students hope to find it as soon as possible. Jobs may be based on interview surprises, and even some training institutions will over-package them.

If you are a classmate during school, try your best to contact some teachers who have projects or projects that cooperate with the school, you can get the opportunity to practice the project, so as to increase the chance of your school recruiting into a big company.

Compare your own learning paths

Looking back on my own way of learning Java, I mainly divide it into three stages: campus stage, school recruitment stage, and work stage

campus stage

The campus stage is actually the introductory stage. It mainly learns the school's curriculum to understand the basic knowledge, and then reviews and consolidates it through the study in the library after class or the training video on the online website, so as to achieve mastery.

In my freshman year, I only had exposure to C and C++, and my mastery of C and C++ was limited to completing homework. At that time, I knew the ranking of C and C++. Until now, I have forgotten the knowledge points.

大二阶段,学习了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大佬

Guess you like

Origin juejin.im/post/7083287945280487455