欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何系统的学习JAVA?

程序员文章站 2022-05-29 12:56:48
文章内容稍长,但每一部分都没有多一句废话, 所有内容概括来说主要分为下面几部分 学习路线以及方法推荐 推荐一个学习过程中看的仓库 Java工程师必看书籍 Java工程师如何准备一场面试 学习路线以及方法推荐 对于学习路线的话,我说一条我比较推荐的,我相信照着这条学习路线来你的学习效率会非常高。下面提 ......

文章内容稍长,但每一部分都没有多一句废话, 所有内容概括来说主要分为下面几部分

  • 学习路线以及方法推荐
  • 推荐一个学习过程中看的仓库
  • java工程师必看书籍
  • java工程师如何准备一场面试

学习路线以及方法推荐

对于学习路线的话,我说一条我比较推荐的,我相信照着这条学习路线来你的学习效率会非常高。下面提到的书籍以及相关学习视频都答主已经整理好,文末有免费获取方式。很多朋友这几天领取了我整理的学习资源之后都私信感谢我,我个人还是挺高兴的,说句心里话,这些资源都是自己花了很长时间整理的。

  1. 掌握 java 基础知识(可以看《java 核心技术卷1》或者《head first java》这两本书在我看来都是入门java的很不错的书籍),当然你也可以边看视频边看书学习(推荐黑马或者尚硅谷的视频)。记得多总结!打好基础!把自己重要的东西都记录下来。
  2. 掌握多线程的简单实用(推荐《java并发编程之美》或者《实战java高并发程序设计》)。
  3. (可选)如果你想进入大厂的话,我推荐你在学习完java基础或者多线程之后,就开始每天抽出一点时间来学习算法和数据结构。为了提高自己的编程能力,你也可以坚持刷leetcode。
  4. 学习前端基础(html、css、javascript),当然bootstrap、vue等等前端框架你也可以了解一下。
  5. 学习mysql 的基本使用,基本的增删改查,sql命令,索引、存储过程这些都学一下吧!
  6. 学习struts2(可不用学)、spring、springmvc、hibernate、mybatis 等框架的使用,(可选)熟悉 spring 原理(大厂面试必备),然后很有必要学习一下springboot。我也遇到很多公司对于应届生直接上手springboot,不过我还是推荐你把spring、springmvc好好学一下。
  7. 学习linux的基本使用(常见命令、基本概念)
  8. 学习dubbo、zookeeper、常见的消息队列(比如activemq、rabbitmq)的使用.(这些东西可以通过黑马最后一个分布式项目来学,边看视频,边自己做,查阅网上博客,效果更好)
  9. (可选),如果想去大厂,jvm 的一些知识也是必学的(java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、jvm内存管理)推荐《深入理解java虚拟机:jvm高级特性与最佳实践(最新第二版》,如果嫌看书麻烦的话,你也可以看我整理的文档,在下面有链接。
  10. 从去年到现在,我根据市场技术栈的需求,录制了一套最新的java精讲视频教程,如果你现在也在学习java,在入门学习java的过程当中缺乏系统的学习教程,可以加我的java学习交流群:615741636,获取,群文件还有我这几年整理的学习手册,面试题,开发工具,pdf文档书籍,可以自行去下载。

我上面主要概括一下每一步要学习的内容,对学习规划有一个建议。知道要学什么之后,如何去学呢?我觉得学习每个知识点可以考虑这样去入手:官网(大概率是英文,不推荐初学者看)书籍(知识更加系统完全,推荐)视频(比较容易理解,推荐,特别是初学的时候)网上博客(解决某一知识点的问题的时候可以看看)

这里给各位一个建议,看视频的过程中最好跟着一起练,要做笔记!!!最好可以边看视频边找一本书籍看,看视频没弄懂的知识点一定要尽快解决,如何解决?首先百度/google,通过搜索引擎解决不了的话就找身边的朋友或者认识的一些人。

推荐一个学习过程中看的仓库

笔主自己开源的一个java学习与面试项目,目前已经几个月是javatrending榜第一名了,目前已经有 29k+ star,我自己有点不那么实至名归,我也只是靠平时业余时间来维护,大家可以看一下,因该对大家学习java有一点没有帮助。

这个仓库里面有常见知识点总结(目前还在继续完善中)、常见面试题、备战面试系列文章以及batj真实面经等内容。

  • 对于 java 初学者来说: 本文档倾向于给你提供一个比较详细的学习路径,让你对于java整体的知识体系有一个初步认识。另外,本文的一些文章 也是你学习和复习 java 知识不错的实践;
  • 对于非 java 初学者来说: 本文档更适合回顾知识,准备面试,搞清面试应该把重心放在那些问题上。要搞清楚这个道理:提前知道那些面试常见,不是为了背下来应付面试,而是为了让你可以更有针对的学习重点。

如何系统的学习JAVA?

书籍推荐

 

核心基础知识

  • 《图解http》(推荐,豆瓣评分 8.1 , 1.6k+人评价): 讲漫画一样的讲http,很有意思,不会觉得枯燥,大概也涵盖也http常见的知识点。因为篇幅问题,内容可能不太全面。不过,如果不是专门做网络方向研究的小伙伴想研究http相关知识的话,读这本书的话应该来说就差不多了。
  • 《大话数据结构》(推荐,豆瓣评分 7.9 , 1k+人评价):入门类型的书籍,读起来比较浅显易懂,适合没有数据结构基础或者说数据结构没学好的小伙伴用来入门数据结构。
  • 《数据结构与算法分析:c语言描述》(推荐,豆瓣评分 8.9,1.6k+人评价):本书是《data structures and algorithm analysis in c》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者mark allen weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评.已被世界500余所大学用作教材。
  • 《算法图解》(推荐,豆瓣评分 8.4,0.6k+人评价):入门类型的书籍,读起来比较浅显易懂,适合没有算法基础或者说算法没学好的小伙伴用来入门。示例丰富,图文并茂,以让人容易理解的方式阐释了算法.读起来比较快,内容不枯燥!
  • 《算法 第四版》(推荐,豆瓣评分 9.3,0.4k+人评价):java语言描述,算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。书的内容非常多,可以说是java程序员的必备书籍之一了。

 

java相关

  • 《effective java 》(推荐,豆瓣评分 9.0,1.4k+人评价):本书介绍了在java编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。通过对java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮和高效的代码。本书中的每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明。本书内容全面,结构清晰,讲解详细。可作为技术人员的参考用书。
  • 《head first java.第二版》(推荐,豆瓣评分 8.7,1.0k+人评价): 可以说是我的java启蒙书籍了,特别适合新手读当然也适合我们用来温故java知识点。
  • 《java多线程编程核心技术》: java多线程入门级书籍还不错,但是说实话,质量不是很高,很快就可以阅读完。
  • 《java网络编程 第4版》: 可以系统的学习一下网络的一些概念以及网络编程在java中的使用。
  • 《java核心技术卷1+卷2》(推荐): 很棒的两本书,建议有点java基础之后再读,介绍的还是比较深入的,非常推荐。这两本书我一般也会用来巩固知识点,是两本适合放在自己身边的好书。
  • 《java编程思想(第4版)》(推荐,豆瓣评分 9.1,3.2k+人评价):这本书要常读,初学者可以快速概览,中等程序员可以深入看看java,老鸟还可以用之回顾java的体系。这本书之所以厉害,因为它在无形中整合了设计模式,这本书之所以难读,也恰恰在于他对设计模式的整合是无形的。
  • 《java并发编程的艺术》(推荐,豆瓣评分 7.2,0.2k+人评价): 这本书不是很适合作为java并发入门书籍,需要具备一定的jvm基础。我感觉有些东西讲的还是挺深入的,推荐阅读。
  • 《实战java高并发程序设计》(推荐):豆瓣评分 8.3 ,书的质量没的说,推荐大家好好看一下。
  • 《java程序员修炼之道》: 很杂,我只看了前面几章,不太推荐阅读。
  • 《深入理解java虚拟机(第2版)周志明》(推荐,豆瓣评分 8.9,1.0k+人评价):建议多刷几遍,书中的所有知识点可以通过java运行时区域和java的内存模型与线程两个大模块罗列完全。
  • 《netty实战》(推荐,豆瓣评分 7.8,92人评价):内容很细,如果想学netty的话,推荐阅读这本书!
  • 《从paxos到zookeeper》(推荐,豆瓣评分 7.8,0.3k人评价):简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了paxos和zab协议。同时,本书深入介绍了分布式一致性问题的工业解决方案——zookeeper,并着重向读者展示这一分布式协调框架的使用方法、内部实现及运维技巧,旨在帮助读者全面了解zookeeper,并更好地使用和运维zookeeper。

 

javaweb相关

  • 《深入分析java web技术内幕》: 感觉还行,涉及的东西也蛮多。
  • 《spring实战(第4版)》(推荐,豆瓣评分 8.3 ,0.3k+人评价):不建议当做入门书籍读,入门的话可以找点国人的书或者视频看。这本定位就相当于是关于spring的新华字典,只有一些基本概念的介绍和示例,涵盖了spring的各个方面,但都不够深入。就像作者在最后一页写的那样:“学习spring,这才刚刚开始”。
  • 《java web整合开发王者归来》(已过时):当时刚开始学的时候就是开的这本书,基本上是完完整整的看完了。不过,我不是很推荐大家看。这本书比较老了,里面很多东西都已经算是过时了。不过,这本书的一个很大优点是:基础知识点概括全面。
  • 《redis实战》:如果你想了解redis的一些概念性知识的话,这本书真的非常不错。
  • 《redis设计与实现》(推荐,豆瓣评分 8.5,0.5k+人评价)
  • 《深入剖析tomcat》(推荐,豆瓣评分 8.4,0.2k+人评价):本书深入剖析tomcat 4和tomcat 5中的每个组件,并揭示其内部工作原理。通过学习本书,你将可以自行开发tomcat组件,或者扩展已有的组件。 读完这本书,基本可以摆脱背诵面试题的尴尬。
  • 《高性能mysql》(推荐,豆瓣评分 9.3,0.4k+人评价):mysql 领域的经典之作,拥有广泛的影响力。不但适合数据库管理员(dba)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。
  • 深入理解nginx(第2版):作者讲的非常细致,注释都写的都很工整,对于 nginx 的开发人员非常有帮助。优点是细致,缺点是过于细致,到处都是代码片段,缺少一些抽象。
  • 《rabbitmq实战指南》:《rabbitmq实战指南》从消息中间件的概念和rabbitmq的历史切入,主要阐述rabbitmq的安装、使用、配置、管理、运维、原理、扩展等方面的细节。如果你想浅尝rabbitmq的使用,这本书是你最好的选择;如果你想深入rabbitmq的原理,这本书也是你最好的选择;总之,如果你想玩转rabbitmq,这本书一定是最值得看的书之一
  • 《spring cloud微服务实战》:从时下流行的微服务架构概念出发,详细介绍了spring cloud针对微服务架构中几大核心要素的解决方案和基础组件。对于各个组件的介绍,《spring cloud微服务实战》主要以示例与源码结合的方式来帮助读者更好地理解这些组件的使用方法以及运行原理。同时,在介绍的过程中,还包含了作者在实践中所遇到的一些问题和解决思路,可供读者在实践中作为参考。
  • 《第一本docker书》:docker入门书籍!

 

操作系统

  • 《鸟哥的linux私房菜》(推荐,,豆瓣评分 9.1,0.3k+人评价):本书是最具知名度的linux入门书《鸟哥的linux私房菜基础学习篇》的最新版,全面而详细地介绍了linux操作系统。全书分为5个部分:第一部分着重说明linux的起源及功能,如何规划和安装linux主机;第二部分介绍linux的文件系统、文件、目录与磁盘的管理;第三部分介绍文字模式接口 shell和管理系统的好帮手shell脚本,另外还介绍了文字编辑器vi和vim的使用方法;第四部分介绍了对于系统安全非常重要的linux账号的管理,以及主机系统与程序的管理,如查看进程、任务分配和作业管理;第五部分介绍了系统管理员(root)的管理事项,如了解系统运行状况、系统服务,针对登录文件进行解析,对系统进行备份以及核心的管理等。

架构相关

  • 《大型网站技术架构:核心原理与案例分析+李智慧》(推荐):这本书我读过,基本不需要你有什么基础啊~读起来特别轻松,但是却可以学到很多东西,非常推荐了。另外我写过这本书的思维导图,关注我的微信公众号:“java面试通关手册”回复“大型网站技术架构”即可领取思维导图。
  • 《亿级流量网站架构核心技术》(推荐):一书总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。本书分为四部分:概述、高可用原则、高并发原则、案例实战。从负载均衡、限流、降级、隔离、超时与重试、回滚机制、压测与预案、缓存、池化、异步化、扩容、队列等多方面详细介绍了亿级流量网站的架构核心技术,让读者看后能快速运用到实践项目中。
  • 《架构解密从分布式到微服务(leaderus著)》:很一般的书籍,我就是当做课后图书来阅读的。

代码优化


如何准备一场java面试?

 

不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。 我其实特别不喜欢那种临近考试就提前背啊记啊各种题的行为,非常反对!我觉得这种方法特别极端,而且在稍有一点经验的面试官面前是根本没有用的。建议大家还是一步一个脚印踏踏实实地走。

1 如何获取大厂面试机会?

在讲如何获取大厂面试机会之前,先来给大家科普/对比一下两个校招非常常见的概念——春招和秋招。

  1. 招聘人数 :秋招多于春招 ;
  2. 招聘时间 : 秋招一般7月左右开始,大概一直持续到10月底。但是大厂(如bat)都会早开始早结束,所以一定要把握好时间。春招最佳时间为3月,次佳时间为4月,进入5月基本就不会再有春招了(金三银四)。
  3. 应聘难度 :秋招略大于春招;
  4. 招聘公司: 秋招数量多,而春招数量较少,一般为秋招的补充。

综上,一般来说,秋招的含金量明显是高于春招的。

下面我就说一下我自己知道的一些方法,不过应该也涵盖了大部分获取面试机会的方法。

  1. 关注大厂官网,随时投递简历(走流程的网申);
  2. 线下参加宣讲会,直接投递简历;
  3. 找到师兄师姐/认识的人,帮忙内推(能够让你避开网申简历筛选,笔试筛选,还是挺不错的,不过也还是需要你的简历够棒);
  4. 博客发文被看中/github优秀开源项目作者,大厂内部人员邀请你面试;
  5. 求职类网站投递简历(不是太推荐,适合海投);

除了这些方法,我也遇到过这样的经历:有些大公司的一些部门可能暂时没招够人,然后如果你的亲戚或者朋友刚好在这个公司,而你正好又在寻求offer,那么面试机会基本上是有了,而且这种面试的难度好像一般还普遍比其他正规面试低很多。

2 面试前的准备

2.1 准备自己的自我介绍

从hr面、技术面到高管面/部门主管面,面试官一般会让你先自我介绍一下,所以好好准备自己的自我介绍真的非常重要。网上一般建议的是准备好两份自我介绍:一份对hr说的,主要讲能突出自己的经历,会的编程技术一语带过;另一份对技术面试官说的,主要讲自己会的技术细节,项目经验,经历那些就一语带过。

我这里简单分享一下我自己的自我介绍的一个简单的模板吧:

面试官,您好!我叫某某。大学时间我主要利用课外时间学习某某。在校期间参与过一个某某系统的开发,另外,自己学习过程中也写过很多系统比如某某系统。在学习之余,我比较喜欢通过博客整理分享自己所学知识。我现在是某某社区的认证作者,写过某某很不错的文章。另外,我获得过某某奖,我的github上开源的某个项目已经有多少star了。

2.2 关于着装

穿西装、打领带、小皮鞋?no!no!no!这是互联网公司面试又不是去走红毯,所以你只需要穿的简单大方就好,不需要太正式。

2.3 随身带上自己的成绩单和简历

有的公司在面试前都会让你交一份成绩单和简历当做面试中的参考。

2.4 如果需要笔试就提前刷一些笔试题

平时空闲时间多的可以刷一下笔试题目(牛客网上有很多)。但是不要只刷面试题,不动手code,程序员不是为了考试而存在的。

2.5 花时间一些逻辑题

面试中发现有些公司都有逻辑题测试环节,并且都把逻辑笔试成绩作为很重要的一个参考。

2.6 准备好自己的项目介绍

如果有项目的话,技术面试第一步,面试官一般都是让你自己介绍一下你的项目。你可以从下面几个方向来考虑:

  1. 对项目整体设计的一个感受(面试官可能会让你画系统的架构图)
  2. 在这个项目中你负责了什么、做了什么、担任了什么角色
  3. 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用
  4. 另外项目描述中,最好可以体现自己的综合素质,比如你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的又或者说你在这个项目用了什么技术实现了什么功能比如:用redis做缓存提高访问速度和并发量、使用消息队列削峰和降流等等。

2.7 提前准备技术面试

搞清楚自己面试中可能涉及哪些知识点、那些知识点是重点。面试中哪些问题会被经常问到、自己改如何回答。(强烈不推荐背题,第一:通过背这种方式你能记住多少?能记住多久?第二:背题的方式的学习很难坚持下去!)

2.7 面试之前做好定向复习

所谓定向复习就是专门针对你要面试的公司来复习。比如你在面试之前可以在网上找找有没有你要面试的公司的面经。

举个栗子:在我面试 thoughtworks 的前几天我就在网上找了一些关于 thoughtworks 的技术面的一些文章。然后知道了 thoughtworks 的技术面会让我们在之前做的作业的基础上增加一个或两个功能,所以我提前一天就把我之前做的程序重新重构了一下。然后在技术面的时候,简单的改了几行代码之后写个测试就完事了。如果没有提前准备,我觉得 20 分钟我很大几率会完不成这项任务。

3 面试之后复盘

如果失败,不要灰心;如果通过,切勿狂喜。面试和工作实际上是两回事,可能很多面试未通过的人,工作能力比你强的多,反之亦然。我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!