本书归纳了Java学习者、工作者在工作和面试中最容易遭遇的技术短板和算法基础,本书把Java编程中的要点、难点和Java程序员必备的算法基础知识收集在一起,旨在帮助读者有针对性地提高这些看似“司空见惯”的基本功。
本书内容分为四个部分,其中第一部分主要介绍Java内存管理,这部分是大多数Java程序员最容易忽略的地方——因为Java不像C语言,而且Java提供了垃圾回收机制,因此导致许多Java程序员对内存管理重视不够;第二部分主要介绍Java编程过程中各种常见的陷阱,这些陷阱有的来自李刚老师早年的痛苦经历,有的来自他的众多学生的痛苦经历,都是Java程序员在编程过程中的“前车之鉴”,希望读者能引以为戒;第三部分主要介绍学习Java必备的算法基础知识,包括常用数据结构的各种算法实现,这部分内容是大多数Java程序员重视不够的地方,也是大厂面试的常考面试题;第四部分主要介绍Java程序开发的方法、经验等,它们是李刚老师多年的实际开发经验、培训经验的总结,符合初学者的习惯,更能满足初学者的需要,因此掌握这些开发方法、经验可以更有效地进行开发。
《疯狂Java讲义》作者李刚老师奉献给广大Java开发人员的面试宝典与避坑指南,用Java的特性讲解数据结构与算法,赠代码、Java后端与微服务面试题,并可进群交流
Java语言拥有的开发人群越来越庞大,大量程序员已经进入或正打算进入Java编程领域。这当然和Java语言本身的优秀不无关系,却也和Java编程入门简单有关。很多Java初学者,往往只通过快餐式的方式学了一下SSM或Spring Boot,说不定就可以找到一份Java编程的工作了。
问题是:这种“快餐式”的程序员、“突击式”的程序员真的满足要求吗?如果仅仅满足于一些简单的、重复式的开发工作,也许他们没有太多的问题,但他们可能很少有突破的机会,工作内容总停留在简单的CRUD层次,求职面试的工作岗位也总停留在初中级阶段。每当他们试图找一些大厂职位或面试一些更高级的职位时,往往得到的结果就是“回家等消息”。对他们而言,与其说Java是一种面向对象的语言,不如说更像一种脚本;他们从源代码层次来看程序运行(甚至只会从IntelliJ IDEA或Eclipse等集成开发环境中看程序运行),完全无法从底层内存管理的角度来看程序运行;他们天天在用Java类库、用SSM、用Spring Boot,但对这些东西的源代码实现知之甚少——这又如何突破自己、获得职业提升呢?
本书则致力于补齐“快餐式”的程序员、“突击式”的程序员的技术短板,针对Java开发偏底层的内存管理知识、常用算法实现、实际开发中的各种“坑”,以及软件开发的实践经验进行系统的归纳和整理。
这些内容其实就是我多年在软件行业积累的经验和总结,希望通过将这些经验、心得表达出来,把自己走过的弯路“标”出来,让后来者尽量少走弯路。
这些经验、心得不仅能帮开发者迅速补齐技术短板、提升实际项目的开发实力,还能让开发者更加从容地面对技术面试,敲开通往大厂职位的大门。
本书内容
本书第一部分主要介绍Java内存管理相关知识。内存管理既是Java程序员容易忽视的地方,也是Java编程的重点,这部分内容也是不少大厂面试的必考知识点。此外,有一定编程经验的Java开发者,自然而然就会关心垃圾回收、内存管理、性能优化等相关内容。无论学习哪种语言,只有真正从程序运行的底层机制、内存分配细节、内存回收细节把握程序运行过程,才能有豁然开朗的感觉。本书第一部分正是旨在帮助大家更好地掌握Java内存管理相关知识。
本书第二部分则来自无数Java学习者和工作者所踩过的“坑”。如果你曾经被一个“莫名其妙”的Bug折腾了很久,最后解决时却有一种想爆粗的冲动,这部分内容会帮你解决此类痛点,因为这部分知识都是广大开发者踩过的“坑”。这部分内容既是Java程序员的避“坑”指南,也是爬“坑”手册。
本书第三部分介绍Java算法知识。这部分内容介绍如何用Java实现各种数据结构,以及常用排序算法的Java实现,这部分也是大厂面试的常考内容,完全可称为大厂面试的敲门砖。此外,掌握这些内容也能极好地训练自己的编程思维,提升开发者在实际开发中解决问题的把控能力。
本书第四部分则是Java开发的实用心法,包括程序开发、调试的经验,比如如何分析软件的组件模型,如何创建数据模型,如何厘清程序的实现流程,以及程序出现错误后的调试思路,具体Bug的调试方法等,这些内容可能并不是某个具体的知识点,却会让软件开发者终身受益;这也是开发者具有良好工作经验的有效证明,若你在面试中能自信、从容地介绍这些内容,一定会让面试官对你刮目相看。这部分内容也包括Eclipse和IntelliJ IDEA两个主流IDE工具的使用说明,但介绍这两个IDE工具的用法不是主要目的,主要目的是通过这种方式让大家明白所有IDE工具的通用功能,从而做到“一法通、万法通”。这部分内容还包括软件测试和JUnit 5.x的内容,都是学习者容易忽略,但对实际开发非常重要的基本技能。
本书有什么特点
归纳来说,本书具有以下两个特点。
1. 针对技术痛点,补齐面试短板
本书第一部分的Java内存管理和第三部分的Java算法实现,可以说是绝大多数初中级程序员以前注意不够的地方,也是限制其职业提升的主要短板,认真掌握这两部分内容,不仅能有效地解决技术痛点,也能迅速提高面试成功率,敲开进入大厂的大门。
2.从实践中来,回归实践本身
无论是本书第二部分的避“坑”指南,还是本书第四部分的实用心法,它们都是实践性非常强的内容,并不是某个具体的理论知识点,这些内容不仅能让开发者终身受益,而且,如果开发者能在面试中自信、从容地介绍它们,一定会让面试官刮目相看。
本书写给谁看
如果你想从零开始学习Java编程,本书不适合你。如果你已经学会了Java编程,找工作时却屡屡被回复“回去等消息”,本书归纳的知识点将可帮你突破面试关;或者你已经是一个Java程序员了,在实际开发中却感觉力不从心,本书将非常适合你。本书会帮助你找出并补齐自己的Java编程的技术短板。