全新正版 Java面试一战到底(基础卷) 周冠亚|责编:王金柱 9787302564362 清华大学
本店所售图书,保证正版新书,有个别图片和实书封面不一样,以实书封面为准,最快当天,一般隔天发货。支持7天无理由退换货.开票联系客服
¥
87.59
4.9折
¥
179
全新
仅1件
作者周冠亚|责编:王金柱
出版社清华大学
ISBN9787302564362
出版时间2020-11
装帧其他
开本其他
定价179元
货号30997232
上书时间2024-09-08
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
周冠亚,上海交通大学软件工程硕士,先后就职于万达网络科技有限公司、上海2345网络科技有限公司、美团点评,主要从事后端Java开发工作,拥有丰富的软件开发经验,熟悉Java、高并发、微服务、大数据及相关软件架构。
目录
目 录
第一篇 准备开发环境
第1章 开发环境搭建1
1.1 Java语言版本构成及特性1
1.2 JDK的安装3
1.3 IntelliJ IDEA的安装4
1.4 Apache Maven的安装5
1.5 IntelliJ IDEA插件安装5
1.6 小结6
第二篇 数据结构和算法
第2章 数据结构7
2.1 线性表8
2.1.1 线性表的定义8
2.1.2 线性表的类型8
2.1.3 线性表的抽象类型的定义8
2.1.4 线性表常见面试考点9
2.2 顺序表10
2.2.1 顺序表添加元素10
2.2.2 顺序表查找元素10
2.2.3 顺序表删除元素11
2.2.4 顺序表的实现11
2.2.5 顺序表常见面试考点15
2.3 单链表15
2.3.1 单链表添加元素16
2.3.2 单链表查找元素16
2.3.3 单链表删除元素17
2.3.4 单链表的实现17
2.3.5 单链表常见面试考点23
2.4 双向链表23
2.4.1 双向链表添加元素24
2.4.2 双向链表查找元素24
2.4.3 双向链表删除元素25
2.4.4 双向循环链表25
2.4.5 双向链表常见面试考点26
2.5 栈26
2.5.1 顺序栈27
2.5.2 链式栈31
2.5.3 栈常见面试考点34
2.6 队列34
2.6.1 顺序队列35
2.6.2 循环队列39
2.6.3 链式队列43
2.6.4 优先队列46
2.6.5 队列常见面试考点50
2.7 树50
2.7.1 树结构的相关概念51
2.7.2 二叉树52
2.7.3 斜树52
2.7.4 满二叉树53
2.7.5 完全二叉树53
2.7.6 二叉树存储结构54
2.7.7 二叉树的遍历56
2.7.8 二叉排序树56
2.7.9 AVL树64
2.7.10 2-3-4树79
2.7.11 红黑树86
2.7.12 哈夫曼树106
2.7.13 树常见面试考点114
2.8 树和森林115
2.8.1 普通树转化为二叉树115
2.8.2 森林转化为二叉树116
2.8.3 树的遍历117
2.8.4 森林的遍历117
2.8.5 树和森林常见面试考点117
2.9 图118
2.9.1 图的相关概念118
2.9.2 图的邻接矩阵存储结构119
2.9.3 图的邻接表存储结构122
2.9.4 图的十字链表存储结构126
2.9.5 图的遍历132
2.9.6 最小生成树136
2.9.7 Prim算法求解最小生成树137
2.9.8 Kruskal算法求解最小生成树146
2.9.9 Dijkstra算法求解最短路径152
2.9.10 图的常见面试考点159
第3章 算法160
3.1 字符串相关算法160
3.1.1 验证回文字符串160
3.1.2 分割回文字符串162
3.1.3 单词拆分164
3.1.4 前缀树167
3.1.5 有效的字母异位词170
3.1.6 无重复字符的最长子串172
3.1.7 电话号码的字母组合174
3.1.8 串联所有单词的子串176
3.1.9 字符串相关算法常见面试考点179
3.2 数组相关算法179
3.2.1 乘积最大连续子序列179
3.2.2 求众数181
3.2.3 旋转数组183
3.2.4 移动零186
3.2.5 求两个数组的交集187
3.2.6 递增的三元子序列189
3.2.7 搜索二维矩阵191
3.2.8 除自身以外数组的乘积194
3.2.9 数组相关算法常见面试考点197
3.3 排序算法197
3.3.1 冒泡排序算法197
3.3.2 选择排序算法199
3.3.3 插入排序算法201
3.3.4 希尔排序算法203
3.3.5 归并排序算法206
3.3.6 快速排序算法208
3.3.7 堆排序算法213
3.3.8 计数排序算法219
3.3.9 桶排序算法221
3.3.10 基数排序算法224
3.3.11 排序算法常见面试考点227
第三篇 Java基础
第4章 Java中的集合框架229
4.1 集合框架概述229
4.2 ArrayList230
4.2.1 ArrayList类的使用方式230
4.2.2 ArrayList类的声明232
4.2.3 ArrayList类的属性233
4.2.4 ArrayList类的构造器233
4.2.5 ArrayList类添加元素的方法234
4.2.6 ArrayList类查询元素方法238
4.2.7 ArrayList类更新元素方法240
4.2.8 ArrayList类删除元素方法240
4.2.9 ArrayList类批量方法242
4.2.10 ArrayList类导出数组方法244
4.2.11 ArrayList类排序方法245
4.2.12 ArrayList类的迭代器247
4.2.13 ArrayList常见面试考点253
4.3 LinkedList253
4.3.1 LinkedList类的使用方式253
4.3.2 LinkedList类的声明255
4.3.3 LinkedList类的属性256
4.3.4 LinkedList类的内部类Node256
4.3.5 LinkedList类的构造器257
4.3.6 LinkedList类添加元素方法257
4.3.7 LinkedList类查询元素的方法260
4.3.8 LinkedList类更新元素方法261
4.3.9 LinkedList类删除元素的方法262
4.3.10 LinkedList类批量方法263
4.3.11 LinkedList类的迭代器265
4.3.12 LinkedList常见面试考点269
4.4 Deque270
4.4.1 Deque类的使用方式270
4.4.2 Queue接口271
4.4.3 Deque接口272
4.4.4 LinkedList类的addFirst()方法276
4.4.5 LinkedList类的addLast()方法276
4.4.6 LinkedList类的offerFirst()方法277
4.4.7 LinkedList类的offerLast()方法277
4.4.8 LinkedList类的removeFirst()方法278
4.4.9 LinkedList类的removeLast()方法279
4.4.10 LinkedList类的pollFirst()方法280
4.4.11 LinkedList类的pollLast()方法280
4.4.12 LinkedList类的getFirst()方法280
4.4.13 LinkedList类的getLast()方法281
4.4.14 LinkedList类的peekFirst()方法281
4.4.15 LinkedList类的peekLast()方法281
4.4.16 LinkedList类的add()方法282
4.4.17 LinkedList类的offer()方法282
4.4.18 LinkedList类的remove()方法282
4.4.19 LinkedList类的poll()方法283
4.4.20 LinkedList类的element()方法283
4.4.21 LinkedList类的peek()方法283
4.4.22 LinkedList类的removeFirstOccurrence()方法284
4.4.23 LinkedList类的removeLastOccurrence()方法284
4.4.24 LinkedList类的push()方法285
4.4.25 LinkedList类的pop()方法286
4.4.26 Deque常见面试考点286
4.5 PriorityQueue286
4.5.1 PriorityQueue类的使用方式286
4.5.2 PriorityQueue类的声明287
4.5.3 PriorityQueue类的属性288
4.5.4 PriorityQueue类的构造器289
4.5.5 PriorityQueue类的add()方法294
4.5.6 PriorityQueue类的offer()方法294
4.5.7 PriorityQueue类的poll()方法297
4.5.8 PriorityQueue类的peek()方法297
4.5.9 PriorityQueue常见面试考点298
4.6 HashMap298
4.6.1 HashMap类的使用方式298
4.6.2 Entry接口300
4.6.3 Map接口301
4.6.4 HashMap类的声明307
4.6.5 HashMap类的属性307
4.6.6 HashMap静态内部类Node309
4.6.7 HashMap静态内部类TreeNode311
4.6.8 HashMap的存储结构312
4.6.9 HashMap的类构造器312
4.6.10 HashMap类的put()方法313
4.6.11 HashMap类的hash()方法314
4.6.12 HashMap类的putVal()方法314
4.6.13 HashMap类的resize()方法318
4.6.14 HashMap类的putTreeVal()方法323
4.6.15 HashMap类的treeifyBin()方法324
4.6.16 HashMap类的remove()方法330
4.6.17 HashMap类的get()方法334
4.6.18 HashMap常见面试考点335
4.7 LinkedHashMap335
4.7.1 LinkedHashMap类的使用方式336
4.7.2 LinkedHashMap类的声明339
4.7.3 LinkedHashMap静态内部类Entry339
4.7.4 LinkedHashMap类的属性339
4.7.5 LinkedHashMap类的构造器340
4.7.6 LinkedHashMap类的put()方法341
4.7.7 LinkedHashMap类的get()方法345
4.7.8 LinkedHashMap类的getOrDefault()方法345
4.7.9 LinkedHashMap类的containsValue()方法346
4.7.10 LinkedHashMap类的removeEldestEntry()方法346
4.7.11 LinkedHashMap类常见面试考点346
4.8 TreeMap346
4.8.1 TreeMap类的使用方式347
4.8.2 TreeMap类的声明348
4.8.3 TreeMap静态内部类Entry352
4.8.4 TreeMap类的属性353
4.8.5 TreeMap类的构造器354
4.8.6 TreeMap类的putAll()方法355
4.8.7 TreeMap类的buildFromSorted()方法355
4.8.8 TreeMap类的put()方法358
4.8.9 TreeMap类的get()方法361
4.8.10 TreeMap类的remove()方法362
4.8.11 TreeMap类的firstKey()方法365
4.8.12 TreeMap类的lastKey()方法365
4.8.13 TreeMap类常见面试考点366
4.9 HashSet366
4.9.1 HashSet类的使用方式366
4.9.2 HashSet类的声明367
4.9.3 HashSet类的属性367
4.9.4 HashSet类的构造器368
4.9.5 HashSet类的add()方法369
4.9.6 HashSet类的remove()方法369
4.9.7 HashSet类的contains()方法369
4.9.8 HashSet类的iterator()方法370
4.9.9 HashSet类常见面试考点372
4.10 LinkedHashSet372
4.10.1 LinkedHashSet类的使用方式372
4.10.2 LinkedHashSet类的声明373
4.10.3 LinkedHashSet类构造器373
4.10.4 LinkedHashSet类常见面试考点374
4.11 TreeSet374
4.11.1 TreeSet类的使用方式375
4.11.2 TreeSet类的声明377
4.11.3 TreeSet类的属性379
4.11.4 TreeSet类的构造器379
4.11.5 TreeSet类的add()方法380
4.11.6 TreeSet类的first()方法381
4.11.7 TreeSet类的last()方法382
4.11.8 TreeSet类的descendingIterator()方法382
4.11.9 TreeSet类常见面试考点385
第四篇 Java并发编程
第5章 线程基础387
5.1 线程的概念387
5.1.1 进程与线程的关系387
5.1.2 线程的概念常见面试考点388
5.2 线程的创建388
5.2.1 继承Thread类388
5.2.2 实现Runnable接口389
5.2.3 实现Callable接口390
5.2.4 线程池391
5.2.5 线程创建的常见面试考点394
5.3 线程的生命周期394
5.3.1 初始状态395
5.3.2 就绪状态396
5.3.3 运行中状态396
5.3.4 阻塞状态396
5.3.5 等待状态396
5.3.6 超时等待状态396
5.3.7 终止状态396
5.3.8 线程的生命周期常见面试考点397
5.4 线程中断397
5.4.1 线程中断的概念397
5.4.2 线程中断的响应397
5.4.3 线程中断的操作397
5.4.4 线程中断常见面试考点401
5.5 线程的优先级和守护线程401
5.5.1 线程优先级的特性402
5.5.2 守护线程406
5.5.3 线程优先级和守护线程常见面试考点408
5.6 线程常用方法408
5.6.1 sleep()方法408
5.6.2 wait()方法410
5.6.3 notify()/notifyAll()方法411
5.6.4 yield()方法413
5.6.5 join()方法415
5.6.6 线程常用方法常见面试考点416
5.7 线程组416
5.7.1 线程组的概念416
5.7.2 一级关联417
5.7.3 多级关联419
5.7.4 线程组自动归属420
5.7.5 批量管理线程421
5.7.6 线程组常见面试考点422
5.8 Thread类代码解析423
5.8.1 Thread类常用属性423
5.8.2 Thread类的构造器424
5.8.3 Thread类的start()方法427
5.8.4 Thread类的run()方法431
5.8.5 Thread类的exit()方法431
5.8.6 Thread类的interrupt()方法431
5.8.7 Thread类的interrupted()方法434
5.8.8 Thread类的isInterrupted()方法435
5.8.9 Thread类的join()方法435
5.8.10 Thread类的sleep()方法438
5.8.11 Thread类常见面试考点441
5.9 volatile442
5.9.1 硬件系统架构442
5.9.2 缓存一致性问题443
5.9.3 缓存一致性协议444
5.9.4 as-if-serial445
5.9.5 程序顺序规则446
5.9.6 指令重排序447
5.9.7 volatile内存语义450
5.9.8 volatile常见面试考点451
5.10 synchronized451
5.10.1 synchronized的作用451
5.10.2 synchronized的使用方式452
5.10.3 synchronized死锁问题462
5.10.4 synchronized的特性464
5.10.5 synchronized的实现原理464
5.10.6 synchronized的存储结构469
5.10.7 自旋锁473
5.10.8 锁消除474
5.10.9 锁粗化475
5.10.10 偏向锁475
5.10.11 轻量级锁478
5.10.12 重量级锁480
5.10.13 synchronized实现线程通信481
5.10.14 synchronized常见面试考点488
5.11 ThreadLocal488
5.11.1 ThreadLocal的使用方式488
5.11.2 ThreadLocal原理分析490
5.11.3 静态内部类ThreadLocalMap492
5.11.4 ThreadLocal类的set()方法499
5.11.5 ThreadLocal类的get()方法499
5.11.6 ThreadLocal与内存泄漏500
5.11.7 ThreadLocal常见面试考点501
第6章 并发编程工具502
6.1 AbstractQueuedSynchronizer502
6.1.1 AbstractOwnableSynchronizer代码分析502
6.1.2 AbstractQueuedSynchronizer内部类503
6.1.3 AbstractQueuedSynchronizer的属性506
6.1.4 AbstractQueuedSynchronizer独占模式506
6.1.5 AbstractQueuedSynchronizer共享模式516
6.1.6 AbstractQueuedSynchronizer条件模式522
6.1.7 AbstractQueuedSynchronizer常见面试考点546
6.2 Lock547
6.2.1 Lock接口加锁方法547
6.2.2 Lock接口解锁方法549
6.2.3 Lock接口的newCondition()方法549
6.3 ReentrantLock549
6.3.1 ReentrantLock的使用方式549
6.3.2 ReentrantLock类图551
6.3.3 ReentrantLock内部类Sync代码解析552
6.3.4 ReentrantLock内部类FairSync代码解析554
6.3.5 ReentrantLock内
— 没有更多了 —
以下为对购买帮助不大的评价