万本电子书0元读

万本电子书0元读

顶部广告

Java面试一战到底(基础卷)电子书

本书涵盖软件发的、面试必考的数据结构和算法,JDK(Java Development Kit)中重要的、面试常见的代码分析、Java语言并发编程核心代码分析和面试技巧揭秘。本书从结构上可以分为五篇,*篇是准备发环境,介绍Java语言发中常见的工具和使用技巧

售       价:¥

纸质售价:¥85.90购买纸书

170人正在读 | 0人评论 6.2

作       者:周冠亚

出  版  社:清华大学出版社

出版时间:2020-11-01

字       数:24.3万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书立足于当前主流互联网企业对Java发人员的技术要求,分析并总结面试中常见的面试考以提升Java发人员的技术实力。通过结合作者和行业内多位阅历丰富的Java发人员、面试官和猎头的工作经验,总结出高效的面试技巧,助力Java发人员早日走出面试困惑期,收获满意的工作机会和丰厚的薪资。本书第1章讲解Java语言发环境的搭建过程。第2章和第3章讲解Java发人员面试中常见的数据结构和算法考。第4章讲解Java发人员面试中常见的Java基础相关的考。第5章和第6章讲解Java发人员面试中常见的并发编程考。第7章和第8章讲解Java发人员可能会面临的面试形式和应对面试所需的技巧。 本书内容翔实,贴近面试实践,考讲解详尽,适用于所有Java语言面试候选人、分布式系统发爱好者以及计算机相关专业的学生阅读,也可供具有一到三年Java发经验的读者夯实基础,提升发技术。<br/>【推荐语】<br/>本书涵盖软件发的、面试必考的数据结构和算法,JDK(Java Development Kit)中重要的、面试常见的代码分析、Java语言并发编程核心代码分析和面试技巧揭秘。本书从结构上可以分为五篇,*篇是准备发环境,介绍Java语言发中常见的工具和使用技巧<br/>【作者】<br/>周冠亚,上海交通大学软件工程硕士,资深Java发工程师。先后就职于飞牛网、万达网络科技有限公司、上海2345网络科技有限公司、美团评,目前就职于上海某知名电子商务公司,主要从事后端Java发工作,拥有丰富的软件发经验,熟悉Java、高并发、微服务、大数据及相关软件架构,已出版《Spring 5企业级发实战》(清华大学出版社,2018年)。<br/>
目录展开

封面页

书名页

版权页

内容简介

作者简介

前言

目录

第一篇 准备开发环境

第1章 开发环境搭建

1.1 Java语言版本构成及特性

1.2 JDK的安装

1.3 IntelliJ IDEA的安装

1.4 Apache Maven的安装

1.5 IntelliJ IDEA插件安装

1.6 小结

第二篇 数据结构和算法

第2章 数据结构

2.1 线性表

2.1.1 线性表的定义

2.1.2 线性表的类型

2.1.3 线性表的抽象类型的定义

2.1.4 线性表常见面试考点

2.2 顺序表

2.2.1 顺序表添加元素

2.2.2 顺序表查找元素

2.2.3 顺序表删除元素

2.2.4 顺序表的实现

2.2.5 顺序表常见面试考点

2.3 单链表

2.3.1 单链表添加元素

2.3.2 单链表查找元素

2.3.3 单链表删除元素

2.3.4 单链表的实现

2.3.5 单链表常见面试考点

2.4 双向链表

2.4.1 双向链表添加元素

2.4.2 双向链表查找元素

2.4.3 双向链表删除元素

2.4.4 双向循环链表

2.4.5 双向链表常见面试考点

2.5 栈

2.5.1 顺序栈

2.5.2 链式栈

2.5.3 栈常见面试考点

2.6 队列

2.6.1 顺序队列

2.6.2 循环队列

2.6.3 链式队列

2.6.4 优先队列

2.6.5 队列常见面试考点

2.7 树

2.7.1 树结构的相关概念

2.7.2 二叉树

2.7.3 斜树

2.7.4 满二叉树

2.7.5 完全二叉树

2.7.6 二叉树存储结构

2.7.7 二叉树的遍历

2.7.8 二叉排序树

2.7.9 AVL树

2.7.10 2-3-4树

2.7.11 红黑树

2.7.12 哈夫曼树

2.7.13 树常见面试考点

2.8 树和森林

2.8.1 普通树转化为二叉树

2.8.2 森林转化为二叉树

2.8.3 树的遍历

2.8.4 森林的遍历

2.8.5 树和森林常见面试考点

2.9 图

2.9.1 图的相关概念

2.9.2 图的邻接矩阵存储结构

2.9.3 图的邻接表存储结构

2.9.4 图的十字链表存储结构

2.9.5 图的遍历

2.9.6 最小生成树

2.9.7 Prim算法求解最小生成树

2.9.8 Kruskal算法求解最小生成树

2.9.9 Dijkstra算法求解最短路径

2.9.10 图的常见面试考点

第3章 算法

3.1 字符串相关算法

3.1.1 验证回文字符串

3.1.2 分割回文字符串

3.1.3 单词拆分

3.1.4 前缀树

3.1.5 有效的字母异位词

3.1.6 无重复字符的最长子串

3.1.7 电话号码的字母组合

3.1.8 串联所有单词的子串

3.1.9 字符串相关算法常见面试考点

3.2 数组相关算法

3.2.1 乘积最大连续子序列

3.2.2 求众数

3.2.3 旋转数组

3.2.4 移动零

3.2.5 求两个数组的交集

3.2.6 递增的三元子序列

3.2.7 搜索二维矩阵

3.2.8 除自身以外数组的乘积

3.2.9 数组相关算法常见面试考点

3.3 排序算法

3.3.1 冒泡排序算法

3.3.2 选择排序算法

3.3.3 插入排序算法

3.3.4 希尔排序算法

3.3.5 归并排序算法

3.3.6 快速排序算法

3.3.7 堆排序算法

3.3.8 计数排序算法

3.3.9 桶排序算法

3.3.10 基数排序算法

3.3.11 排序算法常见面试考点

第三篇 Java基础

第4章 Java中的集合框架

4.1 集合框架概述

4.2 ArrayList

4.2.1 ArrayList类的使用方式

4.2.2 ArrayList类的声明

4.2.3 ArrayList类的属性

4.2.4 ArrayList类的构造器

4.2.5 ArrayList类添加元素的方法

4.2.6 ArrayList类查询元素方法

4.2.7 ArrayList类更新元素方法

4.2.8 ArrayList类删除元素方法

4.2.9 ArrayList类批量方法

4.2.10 ArrayList类导出数组方法

4.2.11 ArrayList类排序方法

4.2.12 ArrayList类的迭代器

4.2.13 ArrayList常见面试考点

4.3 LinkedList

4.3.1 LinkedList类的使用方式

4.3.2 LinkedList类的声明

4.3.3 LinkedList类的属性

4.3.4 LinkedList类的内部类Node

4.3.5 LinkedList类的构造器

4.3.6 LinkedList类添加元素方法

4.3.7 LinkedList类查询元素的方法

4.3.8 LinkedList类更新元素方法

4.3.9 LinkedList类删除元素的方法

4.3.10 LinkedList类批量方法

4.3.11 LinkedList类的迭代器

4.3.12 LinkedList常见面试考点

4.4 Deque

4.4.1 Deque类的使用方式

4.4.2 Queue接口

4.4.3 Deque接口

4.4.4 LinkedList类的addFirst()方法

4.4.5 LinkedList类的addLast()方法

4.4.6 LinkedList类的offerFirst()方法

4.4.7 LinkedList类的offerLast()方法

4.4.8 LinkedList类的removeFirst()方法

4.4.9 LinkedList类的removeLast()方法

4.4.10 LinkedList类的pollFirst()方法

4.4.11 LinkedList类的pollLast()方法

4.4.12 LinkedList类的getFirst()方法

4.4.13 LinkedList类的getLast()方法

4.4.14 LinkedList类的peekFirst()方法

4.4.15 LinkedList类的peekLast()方法

4.4.16 LinkedList类的add()方法

4.4.17 LinkedList类的offer()方法

4.4.18 LinkedList类的remove()方法

4.4.19 LinkedList类的poll()方法

4.4.20 LinkedList类的element()方法

4.4.21 LinkedList类的peek()方法

4.4.22 LinkedList类的removeFirstOccurrence()方法

4.4.23 LinkedList类的removeLastOccurrence()方法

4.4.24 LinkedList类的push()方法

4.4.25 LinkedList类的pop()方法

4.4.26 Deque常见面试考点

4.5 PriorityQueue

4.5.1 PriorityQueue类的使用方式

4.5.2 PriorityQueue类的声明

4.5.3 PriorityQueue类的属性

4.5.4 PriorityQueue类的构造器

4.5.5 PriorityQueue类的add()方法

4.5.6 PriorityQueue类的offer()方法

4.5.7 PriorityQueue类的poll()方法

4.5.8 PriorityQueue类的peek()方法

4.5.9 PriorityQueue常见面试考点

4.6 HashMap

4.6.1 HashMap类的使用方式

4.6.2 Entry接口

4.6.3 Map接口

4.6.4 HashMap类的声明

4.6.5 HashMap类的属性

4.6.6 HashMap静态内部类Node

4.6.7 HashMap静态内部类TreeNode

4.6.8 HashMap的存储结构

4.6.9 HashMap的类构造器

4.6.10 HashMap类的put()方法

4.6.11 HashMap类的hash()方法

4.6.12 HashMap类的putVal()方法

4.6.13 HashMap类的resize()方法

4.6.14 HashMap类的putTreeVal()方法

4.6.15 HashMap类的treeifyBin()方法

4.6.16 HashMap类的remove()方法

4.6.17 HashMap类的get()方法

4.6.18 HashMap常见面试考点

4.7 LinkedHashMap

4.7.1 LinkedHashMap类的使用方式

4.7.2 LinkedHashMap类的声明

4.7.3 LinkedHashMap静态内部类Entry

4.7.4 LinkedHashMap类的属性

4.7.5 LinkedHashMap类的构造器

4.7.6 LinkedHashMap类的put()方法

4.7.7 LinkedHashMap类的get()方法

4.7.8 LinkedHashMap类的getOrDefault()方法

4.7.9 LinkedHashMap类的containsValue()方法

4.7.10 LinkedHashMap类的removeEldestEntry()方法

4.7.11 LinkedHashMap类常见面试考点

4.8 TreeMap

4.8.1 TreeMap类的使用方式

4.8.2 TreeMap类的声明

4.8.3 TreeMap静态内部类Entry

4.8.4 TreeMap类的属性

4.8.5 TreeMap类的构造器

4.8.6 TreeMap类的putAll()方法

4.8.7 TreeMap类的buildFromSorted()方法

4.8.8 TreeMap类的put()方法

4.8.9 TreeMap类的get()方法

4.8.10 TreeMap类的remove()方法

4.8.11 TreeMap类的firstKey()方法

4.8.12 TreeMap类的lastKey()方法

4.8.13 TreeMap类常见面试考点

4.9 HashSet

4.9.1 HashSet类的使用方式

4.9.2 HashSet类的声明

4.9.3 HashSet类的属性

4.9.4 HashSet类的构造器

4.9.5 HashSet类的add()方法

4.9.6 HashSet类的remove()方法

4.9.7 HashSet类的contains()方法

4.9.8 HashSet类的iterator()方法

4.9.9 HashSet类常见面试考点

4.10 LinkedHashSet

4.10.1 LinkedHashSet类的使用方式

4.10.2 LinkedHashSet类的声明

4.10.3 LinkedHashSet类构造器

4.10.4 LinkedHashSet类常见面试考点

4.11 TreeSet

4.11.1 TreeSet类的使用方式

4.11.2 TreeSet类的声明

4.11.3 TreeSet类的属性

4.11.4 TreeSet类的构造器

4.11.5 TreeSet类的add()方法

4.11.6 TreeSet类的first()方法

4.11.7 TreeSet类的last()方法

4.11.8 TreeSet类的descendingIterator()方法

4.11.9 TreeSet类常见面试考点

第四篇 Java并发编程

第5章 线程基础

5.1 线程的概念

5.1.1 进程与线程的关系

5.1.2 线程的概念常见面试考点

5.2 线程的创建

5.2.1 继承Thread类

5.2.2 实现Runnable接口

5.2.3 实现Callable接口

5.2.4 线程池

5.2.5 线程创建的常见面试考点

5.3 线程的生命周期

5.3.1 初始状态

5.3.2 就绪状态

5.3.3 运行中状态

5.3.4 阻塞状态

5.3.5 等待状态

5.3.6 超时等待状态

5.3.7 终止状态

5.3.8 线程的生命周期常见面试考点

5.4 线程中断

5.4.1 线程中断的概念

5.4.2 线程中断的响应

5.4.3 线程中断的操作

5.4.4 线程中断常见面试考点

5.5 线程的优先级和守护线程

5.5.1 线程优先级的特性

5.5.2 守护线程

5.5.3 线程优先级和守护线程常见面试考点

5.6 线程常用方法

5.6.1 sleep()方法

5.6.2 wait()方法

5.6.3 notify()/notifyAll()方法

5.6.4 yield()方法

5.6.5 join()方法

5.6.6 线程常用方法常见面试考点

5.7 线程组

5.7.1 线程组的概念

5.7.2 一级关联

5.7.3 多级关联

5.7.4 线程组自动归属

5.7.5 批量管理线程

5.7.6 线程组常见面试考点

5.8 Thread类代码解析

5.8.1 Thread类常用属性

5.8.2 Thread类的构造器

5.8.3 Thread类的start()方法

5.8.4 Thread类的run()方法

5.8.5 Thread类的exit()方法

5.8.6 Thread类的interrupt()方法

5.8.7 Thread类的interrupted()方法

5.8.8 Thread类的isInterrupted()方法

5.8.9 Thread类的join()方法

5.8.10 Thread类的sleep()方法

5.8.11 Thread类常见面试考点

5.9 volatile

5.9.1 硬件系统架构

5.9.2 缓存一致性问题

5.9.3 缓存一致性协议

5.9.4 as-if-serial

5.9.5 程序顺序规则

5.9.6 指令重排序

5.9.7 volatile内存语义

5.9.8 volatile常见面试考点

5.10 synchronized

5.10.1 synchronized的作用

5.10.2 synchronized的使用方式

5.10.3 synchronized死锁问题

5.10.4 synchronized的特性

5.10.5 synchronized的实现原理

5.10.6 synchronized的存储结构

5.10.7 自旋锁

5.10.8 锁消除

5.10.9 锁粗化

5.10.10 偏向锁

5.10.11 轻量级锁

5.10.12 重量级锁

5.10.13 synchronized实现线程通信

5.10.14 synchronized常见面试考点

5.11 ThreadLocal

5.11.1 ThreadLocal的使用方式

5.11.2 ThreadLocal原理分析

5.11.3 静态内部类ThreadLocalMap

5.11.4 ThreadLocal类的set()方法

5.11.5 ThreadLocal类的get()方法

5.11.6 ThreadLocal与内存泄漏

5.11.7 ThreadLocal常见面试考点

第6章 并发编程工具

6.1 AbstractQueuedSynchronizer

6.1.1 AbstractOwnableSynchronizer代码分析

6.1.2 AbstractQueuedSynchronizer内部类

6.1.3 AbstractQueuedSynchronizer的属性

6.1.4 AbstractQueuedSynchronizer独占模式

6.1.5 AbstractQueuedSynchronizer共享模式

6.1.6 AbstractQueuedSynchronizer条件模式

6.1.7 AbstractQueuedSynchronizer常见面试考点

6.2 Lock

6.2.1 Lock接口加锁方法

6.2.2 Lock接口解锁方法

6.2.3 Lock接口的newCondition()方法

6.3 ReentrantLock

6.3.1 ReentrantLock的使用方式

6.3.2 ReentrantLock类图

6.3.3 ReentrantLock内部类Sync代码解析

6.3.4 ReentrantLock内部类FairSync代码解析

6.3.5 ReentrantLock内部类NonfairSync代码解析

6.3.6 ReentrantLock构造器代码解析

6.3.7 ReentrantLock公平锁代码解析

6.3.8 ReentrantLock非公平锁代码解析

6.3.9 公平锁与非公平锁比较

6.3.10 ReentrantLock常见面试考点

6.4 Semaphore

6.4.1 Semaphore的使用方式

6.4.2 Semaphore类图

6.4.3 Semaphore内部类Sync代码解析

6.4.4 Semaphore内部类FairSync代码解析

6.4.5 Semaphore内部类NonfairSync代码解析

6.4.6 Semaphore构造器代码解析

6.4.7 Semaphore公平模式代码解析

6.4.8 Semaphore非公平模式代码解析

6.4.9 Semaphore常见面试考点

6.5 CountDownLatch

6.5.1 CountDownLatch的使用方式

6.5.2 CountDownLatch类图

6.5.3 CountDownLatch内部类Sync代码解析

6.5.4 CountDownLatch构造器代码解析

6.5.5 await()方法代码解析

6.5.6 await(long timeout, TimeUnit unit)方法代码解析

6.5.7 countDown()方法代码解析

6.5.8 CountDownLatch常见面试考点

6.6 CyclicBarrier

6.6.1 CyclicBarrier的使用方式

6.6.2 CyclicBarrier的属性

6.6.3 CyclicBarrier内部类Generation代码解析

6.6.4 CyclicBarrier构造器代码解析

6.6.5 await()方法代码解析

6.6.6 reset()方法代码解析

6.6.7 CyclicBarrier常见面试考点

6.7 ReentrantReadWriteLock

6.7.1 ReentrantReadWriteLock的使用方式

6.7.2 ReentrantReadWriteLock类图

6.7.3 ReentrantReadWriteLock的属性

6.7.4 ReentrantReadWriteLock构造器代码解析

6.7.5 ReentrantReadWriteLock内部类Sync代码解析

6.7.6 ReentrantReadWriteLock内部类FairSync代码解析

6.7.7 ReentrantReadWriteLock内部类NonfairSync代码解析

6.7.8 ReentrantReadWriteLock内部类ReadLock代码解析

6.7.9 ReentrantReadWriteLock内部类WriteLock代码解析

6.7.10 ReentrantReadWriteLock写锁代码解析

6.7.11 ReentrantReadWriteLock读锁代码解析

6.7.12 ReentrantReadWriteLock常见面试考点

6.8 ArrayBlockingQueue

6.8.1 ArrayBlockingQueue的使用方式

6.8.2 ArrayBlockingQueue的属性

6.8.3 ArrayBlockingQueue构造器代码解析

6.8.4 ArrayBlockingQueue入队方法代码解析

6.8.5 ArrayBlockingQueue出队方法代码解析

6.8.6 ArrayBlockingQueue常见面试考点

6.9 LinkedBlockingQueue

6.9.1 LinkedBlockingQueue的使用方式

6.9.2 LinkedBlockingQueue内部类Node代码解析

6.9.3 LinkedBlockingQueue的属性

6.9.4 LinkedBlockingQueue构造器代码解析

6.9.5 LinkedBlockingQueue入队方法代码解析

6.9.6 LinkedBlockingQueue出队方法代码解析

6.9.7 LinkedBlockingQueue常见面试考点

6.10 DelayQueue

6.10.1 DelayQueue的使用方式

6.10.2 DelayQueue的声明

6.10.3 DelayQueue的属性

6.10.4 DelayQueue构造器代码解析

6.10.5 DelayQueue入队方法代码解析

6.10.6 DelayQueue出队方法代码解析

6.10.7 DelayQueue工作原理解析

6.10.8 DelayQueue常见面试考点

6.11 LinkedBlockingDeque

6.11.1 LinkedBlockingDeque的使用方式

6.11.2 LinkedBlockingDeque的声明

6.11.3 LinkedBlockingDeque内部类Node代码解析

6.11.4 LinkedBlockingDeque的属性

6.11.5 LinkedBlockingDeque构造器代码解析

6.11.6 LinkedBlockingDeque入队方法代码解析

6.11.7 LinkedBlockingDeque出队方法代码解析

6.11.8 LinkedBlockingDeque常见面试考点

6.12 CopyOnWriteArrayList

6.12.1 CopyOnWriteArrayList的使用方式

6.12.2 CopyOnWriteArrayList的属性

6.12.3 CopyOnWriteArrayList构造器代码解析

6.12.4 CopyOnWriteArrayList添加元素方法代码解析

6.12.5 CopyOnWriteArrayList更新元素方法代码解析

6.12.6 CopyOnWriteArrayList删除元素方法代码解析

6.12.7 CopyOnWriteArrayList查找元素方法代码解析

6.12.8 CopyOnWriteArrayList工作原理解析

6.12.9 CopyOnWriteArrayList常见面试考点

6.13 ConcurrentHashMap

6.13.1 ConcurrentHashMap的使用方式

6.13.2 ConcurrentHashMap类的属性

6.13.3 ConcurrentHashMap内部类Node代码解析

6.13.4 ConcurrentHashMap内部类TreeNode代码解析

6.13.5 ConcurrentHashMap内部类TreeBin代码解析

6.13.6 ConcurrentHashMap内部类ForwardingNode代码解析

6.13.7 ConcurrentHashMap类put()方法代码解析

6.13.8 ConcurrentHashMap类putIfAbsent()方法代码解析

6.13.9 ConcurrentHashMap类putVal()方法代码解析

6.13.10 ConcurrentHashMap类initTable()方法代码解析

6.13.11 ConcurrentHashMap类helpTransfer()方法代码解析

6.13.12 ConcurrentHashMap类treeifyBin()方法代码解析

6.13.13 ConcurrentHashMap类tryPresize()方法代码解析

6.13.14 ConcurrentHashMap类transfer()方法代码解析

6.13.15 ConcurrentHashMap类get()方法代码解析

6.13.16 ConcurrentHashMap常见面试考点

6.14 Unsafe

6.14.1 Unsafe单例设计模式

6.14.2 Unsafe类内存操作相关方法

6.14.3 Unsafe类CAS相关方法

6.14.4 Unsafe类线程调度相关方法

6.14.5 Unsafe类Class相关方法

6.14.6 Unsafe类对象相关方法

6.14.7 Unsafe类数组相关方法

6.14.8 Unsafe类volatile相关方法

6.14.9 Unsafe类内存屏障相关方法

6.14.10 Unsafe类常见面试考点

6.15 LockSupport

6.15.1 LockSupport的使用方式

6.15.2 LockSupport构造器代码解析

6.15.3 LockSupport静态代码块

6.15.4 LockSupport类阻塞方法代码解析

6.15.5 LockSupport类唤醒方法代码解析

6.15.6 LockSupport常见面试考点

6.16 原子类

6.16.1 AtomicInteger的使用方式

6.16.2 AtomicInteger类的属性

6.16.3 AtomicInteger构造器代码解析

6.16.4 AtomicInteger常用方法代码解析

6.16.5 ABA问题

6.16.6 AtomicStampedReference代码解析

6.16.7 原子类常见面试考点

6.17 线程池

6.17.1 ThreadPoolExecutor的使用方式

6.17.2 ThreadPoolExecutor构造器代码解析

6.17.3 ThreadPoolExecutor工作流程

6.17.4 ThreadPoolExecutor内部类Worker代码解析

6.17.5 ThreadPoolExecutor的状态

6.17.6 ThreadPoolExecutor提交任务代码解析

6.17.7 ThreadPoolExecutor类execute()方法代码解析

6.17.8 ThreadPoolExecutor类addWorker()方法代码解析

6.17.9 ThreadPoolExecutor类runWorker()方法代码解析

6.17.10 ThreadPoolExecutor类getTask()方法代码解析

6.17.11 ThreadPoolExecutor类processWorkerExit()方法代码解析

6.17.12 ThreadPoolExecutor类shutdown()方法代码解析

6.17.13 ThreadPoolExecutor类shutdownNow()方法代码解析

6.17.14 线程池常见面试考点

第五篇 面试与技巧

第7章 剖析面试

7.1 什么是面试

7.1.1 让面试官记住你

7.1.2 让面试官信任你

7.2 面试环节分析

7.2.1 笔试

7.2.2 语音面试

7.2.3 视频面试

7.2.4 现场面试

7.2.5 压力面试

7.2.6 背景调查

7.2.7 在线考试

第8章 面试技巧

8.1 第一类候选人

8.2 第二类候选人

8.3 第三类候选人

8.4 第四类候选人

参考文献

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部