Offer来了:Java面试核心知识点精讲(原理篇)

Offer来了:Java面试核心知识点精讲(原理篇)

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

适读人群 :中级Java、高级Java、Java架构师

本书在手,Java程序员笑傲“江湖”!

面试在即,Java知识点很凌乱?

别急,本书精选重要知识点为你精细讲解:

JVM原理、Java基础;

并发编程、数据结构和算法;

网络与负载均衡;;

数据库与分布式事务

分布式缓存原理及应用;

设计模式原理及实现。

除了原理讲解,还有Java实现!

面试时的原理 动手实现脑海已就位,整装待发!

互联网寒冬怕什么!

另外,作者亲授掌握本书知识点技巧:

----3周:细读本书,详细理解书中的知识点、代码和架构图。

----2天:对着本书目录回忆知识点,及时查漏补缺。

----3小时:复习本书,以充分掌握本书知识点。

我想,你应该会更快!加油!

内容简介

本书是对Java程序员面试必备知识点的总结,详细讲解了JVM原理、多线程、数据结构和算法、分布式缓存、设计模式等面试必备知识点,在讲解时不拖泥带水,力求精简。

本书总计9章,第1章讲解JVM原理,涉及JVM运行机制、JVM内存模型、常用垃圾回收算法和JVM类加载机制等内容;第2章讲解Java基础知识,涉及集合、异常分类及处理、反射、注解、内部类、泛型和序列化等内容;第3章讲解Java并发编程知识,涉及Java多线程的工作原理及应用、Java线程池的工作原理及应用,以及锁、进程调度算法等内容;第4章讲解数据结构知识,涉及栈、队列、链表、散列表、二叉树、红黑树、图和位图等内容;第5章讲解Java中的常用算法,涉及二分查找、冒泡排序、插入排序、快速排序、希尔排序、归并排序、桶排序、基数排序等算法;第6章讲解网络与负载均衡原理,涉及TCP/IP、HTTP、常用负载均衡算法和LVS原理等内容;第7章讲解数据库及分布式事务原理,涉及数据库存储引擎、数据库并发操作和锁、数据库分布式事务等内容;第8章讲解分布式缓存的原理及应用,涉及分布式缓存介绍、Ehcache原理及应用、Redis原理及应用、分布式缓存设计的核心问题等内容;第9章讲解设计模式,涉及常见的23种经典设计模式。

本书可作为Java程序员的技术面试参考用书,也可作为Java程序员、技术经理和架构师的日常技术参考用书。

作者简介

王磊,现任国内某知名互联网公司大数据技术架构师,有十余年丰富的物联网及大数据研发和技术架构经验,对物联网及大数据的原理和技术实现有深刻的理解。长期从事海外项目的研发和交付工作,对异地多活数据中心的建设及高可用、高并发系统的设计有丰富的实战经验。

章节目录

版权信息

前言

章节架构

阅读建议

致谢

第1章 JVM

1.1 JVM的运行机制

1.2 多线程

1.3 JVM的内存区域

1.3.1 程序计数器:线程私有,无内存溢出问题

1.3.2 虚拟机栈:线程私有,描述Java方法的执行过程

1.3.3 本地方法区:线程私有

1.3.4 堆:也叫作运行时数据区,线程共享

1.3.5 方法区:线程共享

1.4 JVM的运行时内存

1.4.1 新生代:Eden区、ServivorTo区和ServivorFrom区

1.4.2 老年代

1.4.3 永久代

1.5 垃圾回收与算法

1.5.1 如何确定垃圾

1.引用计数法

2.可达性分析

1.5.2 Java中常用的垃圾回收算法

1.标记清除算法

2.复制算法

3.标记整理算法

4.分代收集算法

1.6 Java中的4种引用类型

1.7 分代收集算法和分区收集算法

1.7.1 分代收集算法

1.新生代与复制算法

2.老年代与标记整理算法

1.7.2 分区收集算法

1.8 垃圾收集器

1.8.1 Serial垃圾收集器:单线程,复制算法

1.8.2 ParNew垃圾收集器:多线程,复制算法

1.8.3 Parallel Scavenge垃圾收集器:多线程,复制算法

1.8.4 Serial Old垃圾收集器:单线程,标记整理算法

1.8.5 Parallel Old垃圾收集器:多线程,标记整理算法

1.8.6 CMS垃圾收集器

1.8.7 G1垃圾收集器

1.9 Java网络编程模型

1.9.1 阻塞I/O模型

1.9.2 非阻塞I/O模型

1.9.3 多路复用I/O模型

1.9.4 信号驱动I/O模型

1.9.5 异步I/O模型

1.9.6 Java I/O

1.9.7 Java NIO

1. Channel

2. Buffer

3. Selector

4. Java NIO使用

1.10 JVM的类加载机制

1.10.1 JVM的类加载阶段

1.加载

2.验证

3.准备

4.解析

5.初始化

1.10.2 类加载器

1.10.3 双亲委派机制

1.10.4 OSGI

第2章 Java基础

2.1 集合

2.1.1 List:可重复

1.ArrayList:基于数组实现,增删慢,查询快,线程不安全

2.Vector:基于数组实现,增删慢,查询快,线程安全

3.LinkedList:基于双向链表实现,增删快,查询慢,线程不安全

2.1.2 Queue

2.1.3 Set:不可重复

1.HashSet:HashTable实现,无序

2.TreeSet:二叉树实现

3.LinkHashSet:HashTable实现数据存储,双向链表记录顺序

2.1.4 Map

1.HashMap:数组+链表存储数据,线程不安全

2.ConcurrentHashMap:分段锁实现,线程安全

3.HashTable:线程安全

4.TreeMap:基于二叉树数据结构

5.LinkedHashMap:基于HashTable数据结构,使用链表保存插入顺序

2.2 异常分类及处理

2.2.1 异常的概念

2.2.2 异常分类

2.2.3 异常处理方式:抛出异常、使用try catch捕获并处理异常

2.3 反射机制

2.3.1 动态语言的概念

2.3.2 反射机制的概念

2.3.3 反射的应用

2.3.4 Java的反射API

2.3.5 反射的步骤

2.3.6 创建对象的两种方式

2.3.7 Method的invoke方法

2.4 注解

2.4.1 注解的概念

2.4.2 标准元注解:@Target、@Retention、@Documented、@Inherited

2.4.3 注解处理器

1.定义注解接口

2.使用注解接口

3.定义注解处理器

2.5 内部类

2.5.1 静态内部类

2.5.2 成员内部类

2.5.3 局部内部类

2.5.4 匿名内部类

2.6 泛型

2.6.1 泛型标记和泛型限定:E、T、K、V、N、?

1.对泛型上限的限定:

2.对泛型下限的限定:

2.6.2 泛型方法

2.6.3 泛型类

2.6.4 泛型接口

2.6.5 类型擦除

2.7 序列化

2.7.1 Java序列化API的使用

2.7.2 序列化和反序列化

第3章 Java并发编程

3.1 Java线程的创建方式

3.1.1 继承Thread类

3.1.2 实现Runnable接口

3.1.3 通过ExecutorService和Callable实现有返回值的线程

3.1.4 基于线程池

3.2 线程池的工作原理

3.2.1 线程复用

3.2.2 线程池的核心组件和核心类

3.2.3 Java线程池的工作流程

3.2.4 线程池的拒绝策略

1. AbortPolicy

2. CallerRunsPolicy

3. DiscardOldestPolicy

4. DiscardPolicy

5.自定义拒绝策略

3.3 5种常用的线程池

3.3.1 newCachedThreadPool

3.3.2 newFixedThreadPool

3.3.3 newScheduledThreadPool

3.3.4 newSingleThreadExecutor

3.3.5 newWorkStealingPool

3.4 线程的生命周期

3.4.1 新建状态:New

3.4.2 就绪状态:Runnable

3.4.3 运行状态:Running

3.4.4 阻塞状态:Blocked

3.4.5 线程死亡:Dead

3.5 线程的基本方法

3.5.1 线程等待:wait方法

3.5.2 线程睡眠:sleep方法

3.5.3 线程让步:yield方法

3.5.4 线程中断:interrupt方法

3.5.5 线程加入:join方法

3.5.6 线程唤醒:notify方法

3.5.7 后台守护线程:setDaemon方法

3.5.8 sleep方法与wait方法的区别

3.5.9 start方法与run方法的区别

3.5.10 终止线程的4种方式

1.正常运行结束

2.使用退出标志退出线程

3.使用Interrupt方法终止线程

4.使用stop方法终止线程:不安全

3.6 Java中的锁

3.6.1 乐观锁

3.6.2 悲观锁

3.6.3 自旋锁

1.自旋锁的优缺点

2.自旋锁的时间阈值

3.6.4 synchronized

1.synchronized的作用范围

2.synchronized的用法简介

3.synchronized的实现原理

3.6.5 ReentrantLock

1.ReentrantLock的用法

2.ReentrantLock如何避免死锁:响应中断、可轮询锁、定时锁

3.Lock接口的主要方法

4.公平锁与非公平锁

5.tryLock、lock和lockInterruptibly的区别

3.6.6 synchronized和ReentrantLock的比较

3.6.7 Semaphore

3.6.8 AtomicInteger

3.6.9 可重入锁

3.6.10 公平锁与非公平锁

3.6.11 读写锁:ReadWriteLock

3.6.12 共享锁和独占锁

3.6.13 重量级锁和轻量级锁

3.6.14 偏向锁

3.6.15 分段锁

3.6.16 同步锁与死锁

3.6.17 如何进行锁优化

1.减少锁持有的时间

2.减小锁粒度

3.锁分离

4.锁粗化

5.锁消除

3.7 线程上下文切换

3.7.1 上下文切换

3.7.2 引起线程上下文切换的原因

3.8 Java阻塞队列

3.8.1 阻塞队列的主要操作

1.插入操作

2.获取数据操作

3.8.2 Java中的阻塞队列实现

1.ArrayBlockingQueue

2.LinkedBlockingQueue

3.PriorityBlockingQueue

4.DelayQueue

5.SynchronousQueue

6.LinkedTransferQueue

7.LinkedBlockingDeque

3.9 Java并发关键字

3.9.1 CountDownLatch

3.9.2 CyclicBarrier

3.9.3 Semaphore

3.9.4 volatile关键字的作用

3.10 多线程如何共享数据

3.10.1 将数据抽象成一个类,并将对这个数据的操作封装在类的方法中

3.10.2 将Runnable对象作为一个类的内部类,将共享数据作为这个类的成员变量

3.11 ConcurrentHashMap并发

3.11.1 减小锁粒度

3.11.2 ConcurrentHashMap的实现

3.12 Java中的线程调度

3.12.1 抢占式调度

3.12.2 协同式调度

3.12.3 Java线程调度的实现:抢占式

3.12.4 线程让出CPU的情况

3.13 进程调度算法

3.13.1 优先调度算法

1.先来先服务调度算法

2.短作业优先调度算法

3.13.2 高优先权优先调度算法

1.非抢占式优先调度算法

2.抢占式优先调度算法

3.高响应比优先调度算法

3.13.3 时间片的轮转调度算法

1.时间片轮转法

2.多级反馈队列调度算法

3.14 什么是CAS

3.14.1 CAS的概念:比较并交换

3.14.2 CAS的特性:乐观锁

3.14.3 CAS自旋等待

3.15 ABA问题

3.16 什么是AQS

3.16.1 AQS的原理

3.16.2 state:状态

3.16.3 AQS共享资源的方式:独占式和共享式

第4章 数据结构

4.1 栈及其Java实现

4.2 队列及其Java实现

4.3 链表

4.3.1 链表的特点

4.3.2 单向链表的操作及其Java实现

1.单向链表的操作

2.单向链表的Java实现

4.3.3 双向链表及其Java实现

4.3.4 循环链表

4.4 散列表

4.4.1 常用的构造散列函数

4.4.2 Hash的应用

4.5 二叉排序树

4.5.1 插入操作

4.5.2 删除操作

4.5.3 查找操作

4.5.4 用Java实现二叉排序树

4.6 红黑树

4.6.1 红黑树的特性

4.6.2 红黑树的左旋

4.6.3 红黑树的右旋

4.6.4 红黑树的添加

4.6.5 红黑树的删除

4.7 图

4.7.1 无向图和有向图

4.7.2 图的存储结构:邻接矩阵

1.无向图的邻接矩阵

2.有向图的邻接矩阵

3.带权重图的邻接矩阵

4.7.3 图的存储结构:邻接表

1.无向图的邻接表结构

2.带权值的网图连接表结构

4.7.4 图的遍历

1.广度优先遍历

2.深度优先遍历

4.8 位图

4.8.1 位图的数据结构

4.8.2 位图的Java实现

1.数据结构的定义

2.查询方法的实现

3.修改方法的实现

第5章 Java中的常用算法

5.1 二分查找算法

5.1.1 二分查找算法的原理

5.1.2 二分查找算法的Java实现

5.2 冒泡排序算法

5.2.1 冒泡排序算法的原理

5.2.2 冒泡排序算法的Java实现

5.3 插入排序算法

5.3.1 插入排序算法的原理

5.3.2 插入排序算法的Java实现

5.4 快速排序算法

5.4.1 快速排序算法的原理

5.4.2 快速排序算法的Java实现

5.5 希尔排序算法

5.5.1 希尔排序算法的原理

5.5.2 希尔排序算法的Java实现

5.6 归并排序算法

5.6.1 归并排序算法的原理

5.6.2 归并排序算法的Java实现

5.7 桶排序算法

5.7.1 桶排序算法的原理

5.7.2 桶排序算法的Java实现

5.8 基数排序算法

5.8.1 基数排序算法的原理

5.8.2 基数排序算法的Java实现

5.9 其他算法

5.9.1 剪枝算法

5.9.2 回溯算法

5.9.3 最短路径算法

第6章 网络与负载均衡

6.1 网络

6.1.1 OSI七层网络模型

6.1.2 TCP/IP四层网络模型

6.1.3 TCP三次握手/四次挥手

1.TCP的数据包结构

2.TCP中的三次握手

3.TCP中的四次挥手

6.1.4 HTTP的原理

1.HTTP的传输流程

2.HTTP中的常见状态码

3.HTTPS

6.1.5 CDN的原理

1.CDN的关键技术

2.CDN的主要特点

3.内容分发系统

4.负载均衡系统

5.管理系统

6.2 负载均衡

6.2.1 四层负载均衡与七层负载均衡的对比

1.四层负载均衡

2.七层负载均衡

6.2.2 负载均衡算法

1.轮询均衡(Round Robin)

2.权重轮询均衡(Weighted Round Robin)

3.随机均衡(Random)

4.权重随机均衡(Weighted Random)

5.响应速度均衡(Response Time)

6.最少连接数均衡(Least Connection)

7.处理能力均衡

8. DNS响应均衡(Flash DNS)

9.散列算法均衡

10. IP地址散列

11. URL散列

6.2.3 LVS的原理及应用

1.LVS的原理

2.LVS数据转发

3.LVS NAT模式

4.LVS DR模式

5.LVS TUN模式

6.LVS FULLNAT模式

6.2.4 Nginx反向代理与负载均衡

1.upstream_module

2.proxy_pass

第7章 数据库及分布式事务

7.1 数据库的基本概念及原则

7.1.1 存储引擎

1. MyIASM

2. InnoDB

3. TokuDB

4. Memory

7.1.2 创建索引的原则

7.1.3 数据库三范式

1.第一范式

2.第二范式

3.第三范式

7.1.4 数据库事务

7.1.5 存储过程

7.1.6 触发器

7.2 数据库的并发操作和锁

7.2.1 数据库的并发策略

1.乐观锁

2.悲观锁

3.时间戳

7.2.2 数据库锁

1.行级锁

2.表级锁

3.页级锁

4.基于Redis的分布式锁

7.2.3 数据库分表

7.3 数据库分布式事务

7.3.1 CAP

7.3.2 两阶段提交协议

1.Prepare(准备阶段)

2.Commit(提交阶段)

3.两阶段提交的缺点

7.3.3 三阶段提交协议

1.CanCommit阶段

2.PreCommit阶段

3.DoCommit阶段

7.3.4 分布式事务

1.传统事务

2.柔性事务

第8章 分布式缓存的原理及应用

8.1 分布式缓存介绍

8.2 Ehcache的原理及应用

8.2.1 Ehcache的原理

1.Ehcache的特点

2.Ehcache的架构

3.Ehcache的存储方式

4.Ehcache的扩展模块

8.2.2 Ehcache的应用

8.3 Redis的原理及应用

8.3.1 Redis的原理

1.Redis的数据类型

2.Redis管道

3.Redis的事务

4.Redis发布、订阅

5.Redis集群数据复制的原理

6.Redis的持久化

7.Redis的集群模式及工作原理

8.3.2 Redis的应用

1.安装Redis

2.应用Redis SpringBoot

8.4 分布式缓存设计的核心问题

8.4.1 缓存预热

8.4.2 缓存更新

8.4.3 缓存淘汰策略

8.4.4 缓存雪崩

8.4.5 缓存穿透

8.4.6 缓存降级

第9章 设计模式

9.1 设计模式简介

1.单一职责原则

2.开闭原则

3.里氏代换原则

4.依赖倒转原则

5.接口隔离原则

6.合成/聚合复用原则

7.迪米特法则

9.2 工厂模式的概念及Java实现

9.3 抽象工厂模式的概念及Java实现

9.4 单例模式的概念及Java实现

1.懒汉模式(线程安全)

2.饿汉模式

3.静态内部类

4.双重校验锁

9.5 建造者模式的概念及Java实现

9.6 原型模式的概念及Java实现

9.7 适配器模式的概念及Java实现

1.类适配器模式

2.对象适配器模式

3.接口适配器模式

9.8 装饰者模式的概念及Java实现

9.9 代理模式的概念及Java实现

9.10 外观模式的概念及Java实现

9.11 桥接模式的概念及Java实现

9.12 组合模式的概念及Java实现

9.13 享元模式的概念及Java实现

9.14 策略模式的概念及Java实现

9.15 模板方法模式的概念及Java实现

9.16 观察者模式的概念及Java实现

9.17 迭代器模式的概念及Java实现

9.18 责任链模式的概念及Java实现

9.19 命令模式的概念及Java实现

9.20 备忘录模式的概念及Java实现

9.21 状态模式的概念及Java实现

9.22 访问者模式的概念及Java实现

9.23 中介者模式的概念及Java实现

9.24 解释器模式的概念及Java实现

Offer来了:Java面试核心知识点精讲(原理篇)是2019年由电子工业出版社出版,作者王磊。

得书感谢您对《Offer来了:Java面试核心知识点精讲(原理篇)》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
精益餐饮 电子书
本书讲述万国餐厅运用精益思想实现变革,助力餐饮从业者提高运营管理水平。
精益商业思维 电子书
一本满足企业创新需求,让创业者和企业家拥有精益商业思维的必备常识用书。
精益的传说 电子书
每一个人心中都有一个江湖梦,通过武侠体来描写精益方面的知识,部分故事来源于真实事件,能够让读者都给自己设定一个角色,更有认同感和代入感。
超级面试官——快速提升识人技能的面试实战手册 电子书
本书教您如何成为超级面试官,涵盖专业能力、面试技巧等方面内容,提供实操小工具。
院长精益管理思维 电子书
差异化的价值定位所有的院长每天都在想同一件事,就是提高医院的管理效率,提升医院的整体价值。