专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 北京Java学习路线,深入到浅出,入门到精通

北京Java学习路线,深入到浅出,入门到精通

更新时间:2019-08-17 09:00:00 来源:动力节点 浏览2520次

  很多人在学完Java基础之后,不知道后面该如何进行下一步地进行学习,或者不知道如何去学习。如何系统地学习Java一直是困扰着很多新手或者期待在Java方向进阶的小伙伴的一个问题。我也在知乎上回答了好几个类似的问题,我觉得既然很多人都需要这方面的指导,那我就写一篇自己对于如何系统学习Java后端的看法。


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


timg (2).jpg


  学习路线以及方法推荐


  下面的学习路线以及方法是笔主根据个人学习经历总结改进后得出,我相信照着这条学习路线来你的学习效率会非常高。学习某个知识点的过程中如果不知道看什么书的话,可以看小编以前发的这篇文章:Java学习必备书籍!。建议使用IntellijIDEA进行编码,可以单独抽时间学习IntellijIDEA的使用。


  step1:Java基础


  《Java核心技术卷1/2》和《HeadFirstJava》这两本书在我看来都是入门Java的很不错的书籍(《Java核心技术卷1/2》知识点更全,我更推荐这本书),我倒是觉得《Java编程思想》有点属于新手劝退书的意思,慎看,建议有点基础后再看。你也可以边看视频边看书学习(黑马、尚硅谷、慕课网的视频都还行)。对于Java8新特性的东西,我建议你基础学好之后可以看一下,暂时看不太明白也没关系,后面抽时间再回过头来看。


  看完之后,你可以用自己学的东西实现一个简单的Java程序,也可以尝试用Java解决一些编程问题,以此来将自己学到的东西付诸于实践。


  记得多总结!打好基础!把自己重要的东西都记录下来。API文档放在自己可以看到的地方,以备自己可以随时查阅。为了能让自己写出更优秀的代码,《EffectiveJava》、《重构》这两本书没事也可以看看。


  学习完之后可以看一下关于Java基础你不得不会的34个问题,检测一下自己的掌握情况,这34个问题都时Java中比较重要的知识点,最重要的是在Java后端面试中的出场率非常高。


  step2:多线程的简单使用


  多线程这部分内容可能会比较难以理解和上手,前期可以先简单地了解一下基础,到了后面有精力和能力后再回来仔细看。推荐《Java并发编程之美》或者《实战Java高并发程序设计》这两本书。


  Java多线程知识基础:


  什么是线程和进程?


  请简要描述线程与进程的关系,区别及优缺点?


  说说并发与并行的区别?


  为什么要使用多线程呢?


  使用多线程可能带来什么问题?


  说说线程的生命周期和状态?


  什么是上下文切换?


  什么是线程死锁?如何避免死锁?


  说说sleep()方法和wait()方法区别和共同点?


  为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?


  Java多线程知识进阶:


  synchronized关键字:①说一说自己对于synchronized关键字的了解;②说说自己是怎么使用synchronized关键字,在项目中用到了吗;③讲一下synchronized关键字的底层原理;④说说JDK1.6之后的synchronized关键字底层做了哪些优化,可以详细介绍一下这些优化吗;⑤谈谈synchronized和ReentrantLock的区别。


  volatile关键字:①讲一下Java内存模型;②说说synchronized关键字和volatile关键字的区别。


  ThreadLocal:①简介;②原理;③内存泄露问题。


  线程池:①为什么要用线程池?;②实现Runnable接口和Callable接口的区别;③执行execute()方法和submit()方法的区别是什么呢?;④如何创建线程池。


  Atomic原子类:①介绍一下Atomic原子类;②JUC包中的原子类是哪4类?;③讲讲AtomicInteger的使用;④能不能给我简单介绍一下AtomicInteger类的原理。


  AQS:①简介;②原理;③AQS常用组件。


  step3(可选):操作系统与计算机网络


  操作系统这方面我觉得掌握操作系统的基础知识和Linux的常用命令就行以及一些重要概念就行了。


  对于Linux我们要掌握基本的使用就需要对一些常用命令非常熟悉比如:目录切换命令、目录操作命令、文件的操作命令、压缩或者解压文件的命令等等。


  计算机网络方面的学习,我觉得掌握基本的知识就行了,不需要太深究,一般面试对这方面要求也不高,毕竟不是专门做网络的。推荐《网络是怎样连接的》、《图解HTTP》这两本书来看,这两本书都属于比较有趣易懂的类型,也适合没有基础的人来看。


  step4(可选):数据结构与算法


  如果你想进入大厂的话,我推荐你在学习完Java基础或者多线程之后,就开始每天抽出一点时间来学习算法和数据结构。为了提高自己的编程能力,你也可以坚持刷Leetcode。就目前国内外的大厂面试来说,刷Leetcode可以说已经成了不得不走的一条路。


  对于想要入门算法和数据结构的朋友,建议看这两本书《算法图解》和《大话数据结构》,这两本书虽然算不上很经典的书籍,但是比较有趣,对于刚入门算法和数据结构的朋友非常友好。《算法导论》非常经典,但是对于刚入门的就不那么友好了。


  另外,还有一本非常赞的算法书推荐给各位,这本书的名字就叫《算法》,书中的代码都是用Java语言编写。这本书的优点太多太多比如它的讲解基础而全面、对阅读者比较友好等等。我觉得这本书唯一的缺点就是太厚了(小声BB,可能和作者讲解某些知识点的时候优点啰嗦有关)。除了这本书之外,《剑指offer》、《编程珠玑》、《编程之美》这三本书都被很多大佬推荐过了,对于算法面试非常有帮助。《算法之美》这本书也非常不错,非常适合闲暇的时候看。其他算法资源,详情见从入门到修仙的算法之路


  《算法》


  step5:前端知识


  这一步主要是学习前端基础(HTML、CSS、JavaScript),当然BootStrap、VUE等等前端框架你也可以了解一下。网上有很多这方面资源,我只推荐一个大部分初学这些知识都会看的网站:http://www.w3school.com.cn/,这个网站用来回顾知识也很不错。推荐先把HTML、CSS、JS的基础知识过一遍,然后通过一个实际的前端项目来巩固。


  step5:MySQL


  学习MySQL的基本使用,基本的增删改查,SQL命令,索引、存储过程这些都学一下吧!推荐书籍《SQL基础教程(第2版)》(入门级)、《高性能MySQL:第3版》(进阶)、《MySQL必知必会》。


  MySQL学习资源推荐以及重要知识点总结:(修订)MySQL优化/面试,看这一篇就够了


  step6:Maven


  建议学习常用框架之前可以提前花半天时间学习一下Maven的使用。(到处找Jar包,下载Jar包是真的麻烦费事,使用Maven可以为你省很多事情)


  step7:常用框架


  学习Struts2(可不用学)、Spring、SpringMVC、Hibernate、Mybatis、shiro等框架的使用,(可选)熟悉Spring原理(大厂面试必备),然后很有必要学习一下SpringBoot。我也遇到很多公司对于应届生直接上手SpringBoot,不过我还是推荐你把Spring、SpringMVC好好学一下。


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


  推荐看文档+视频结合的方式,中途配合实战来学习。


  step8:高性能网站架构


  学习Dubbo、Zookeeper、常见的消息队列(比如ActiveMq、RabbitMQ)、Redis、Elasticsearch的使用(这些东西可以通过黑马视频最后一个分布式项目来学,边看视频,边自己做,查阅网上博客,效果更好)。


  一定要学会拓展知识,养成自主学习的意识。黑马项目对这些知识点的介绍都比较蜻蜓点水。


  step9:其他


  可以再回来看一下多线程方面的知识,还可以利用业余时间学习一下NIO和Netty,这样简历上也可以多点东西。如果想去大厂,JVM的一些知识也是必学的(Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理)推荐《深入理解Java虚拟机:JVM高级特性与最佳实践(最新第二版》和《实战Java虚拟机》,如果嫌看书麻烦的话,你也可以看我整理的文档:。


  另外,现在微服务特别火,很多公司在面试也明确要求需要微服务方面的知识。如果有精力的话可以去学一下SpringCloud生态系统以及其他微服务常用框架。


  下载这些学习资源,可以登录动力节点IT培训官网咨询在线客服老师。

image.png

image.png

image.png

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>