Offer来了:Java面试核心知识点精讲(第2版)
¥
30
1.9折
¥
159
九品
仅1件
作者王磊
出版社电子工业出版社
出版时间2022-07
版次1
装帧其他
上书时间2024-11-07
商品详情
- 品相描述:九品
图书标准信息
-
作者
王磊
-
出版社
电子工业出版社
-
出版时间
2022-07
-
版次
1
-
ISBN
9787121435959
-
定价
159.00元
-
装帧
其他
-
开本
其他
-
纸张
胶版纸
-
页数
636页
-
字数
910千字
- 【内容简介】
-
本书讲解Java面试中常被问及的核心知识点,涉及Java基础、Java并发编程、JVM、Java高并发网络编程、Spring基础、Netflix的原理及应用、Spring Cloud Alibaba的原理及应用、数据结构、Java中常用算法的原理及其Java实现、关系数据库及分布式事务、分布式缓存的原理及应用、ZooKeeper的原理及应用、Kafka的原理及应用、Elasticsearch的原理及应用、设计模式的概念及其Java实现。
本书内容全面、细致,既可帮助读者迅速查找Java知识点,也可帮助读者完善其Java知识体系;不但可以作为Java面试知识速通手册,也可以作为Java程序员的案头手册。
- 【作者简介】
-
王磊
飞轮数据(Apache Doris商业化公司)大数据架构师、阿里云MVP、极客时间“每日一课”专栏作者。对分布式架构、DevOps、Serverless、PB级数据处理等有丰富的实战经验,深入理解数据治理、数据湖和实时数仓技术。热爱技术,喜欢创新,关注社区的技术发展状态。
已出版的图书有:
-《Offer来了:Java面试核心知识点精讲(原理篇)》
-《Offer来了:Java面试核心知识点精讲(框架篇)》
-《图解Spark:大数据快速分析实战》
- 【目录】
-
》》》第1章 Java基础 1《《《
1.1 集合 2
1.1.1 List:可重复 2
1.1.2 Queue 3
1.1.3 Set:不可重复 4
1.1.4 Map 5
1.2 异常的分类及处理 8
1.2.1 异常的概念 8
1.2.2 异常的分类 9
1.2.3 处理异常的方式 10
1.3 反射机制 12
1.3.1 动态语言的概念 12
1.3.2 反射机制的概念 12
1.3.3 反射的应用 12
1.3.4 Java的反射API 13
1.3.5 反射的过程 13
1.3.6 创建对象的两种方式 14
1.3.7 Method的invoke方法 15
1.4 注解 16
1.4.1 注解的概念 16
1.4.2 标准元注解:@Target、@Retention、@Documented、@Inherited 16
1.4.3 注解处理器 17
1.5 内部类 19
1.5.1 静态内部类 19
1.5.2 成员内部类 20
1.5.3 局部内部类 21
1.5.4 匿名内部类 21
1.6 泛型 22
1.6.1 泛型标记和泛型限定:E、T、K、V、N、? 23
1.6.2 泛型方法 24
1.6.3 泛型类 25
1.6.4 泛型接口 25
1.6.5 类型擦除 26
1.7 序列化 27
1.7.1 Java序列化API的应用 27
1.7.2 Kryo序列化 29
1.7.3 Avro序列化 31
1.7.4 ProtoBuf序列化 33
1.8 Java I/O 35
1.8.1 输入流和输出流 35
1.8.2 字节流和字符流 36
1.8.3 节点流和处理流 42
1.8.4 内存映射文件技术 43
》》》第2章 Java并发编程 46《《《
2.1 常见的Java线程的创建方式 47
2.1.1 继承Thread类 47
2.1.2 实现Runnable接口 48
2.1.3 通过ExecutorService和Callable接口实现有返回值的线程 49
2.1.4 基于线程池 50
2.2 Java线程池的原理 50
2.2.1 线程复用 51
2.2.2 线程池的核心组件和核心类 51
2.2.3 Java线程池的工作流程 52
2.2.4 线程池的拒绝策略 53
2.3 5种常用的线程池 56
2.3.1 newCachedThreadPool 56
2.3.2 newFixedThreadPool 57
2.3.3 newScheduledThreadPool 57
2.3.4 newSingleThreadExecutor 58
2.3.5 newWorkStealingPool 58
2.4 线程的生命周期 58
2.4.1 新建状态:New 60
2.4.2 就绪状态:Runnable 60
2.4.3 阻塞状态:Blocked 60
2.4.4 等待状态:Waiting 61
2.4.5 超时等待状态:Timed_Waiting 61
2.4.6 线程终止:Terminated 61
2.5 线程的基本方法 61
2.5.1 线程等待:wait方法 62
2.5.2 线程睡眠:sleep方法 62
2.5.3 线程让步:yield方法 62
2.5.4 线程中断:interrupt方法 62
2.5.5 线程加入:join方法 63
2.5.6 线程唤醒:notify方法 64
2.5.7 后台守护线程:setDaemon方法 64
2.5.8 sleep方法和wait方法的区别 65
2.5.9 start方法和run方法的区别 65
2.5.10 终止线程的4种方式 65
2.6 Java中的锁 67
2.6.1 乐观锁 68
2.6.2 悲观锁 68
2.6.3 自旋锁 68
2.6.4 synchronized 69
2.6.5 ReentrantLock 77
2.6.6 synchronized与ReentrantLock的对比 83
2.6.7 Semaphore 83
2.6.8 AtomicInteger 84
2.6.9 可重入锁 85
2.6.10 公平锁和非公平锁 85
2.6.11 读写锁 86
2.6.12 共享锁和独占锁 86
2.6.13 重量级锁和轻量级锁 87
2.6.14 偏向锁 87
2.6.15 分段锁 88
2.6.16 同步锁和死锁 88
2.6.17 如何进行锁优化 88
2.7 线程上下文切换 90
2.7.1 线程上下文切换的流程 90
2.7.2 导致线程上下文切换的原因 91
2.8 Java中的阻塞队列 91
2.8.1 阻塞队列的主要操作 92
2.8.2 Java中阻塞队列的实现 96
2.9 Java并发关键字 101
2.9.1 CountDownLatch 101
2.9.2 CyclicBarrier 103
2.9.3 Semaphore 104
2.9.4 volatile的作用 106
2.10 多线程如何共享数据 108
2.10.1 将数据抽象成一个类,将对这个数据的操作封装在类的方法中 108
2.10.2 将Runnable对象作为一个类的内部类,将共享数据作为其成员变量 109
2.11 Fork/Join并发框架 111
2.11.1 工作窃取算法 111
2.11.2 Fork/Join框架的应用 112
2.11.3 Fork/Join的核心组件 116
2.11.4 Fork/Join的任务调度流程 117
2.12 Java中的线程调度 117
2.12.1 抢占式调度 117
2.12.2 协同式调度 118
2.12.3 Java线程调度的实现:抢占式 119
2.12.4 线程让出CPU的情况 119
2.13 进程调度算法 119
2.13.1 优先调度算法 119
2.13.2 高优先权优先调度算法 120
2.13.3 时间片的轮转调度算法 121
2.14 CAS 122
2.14.1 CAS的特性:乐观锁 123
2.14.2 CAS自旋等待 123
2.15 ABA问题 124
2.16 AQS 124
2.16.1 AQS的原理 125
2.16.2 state:状态 125
2.16.3 AQS共享资源的方式:独占式和共享式 126
2.17 Java 8中的流 127
2.17.1 并行流和串行流的原理 128
2.17.2 流的常用函数 130
2.17.3 流的创建方式 131
2.17.4 流和集合的区别 132
》》》第3章 JVM 133《《《
3.1 JVM结构规范(Java SE 8) 134
3.2 多线程 135
3.3 HotSpot JVM内存模型 136
3.3.1 程序计数器:线程私有,无内存溢出问题 137
3.3.2 Java虚拟机栈:线程私有,描述Java方法的执行过程 137
3.3.3 本地方法栈:线程私有 138
3.3.4 Java堆:线程共享 139
3.3.5 元空间:方法区在HotSpot JVM中的实现,线程共享 139
3.3.6 直接内存 139
3.4 HotSpot JVM堆 140
3.4.1 新生代:Eden区、SurvivorTo区和SurvivorFrom区 140
3.4.2 老年代 141
3.5 垃圾回收的原理与算法 142
3.5.1 如何确定垃圾 142
3.5.2 如何回收垃圾 143
3.6 Java中的4种引用类型 147
3.7 分代回收算法和分区回收算法 148
3.7.1 分代回收算法 148
3.7.2 分区回收算法 148
3.8 垃圾回收器 149
3.8.1 Serial垃圾回收器:单线程,复制算法 150
3.8.2 ParNew垃圾回收器:多线程,复制算法 150
3.8.3 Parallel Scavenge垃圾回收器:多线程,复制算法 150
3.8.4 Serial Old垃圾回收器:单线程,标记整理算法 150
3.8.5 Parallel Old垃圾回收器:多线程,标记整理算法 151
3.8.6 CMS垃圾回收器 152
3.8.7 G1垃圾回收器 152
3.9 JVM的参数配置 153
3.9.1 JVM参数设置入门案例 153
3.9.2 JVM参数设置实战 154
3.10 JVM的类加载机制 156
3.10.1 JVM的类加载阶段 156
3.10.2 类加载器 158
3.10.3 双亲委派机制 159
3.10.4 OSGI 160
3.11 JVM的性能监控与分析工具 161
3.11.1 jps 161
3.11.2 jinfo 162
3.11.3 jstat 162
3.11.4 jstack 163
3.11.5 jmap 164
3.11.6 GC日志分析 166
》》》第4章 Java高并发网络编程 168《《《
4.1 网络 169
4.1.1 OSI七层网络模型 169
4.1.2 TCP/IP四层网络模型 170
4.1.3 TCP三次握手/四次挥手 171
4.1.4 HTTP的原理 176
4.1.5 CDN的原理 180
4.2 负载均衡 182
4.2.1 四层负载均衡与七层负载均衡的对比 182
4.2.2 负载均衡算法 184
4.2.3 LVS的原理及应用 186
4.2.4 Nginx反向代理与负载均衡 193
4.3 Java的网络编程模型 195
4.3.1 阻塞I/O模型 195
4.3.2 非阻塞I/O模型 195
4.3.3 多路复用I/O模型 196
4.3.4 信号驱动I/O模型 197
4.3.5 异步I/O模型 197
4.3.6 Java I/O模型与Java NIO模型 198
4.4 Reactor线程模型 204
4.4.1 Reactor单线程模型 204
4.4.2 Reactor多线程模型 205
4.4.3 Reactor主备多线程模型 206
4.5 Netty的架构 207
4.5.1 Netty的架构设计 207
4.5.2 Netty的核心组件 210
4.5.3 Netty的原理 211
4.5.4 Netty的特性 214
4.5.5 Netty实战 216
4.6 租约机制 224
4.6.1 租约机制的概念 224
4.6.2 租约机制解决的问题 225
4.6.3 租约机制的时钟同步问题 232
4.6.4 租约机制在HDFS、HBase、Eureka及Ethd中的应用 233
4.6.5 租约机制的特性 236
4.7 流控算法:固定容器算法、漏桶算法和令牌桶算法 236
4.8 gRPC简介 243
4.8.1 RPC的原理 243
4.8.2 gRPC的原理 245
4.9 高并发知识 247
4.9.1 高并发的核心指标 247
4.9.2 高并发系统的设计原则 247
4.9.3 高可用系统的设计原则 249
4.9.4 Linux操作系统优化 250
》》》第5章 Spring基础 252《《《
5.1 Spring的原理 253
5.2 Spring的特性 253
5.3 Spring的核心JAR包 254
5.4 Spring的注解 255
5.5 Spring IoC的原理 257
5.5.1 Spring IoC简介 257
5.5.2 Spring Bean的装配流程 258
5.5.3 Spring Bean的作用域 258
5.5.4 Spring Bean的生命周期 259
5.6 Spring AOP的原理 261
5.6.1 Spring AOP的核心概念 262
5.6.2 Spring AOP的两种代理方式 262
5.6.3 Spring AOP的5种通知类型 263
5.6.4 Spring AOP的代码实现 263
5.7 Spring MVC的原理 264
5.8 MyBatis的缓存 265
5.8.1 MyBatis的一级缓存原理 266
5.8.2 MyBatis的二级缓存原理 266
》》》第6章 Netflix的原理及应用 268《《《
6.1 微服务架构的优缺点及组成 269
6.2 Netflix技术栈 271
6.3 Spring Boot 273
6.4 Config 276
6.4.1 Config的原理 276
6.4.2 Config Server的定义及应用 277
6.4.3 Config Client的定义及应用 279
6.5 Eureka 280
6.5.1 Eureka的原理 281
6.5.2 Eureka的应用 283
6.6 Consul 290
6.6.1 Consul的原理 290
6.6.2 Consul的应用 293
6.7 Feign 298
6.7.1 Feign的应用 299
6.7.2 Feign的常用注解 301
6.8 Hystrix 301
6.8.1 Hystrix的特性 302
6.8.2 Hystrix的服务降级流程 304
6.8.3 Hystrix的应用 305
6.8.4 异步请求 307
6.8.5 Hystrix的常用配置 311
6.8.6 Hystrix Dashboard 313
6.9 Zuul 314
6.9.1 Zuul的原理 315
6.9.2 Zuul的应用 316
6.9.3 PreRequestFilter的定义和注入 318
6.9.4 Fallback Provider的服务容错 319
6.10 Spring Cloud的链路监控 321
6.10.1 Sleuth Zipkin 321
6.10.2 Pinpoint 327
》》》第7章 Spring Cloud Alibaba的原理及应用 333《《《
7.1 Spring Cloud Alibaba概览 334
7.2 Dubbo 334
7.2.1 角色 335
7.2.2 部署架构 336
7.2.3 流量管理 337
7.2.4 总体架构 338
7.2.5 容错模式 339
7.2.6 客户端的负载均衡策略 340
7.2.7 服务降级 341
7.2.8 Dubbo实战 342
7.3 Nacos 345
7.3.1 Nacos的基本架构 346
7.3.2 Nacos的配置中心 346
7.3.3 Nacos服务注册与发现实战 348
7.4 Sentinel 352
7.4.1 Sentinel的原理 353
7.4.2 Sentinel的应用 357
》》》第8章 数据结构 360《《《
8.1 栈及其Java实现 361
8.2 队列及其Java实现 364
8.3 链表 366
8.3.1 链表的特性 367
8.3.2 单向链表及其Java实现 367
8.3.3 双向链表及其Java实现 370
8.3.4 循环链表及其Java实现 374
8.4 跳跃表 374
8.5 哈希表 376
8.5.1 常用的构造哈希函数 377
8.5.2 哈希表的应用 377
8.6 二叉排序树 378
8.6.1 插入操作 378
8.6.2 删除操作 379
8.6.3 查找操作 381
8.6.4 用Java实现二叉排序树 381
8.7 红黑树 385
8.7.1 红黑树的特性 385
8.7.2 红黑树的左旋 386
8.7.3 红黑树的右旋 386
8.7.4 红黑树的添加 387
8.7.5 红黑树的删除 388
8.8 图 389
8.8.1 无向图和有向图 389
8.8.2 图的存储结构:邻接矩阵 390
8.8.3 图的存储结构:邻接表 392
8.8.4 图的遍历 393
8.9 位图 394
8.9.1 位图的数据结构 394
8.9.2 位图的Java实现 395
》》》第9章 Java中常用算法的原理及其Java实现 398《《《
9.1 二分查找算法 399
9.2 冒泡排序算法 400
9.3 插入排序算法 402
9.4 快速排序算法 404
9.5 希尔排序算法 406
9.6 归并排序算法 408
9.7 桶排序算法 411
9.8 基数排序算法 412
9.9 其他算法 415
9.9.1 剪枝算法 415
9.9.2 回溯算法 416
9.9.3 短路径算法 416
》》》第10章 关系数据库及分布式事务 418《《《
10.1 数据库基础 419
10.1.1 存储引擎 419
10.1.2 创建索引的原则 421
10.1.3 数据库三范式 422
10.1.4 存储过程 423
10.1.5 触发器 424
10.2 数据库的并发操作和锁 424
10.2.1 数据库的并发策略 424
10.2.2 数据库锁 425
10.2.3 数据库分库分表 427
10.3 事务 428
10.3.1 本地事务 429
10.3.2 分布式事务 430
10.3.3 CAP 431
10.3.4 两阶段提交 431
10.3.5 三阶段提交 433
10.3.6 柔性事务 434
10.4 MySQL的高可用与高并发 436
10.4.1 MySQL的主备复制 437
10.4.2 MySQL双主模式的循环复制问题 440
10.4.3 MySQL的索引 440
10.5 大表水平拆分 442
10.5.1 按照范围分表 442
10.5.2 哈希取模 442
10.5.3 一致性哈希算法 443
10.6 NWR理论 446
》》》第11章 分布式缓存的原理及应用 448《《《
11.1 分布式缓存简介 449
11.2 Ehcache的原理及应用 450
11.2.1 Ehcache的原理 450
11.2.2 Ehcache的应用 452
11.3 Redis的原理及应用 454
11.3.1 Redis的原理 454
11.3.2 Redis的应用 467
11.4 分布式缓存设计的核心问题 470
11.4.1 缓存预热 470
11.4.2 缓存更新 470
11.4.3 缓存淘汰策略 471
11.4.4 缓存雪崩 471
11.4.5 缓存穿透 471
11.4.6 缓存降级 472
11.5 分布式缓存的应用场景 473
》》》第12章 ZooKeeper、Kafka的原理及应用 475《《《
12.1 ZooKeeper的原理 476
12.1.1 ZooKeeper中的角色 476
12.1.2 ZAB协议 477
12.1.3 ZooKeeper的选举机制和流程 479
12.2 ZooKeeper的应用 480
12.2.1 ZooKeeper的数据模型 480
12.2.2 ZooKeeper的应用场景 482
12.3 Kafka的原理 484
12.3.1 Kafka的组成 484
12.3.2 Kafka的数据存储设计 486
12.3.3 生产者并发设计 488
12.3.4 消费者并发设计 490
12.3.5 Kafka控制器选主 491
12.3.6 Kafka分区Leader选主 492
12.3.7 Kafka Topic的删除流程 493
12.3.8 Kafka消息的幂等性 494
12.3.9 Kafka服务端的核心参数 494
12.3.10 Kafka生产者的核心参数 495
12.3.11 Kafka消费者的核心参数 496
》》》第13章 HBase的原理及应用 498《《《
13.1 HBase的原理 499
13.1.1 HBase的概念 499
13.1.2 行式存储和列式存储 500
13.1.3 LSM树 502
13.1.4 布隆过滤器(Bloom Filter) 505
13.1.5 HBase列式存储的数据模型 506
13.1.6 HBase的核心架构 507
13.1.7 HBase的数据读写流程 511
13.1.8 HBase Compation 514
13.1.9 HBase Region的分裂 515
13.1.10 HBase Region的合并 517
13.1.11 HBase Region的负载均衡 517
13.2 HBase的高性能集群配置 518
13.2.1 HBase的硬件配置选型 518
13.2.2 HBase的配置优化 519
13.2.3 HBase的日常运维 523
》》》第14章 Elasticsearch的原理及应用 525《《《
14.1 Elasticsearch的概念和原理 526
14.1.1 Lucene简介 526
14.1.2 Elasticsearch的特性 530
14.1.3 Elasticsearch的应用场景 530
14.1.4 Elasticsearch的数据模型 531
14.1.5 Elasticsearch的分布式架构 533
14.1.6 Elasticsearch的写操作 538
14.1.7 Elasticsearch的读操作 540
14.1.8 Elasticsearch中的Translog 541
14.1.9 Elasticsearch的段合并 543
14.1.10 Elasticsearch的集群扩容 544
14.2 Elasticsearch的配置和性能调优 545
》》》第15章 设计模式的概念及其Java实现 546《《《
15.1 设计模式简介 547
15.2 工厂模式 550
15.3 抽象工厂模式 552
15.4 单例模式 557
15.5 建造者模式 559
15.6 原型模式 563
15.7 适配器模式 566
15.8 装饰者模式 571
15.9 代理模式 573
15.10 外观模式 575
15.11 桥接模式 579
15.12 组合模式 582
15.13 享元模式 584
15.14 策略模式 587
15.15 模板方法模式 590
15.16 观察者模式 592
15.17 迭代器模式 595
15.18 责任链模式 599
15.19 命令模式 602
15.20 备忘录模式 605
15.21 状态模式 608
15.22 访问者模式 610
15.23 中介者模式 614
15.24 解释器模式 618
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价