首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Java面试题及答案.zip

后端 9.26MB 13 需要积分: 1
立即下载

资源介绍:

java进阶面试题,内涵答案。超详细
1. 目录
1. 目录 ......................................................................................................................................................... 1
2. JVM ....................................................................................................................................................... 19
2.1. 线程 ...................................................................................................................................................... 20
2.2. JVM 内存区域 ..................................................................................................................................... 21
2.2.1.
程序计数器
(
线程私有
) ................................................................................................................ 22
2.2.2.
虚拟机栈
(
线程私有
) .................................................................................................................... 22
2.2.3.
本地方法区
(
线程私有
) ................................................................................................................ 23
2.2.4.
堆(
Heap-
线程共享)
-
运行时数据区
...................................................................................... 23
2.2.5.
方法区
/
永久代(线程共享)
..................................................................................................... 23
2.3. JVM 运行时内存 ................................................................................................................................. 24
2.3.1.
新生代
.......................................................................................................................................... 24
2.3.1.1. Eden .................................................................................................................................................... 24
2.3.1.2. ServivorFrom ........................................................................................................................................... 24
2.3.1.3. ServivorTo .............................................................................................................................................. 24
2.3.1.4. MinorGC 的过程(复制->清空->互换) ....................................................................................... 24
1edenservicorFrom 复制到 ServicorTo,年龄+1 ................................................................................... 25
2:清空 edenservicorFrom ............................................................................................................................. 25
3ServicorTo ServicorFrom 互换 ................................................................................................................ 25
2.3.2.
老年代
.......................................................................................................................................... 25
2.3.3.
永久代
.......................................................................................................................................... 25
2.3.3.1. JAVA8 与元数据 ................................................................................................................................. 25
2.4. 垃圾回收与算法 .................................................................................................................................. 26
2.4.1.
如何确定垃圾
.............................................................................................................................. 26
2.4.1.1. 引用计数法............................................................................................................................................... 26
2.4.1.2. 可达性分析............................................................................................................................................... 26
2.4.2.
标记清除算法(Mark-Sweep
.............................................................................................. 27
2.4.3.
复制算法(
copying
................................................................................................................. 27
2.4.4.
标记整理算法
(Mark-Compact) .................................................................................................. 28
2.4.5.
分代收集算法
.............................................................................................................................. 29
2.4.5.1. 新生代与复制算法 .............................................................................................................................. 29
2.4.5.2. 老年代与标记复制算法 ...................................................................................................................... 29
2.5. JAVA 四中引用类型 ........................................................................................................................... 30
2.5.1.
强引用
.......................................................................................................................................... 30
2.5.2.
软引用
.......................................................................................................................................... 30
2.5.3.
弱引用
.......................................................................................................................................... 30
2.5.4.
虚引用
.......................................................................................................................................... 30
2.6. GC 分代收集算法 VS 分区收集算法 ................................................................................................ 30
2.6.1.
分代收集算法
.............................................................................................................................. 30
2.6.1.1. 在新生代-复制算法 ............................................................................................................................. 30
2.6.1.2. 在老年代-标记整理算法 ..................................................................................................................... 30
2.6.2.
分区收集算法
.............................................................................................................................. 31
2.7. GC 垃圾收集器 ................................................................................................................................... 31
2.7.1. Serial
垃圾收集器(单线程、复制算法)
................................................................................ 31
2.7.2. ParNew
垃圾收集器(
Serial+
多线程)
................................................................................... 31
2.7.3. Parallel Scavenge
收集器(多线程复制算法、高效)
.......................................................... 32
2.7.4. Serial Old
收集器(单线程标记整理算法
........................................................................... 32
2.7.5. Parallel Old
收集器(多线程标记整理算法)
......................................................................... 33
2.7.6. CMS
收集器(多线程标记清除算法
..................................................................................... 33
2.7.6.1. 初始标记 .............................................................................................................................................. 33
13/04/2018
Page 2 of 283
2.7.6.2. 并发标记 .............................................................................................................................................. 34
2.7.6.3. 重新标记 .............................................................................................................................................. 34
2.7.6.4. 并发清除 .............................................................................................................................................. 34
2.7.7. G1
收集器
.................................................................................................................................... 34
2.8. JAVA IO/NIO ....................................................................................................................................... 34
2.8.1.
阻塞
IO
模型
................................................................................................................................ 34
2.8.2.
非阻塞
IO
模型
............................................................................................................................ 35
2.8.3.
多路复用
IO
模型
........................................................................................................................ 35
2.8.4.
信号驱动
IO
模型
........................................................................................................................ 36
2.8.5.
异步
IO
模型
................................................................................................................................ 36
2.8.1. JAVA IO
.................................................................................................................................. 36
2.8.2. JAVA NIO .................................................................................................................................... 37
2.8.2.1. NIO 的缓冲区 ..................................................................................................................................... 38
2.8.2.2. NIO 的非阻塞 ..................................................................................................................................... 38
2.8.3. Channel ....................................................................................................................................... 40
2.8.4. Buffer ............................................................................................................................................ 40
2.8.5. Selector ........................................................................................................................................ 40
2.9. JVM 类加载机制 ................................................................................................................................. 41
2.9.1.1. 加载 .......................................................................................................................................................... 41
2.9.1.2. 验证 .......................................................................................................................................................... 41
2.9.1.3. 准备 .......................................................................................................................................................... 41
2.9.1.4. 解析 .......................................................................................................................................................... 41
2.9.1.5. 符号引用 .............................................................................................................................................. 42
2.9.1.6. 直接引用 .............................................................................................................................................. 42
2.9.1.7. 初始化 ...................................................................................................................................................... 42
2.9.1.8. 类构造器<client> .............................................................................................................................. 42
2.9.2.
类加载器
...................................................................................................................................... 42
2.9.2.1. 启动类加载器(Bootstrap ClassLoader) ......................................................................................... 43
2.9.2.2. 扩展类加载器(Extension ClassLoader) .......................................................................................... 43
2.9.2.3. 应用程序类加载器(Application ClassLoader) .......................................................................... 43
2.9.3.
双亲委派
...................................................................................................................................... 43
2.9.4. OSGI
动态模型系统
............................................................................................................ 44
2.9.4.1. 动态改变构造 ...................................................................................................................................... 44
2.9.4.2. 模块化编程与热插拔 .......................................................................................................................... 44
3. JAVA 集合 ............................................................................................................................................ 45
3.1. 接口继承关系和实现 .......................................................................................................................... 45
3.2. LIST ....................................................................................................................................................... 47
3.2.1. ArrayList
(数组)
....................................................................................................................... 47
3.2.2. Vector
(数组实现、线程同步)
............................................................................................... 47
3.2.3. LinkList
(链表)
......................................................................................................................... 47
3.3. SET ....................................................................................................................................................... 48
3.3.1.1. HashSetHash 表) ............................................................................................................................. 48
3.3.1.2. TreeSet(二叉树) ................................................................................................................................ 49
3.3.1.3. LinkHashSetHashSet+LinkedHashMap ................................................................................... 49
3.4. MAP ....................................................................................................................................................... 50
3.4.1. HashMap
(数组
+
链表
+
红黑树)
............................................................................................. 50
3.4.1.1. JAVA7 实现 ............................................................................................................................................. 50
3.4.1.2. JAVA8 实现 ............................................................................................................................................. 51
3.4.2. ConcurrentHashMap.................................................................................................................. 51
3.4.2.1. Segment .............................................................................................................................................. 51
3.4.2.2. 线程安全(Segment 继承 ReentrantLock 加锁) .............................................................................. 51
3.4.2.3. 并行度(默认 16 ................................................................................................................................. 52
3.4.2.4. Java8 实现 (引入了红黑树) .............................................................................................................. 52
13/04/2018
Page 3 of 283
3.4.3. HashTable
(线程安全)
........................................................................................................... 53
3.4.4. TreeMap
(可排序)
.................................................................................................................. 53
3.4.5. LinkHashMap
(记录插入顺序)
.............................................................................................. 53
4. JAVA 多线程并发 ................................................................................................................................. 54
4.1.1. JAVA
并发知识库
....................................................................................................................... 54
4.1.2. JAVA
线程实现
/
创建方式
.......................................................................................................... 54
4.1.2.1. 继承 Thread ........................................................................................................................................ 54
4.1.2.2. 实现 Runnable 接口。 ............................................................................................................................ 54
4.1.2.3. ExecutorServiceCallable<Class>Future 有返回值线程 ............................................................. 55
4.1.2.4. 基于线程池的方式 ................................................................................................................................... 56
4.1.3. 4
种线程池
................................................................................................................................... 56
4.1.3.1. newCachedThreadPool ......................................................................................................................... 57
4.1.3.2. newFixedThreadPool ............................................................................................................................. 57
4.1.3.3. newScheduledThreadPool .................................................................................................................... 58
4.1.3.4. newSingleThreadExecutor ................................................................................................................. 58
4.1.4.
线程生命周期
(
状态
) .................................................................................................................... 58
4.1.4.1. 新建状态(NEW ................................................................................................................................. 58
4.1.4.2. 就绪状态(RUNNABLE): ................................................................................................................. 59
4.1.4.3. 运行状态(RUNNING): .................................................................................................................... 59
4.1.4.4. 阻塞状态(BLOCKED): .................................................................................................................... 59
等待阻塞(o.wait->等待对列): ...................................................................................................................... 59
同步阻塞(lock->锁池) .......................................................................................................................................... 59
其他阻塞(sleep/join) ............................................................................................................................................ 59
4.1.4.5. 线程死亡(DEAD ................................................................................................................................ 59
正常结束 ................................................................................................................................................................ 59
异常结束 ................................................................................................................................................................ 59
调用 stop ............................................................................................................................................................... 59
4.1.5.
终止线程
4
种方式
...................................................................................................................... 60
4.1.5.1. 正常运行结束 ........................................................................................................................................... 60
4.1.5.2. 使用退出标志退出线程 ........................................................................................................................... 60
4.1.5.3. Interrupt 方法结束线程 ........................................................................................................................... 60
4.1.5.4. stop 方法终止线程(线程不安全) ....................................................................................................... 61
4.1.6. sleep
wait
区别
....................................................................................................................... 61
4.1.7. start
run
区别
.......................................................................................................................... 62
4.1.8. JAVA
后台线程
........................................................................................................................... 62
4.1.9. JAVA
....................................................................................................................................... 63
4.1.9.1. 乐观锁 ...................................................................................................................................................... 63
4.1.9.2. 悲观锁 ...................................................................................................................................................... 63
4.1.9.3. 自旋锁 ...................................................................................................................................................... 63
自旋锁的优缺点 .................................................................................................................................................... 63
自旋锁时间阈值(1.6 引入了适应性自旋锁) .................................................................................................. 63
自旋锁的开启 ........................................................................................................................................................ 64
4.1.9.4. Synchronized 同步锁 .............................................................................................................................. 64
Synchronized 作用范围 ....................................................................................................................................... 64
Synchronized 核心组件 ....................................................................................................................................... 64
Synchronized 实现 ............................................................................................................................................... 64
4.1.9.5. ReentrantLock ......................................................................................................................................... 66
Lock 接口的主要方法 ........................................................................................................................................... 66
非公平锁 ................................................................................................................................................................ 66
公平锁 .................................................................................................................................................................... 67
ReentrantLock synchronized ........................................................................................................................ 67
ReentrantLock 实现 ............................................................................................................................................. 67
Condition 类和 Object 类锁方法区别区别 ......................................................................................................... 68
tryLock lock lockInterruptibly 的区别 ........................................................................................................ 68
4.1.9.6. Semaphore 信号量 ................................................................................................................................. 68
实现互斥锁(计数器为 1 ................................................................................................................................. 68
代码实现 ................................................................................................................................................................ 68
Semaphore ReentrantLock ........................................................................................................................... 69
4.1.9.7. AtomicInteger .......................................................................................................................................... 69
13/04/2018
Page 4 of 283
4.1.9.8. 可重入锁(递归锁) ............................................................................................................................... 69
4.1.9.9. 公平锁与非公平锁 ................................................................................................................................... 70
公平锁(Fair ..................................................................................................................................................... 70
非公平锁(Nonfair ........................................................................................................................................... 70
4.1.9.10. ReadWriteLock 读写锁 ...................................................................................................................... 70
读锁........................................................................................................................................................................ 70
写锁........................................................................................................................................................................ 70
4.1.9.11. 共享锁和独占锁 .................................................................................................................................. 70
独占锁 .................................................................................................................................................................... 70
共享锁 .................................................................................................................................................................... 70
4.1.9.12. 重量级锁(Mutex Lock ................................................................................................................ 71
4.1.9.13. 轻量级锁 .............................................................................................................................................. 71
锁升级 .................................................................................................................................................................... 71
4.1.9.14. 偏向锁 .................................................................................................................................................. 71
4.1.9.15. 分段锁 .................................................................................................................................................. 71
4.1.9.16. 锁优化 .................................................................................................................................................. 71
减少锁持有时间 .................................................................................................................................................... 72
减小锁粒度 ............................................................................................................................................................ 72
锁分离 .................................................................................................................................................................... 72
锁粗化 .................................................................................................................................................................... 72
锁消除 .................................................................................................................................................................... 72
4.1.10.
线程基本方法
.............................................................................................................................. 72
4.1.10.1. 线程等待(wait ............................................................................................................................... 73
4.1.10.2. 线程睡眠(sleep ............................................................................................................................. 73
4.1.10.3. 线程让步(yield .............................................................................................................................. 73
4.1.10.4. 线程中断(interrupt ........................................................................................................................ 73
4.1.10.5. Join 等待其他线程终止 ...................................................................................................................... 74
4.1.10.6. 为什么要用 join()方法? .................................................................................................................... 74
4.1.10.7. 线程唤醒(notify ............................................................................................................................. 74
4.1.10.8. 其他方法: .......................................................................................................................................... 74
4.1.11.
线程上下文切换
.......................................................................................................................... 75
4.1.11.1. 进程 ...................................................................................................................................................... 75
4.1.11.2. 上下文 .................................................................................................................................................. 75
4.1.11.3. 寄存器 .................................................................................................................................................. 75
4.1.11.4. 程序计数器 .......................................................................................................................................... 75
4.1.11.5. PCB-“切换桢” ................................................................................................................................. 75
4.1.11.6. 上下文切换的活动: .......................................................................................................................... 76
4.1.11.7. 引起线程上下文切换的原因 .............................................................................................................. 76
4.1.12.
同步锁与死锁
.............................................................................................................................. 76
4.1.12.1. 同步锁 .................................................................................................................................................. 76
4.1.12.2. 死锁 ...................................................................................................................................................... 76
4.1.13.
线程池原理
.................................................................................................................................. 76
4.1.13.1. 线程复用 .............................................................................................................................................. 76
4.1.13.2. 线程池的组成 ...................................................................................................................................... 76
4.1.13.3. 拒绝策略 .............................................................................................................................................. 78
4.1.13.4. Java 线程池工作过程 ......................................................................................................................... 78
4.1.14. JAVA
阻塞队列原理
.................................................................................................................... 79
4.1.14.1. 阻塞队列的主要方法 .......................................................................................................................... 80
插入操作: ............................................................................................................................................................ 80
获取数据操作: .................................................................................................................................................... 81
4.1.14.2. Java 中的阻塞队列 ............................................................................................................................. 81
4.1.14.3. ArrayBlockingQueue(公平、非公平) ....................................................................................... 82
4.1.14.4. LinkedBlockingQueue(两个独立锁提高并发) ......................................................................... 82
4.1.14.5. PriorityBlockingQueuecompareTo 排序实现优先).............................................................. 82
4.1.14.6. DelayQueue(缓存失效、定时任务 .......................................................................................... 82
4.1.14.7. SynchronousQueue(不存储数据、可用于传递数据) .............................................................. 83
4.1.14.8. LinkedTransferQueue...................................................................................................................... 83
13/04/2018
Page 5 of 283
4.1.14.9. LinkedBlockingDeque ..................................................................................................................... 83
4.1.15. CyclicBarrier
CountDownLatch
Semaphore
的用法
........................................................ 84
4.1.15.1. CountDownLatch(线程计数器 ................................................................................................ 84
4.1.15.2. CyclicBarrier(回环栅栏-等待至 barrier 状态再全部同时执行) ............................................... 84
4.1.15.3. Semaphore(信号量-控制同时访问的线程个数) ....................................................................... 85
4.1.16. volatile
关键字的作用(变量可见性、禁止重排序
............................................................. 87
变量可见性 ............................................................................................................................................................ 87
禁止重排序 ............................................................................................................................................................ 87
sychronized 更轻量级的同步锁 ..................................................................................................................... 87
适用场景 ................................................................................................................................................................ 87
4.1.17.
如何在两个线程之间共享数据
................................................................................................... 88
将数据抽象成一个类,并将数据的操作作为这个类的方法 ............................................................................. 88
Runnable 对象作为一个类的内部类 .................................................................................................................. 89
4.1.18. ThreadLocal
作用(线程本地存储
........................................................................................ 90
ThreadLocalMap(线程的一个属性) .............................................................................................................. 90
使用场景 ................................................................................................................................................................ 91
4.1.19. synchronized
ReentrantLock
的区别
.................................................................................. 91
4.1.19.1. 两者的共同点: .................................................................................................................................. 91
4.1.19.2. 两者的不同点: .................................................................................................................................. 92
4.1.20. ConcurrentHashMap
并发
......................................................................................................... 92
4.1.20.1. 减小锁粒度 .......................................................................................................................................... 92
4.1.20.2. ConcurrentHashMap 分段锁 .......................................................................................................... 92
ConcurrentHashMap 是由 Segment 数组结构和 HashEntry 数组结构组成 ................................................. 93
4.1.21. Java
中用到的线程调度
............................................................................................................. 93
4.1.21.1. 抢占式调度: ...................................................................................................................................... 93
4.1.21.2. 协同式调度: ...................................................................................................................................... 93
4.1.21.3. JVM 的线程调度实现(抢占式调度) ............................................................................................. 94
4.1.21.4. 线程让出 cpu 的情况: ..................................................................................................................... 94
4.1.22.
进程调度算法
.............................................................................................................................. 94
4.1.22.1. 优先调度算法 ...................................................................................................................................... 94
4.1.22.2. 高优先权优先调度算法 ...................................................................................................................... 95
4.1.22.3. 基于时间片的轮转调度算法 .............................................................................................................. 96
4.1.23.
什么是
CAS
比较并交换-乐观锁机制-锁自
.................................................................. 96
4.1.23.1. 概念及特性 .......................................................................................................................................... 96
4.1.23.2. 原子包 java.util.concurrent.atomic(锁自旋) ........................................................................... 97
4.1.23.3. ABA 问题 ............................................................................................................................................. 98
4.1.24.
什么是
AQS
抽象的队列同步器
......................................................................................... 98
Exclusive 独占资源-ReentrantLock ................................................................................................................... 99
Share 共享资源-Semaphore/CountDownLatch ............................................................................................... 99
同步器的实现是 ABS 核心(state 资源状态计数) ....................................................................................... 100
ReentrantReadWriteLock 实现独占和共享两种方式 ..................................................................................... 100
5. JAVA 基础 .......................................................................................................................................... 101
5.1.1. JAVA
异常分类及处理
.............................................................................................................. 101
5.1.1.1. 概念 .................................................................................................................................................... 101
5.1.1.2. 异常分类 ............................................................................................................................................ 101
Error ..................................................................................................................................................................... 101
ExceptionRuntimeExceptionCheckedException ........................................................................... 101
5.1.1.3. 异常的处理方式 ................................................................................................................................ 102
遇到问题不进行具体处理,而是继续抛给调用者 throw,throws ......................................................... 102
try catch 捕获异常针对性处理方式 .................................................................................................................. 102
5.1.1.4. Throw throws 的区别: ............................................................................................................ 102

资源文件列表:

Java面试题及答案.zip 大约有1个文件
  1. Java面试题及答案.pdf 10.65MB
0评论
提交 加载更多评论
其他资源 毕业设计-基于SpringBoot的在线考试系统
毕业设计-基于SpringBoot的在线考试系统
毕业设计:基于springboot的调查问卷管理系统
毕业设计:基于springboot的调查问卷管理系统
windows 配置pip源
windows 配置pip源
2012年A题附件.zip
2012年A题附件.zip
624838876110726zmxy.zip
624838876110726zmxy.zip
基于Python社团推荐系统 框架 html + flask + python + mysql +基于用户的协同过滤推荐算法,基
基于Python社团推荐系统 框架 html + flask + python + mysql +基于用户的协同过滤推荐算法,基于内容的推荐算法 中国地址生成器 https://www.meiguodizhi.com/cn-address 管理员用户密码 admin 123456 普通用户用户密码 Tom 123456 模块介绍 管理员 登录模块 用户管理模块(可以创建编辑删除用户活动) 活动管理模块(可以创建编辑删除活动活动) 社团管理模块(可以创建编辑删除社团信息,审核社团,注销社团) 成员管理模块(可以管理审核成员) 密码重置模块(可以重置密码) 退出模块 普通用户 注册登录模块 推荐模块 (可以选择自己感兴趣的标签,然后系统给用户推荐活动,社团) 社团信息模块(可以创建、加入、退出社团,查看社团标签,查看社团举办的活动) 个人信息模块(可以查看用户的标签,所在的社团,参加的活动) 活动信息模块(可以加入、退出活动,查看活动描述,活动时间,举办活动的社团) 退出模块 数据库设计RecommendTeamSyste
基于Python社团推荐系统
框架 html + flask + python + mysql +基于用户的协同过滤推荐算法,基
python爬虫爬去新浪微博文章需根据账号实时调整
python爬虫爬去新浪微博文章需根据账号实时调整
易语言 - 易语言块反编译工具
可以反编译易语言的模块,不知道加密模块是否可行