![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java面试题
听友
这个作者很懒,什么都没留下…
展开
-
08- 动态代理是如何实现的?JDK Proxy 和 CGLib 有什么区别?
90% 的程序员都直接或间接的使用过动态代理,无论是日志框架或 Spring 框架,它们都包含了动态代理的实现代码。动态代理是程序在运行期间构建代理对象和动态调用代理方法的一种机制。那么,如何实现动态代理?JDK Proxy 和 CGLib 有什么区别?动态代理的常用实现方式是反射。反射机制是指程序在运行期间可以访问、检测和修改其本身状态或行为的一种能力,使用反射我们可以调用任意一个类对象,以...原创 2020-04-08 15:12:18 · 301 阅读 · 0 评论 -
07- 深克隆和浅克隆有什么区别?它的实现方式有哪些?
使用克隆可以为我们快速的构建出一个已有对象的副本,它属于 Java 基础的一部分,也是面试中常被问到的知识点之一。那么,什么是浅克隆和深克隆?如何实现克隆?浅克隆(Shadow Clone)是把原型对象中成员变量为值类型的属性都复制给克隆对象,把原型对象中成员变量为引用类型的引用地址也复制给克隆对象,也就是原型对象中如果有成员变量为引用对象,则此引用对象的地址是共享给原型对象和克隆对象的。简...原创 2020-04-07 22:38:45 · 451 阅读 · 0 评论 -
06- 谈谈你对锁的理解?如何手动模拟一个死锁?
在并发编程中有两个重要的概念:线程和锁,多线程是一把双刃剑,它在提高程序性能的同时,也带来了编码的复杂性,对开发者的要求也提高了一个档次。而锁的出现就是为了保障多线程在同时操作一组资源时的数据一致性,当我们给资源加上锁之后,只有拥有此锁的线程才能操作此资源,而其他线程只能排队等待使用此锁。那么,如何手动模拟一个死锁?谈谈你对锁的理解?死锁是指两个线程同时占用两个资源,又在彼此等待对方释放锁资源...原创 2020-04-07 11:35:15 · 506 阅读 · 0 评论 -
05- synchronized 和 ReentrantLock 的实现原理是什么?它们有什么区别?
在JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并不是为了替代 synchronized,而是在 synchronized 不适用的情况下,提供一种可以选择的高级功能。那么,synchronized 和 ReentrantLock 是如何实现的?它们有什么区别?synch...原创 2020-04-07 00:17:34 · 416 阅读 · 1 评论 -
04- 详解 ThreadPoolExecutor 的参数含义及源码执行流程
线程池是为了避免线程频繁的创建和销毁带来的性能消耗,而建立的一种池化技术,它是把已创建的线程放入 “池” 中,当有任务来临时就可以重用已有的线程,无需等待线程的创建,这样就可以有效提高程序的响应速度。但如果要说线程池的话一定离不开 ThreadPoolExecutor,在阿里巴巴的《Java开发手册》中是这样规定线程池的:线程池不允许使用 Executor 去创建,而是通过 ThreadPool...原创 2020-04-06 13:45:01 · 549 阅读 · 1 评论 -
03- 线程的状态有哪些?它是如何工作的?
线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,也因此被称为轻量级的进程。线程的状态在 JDK 1.5 之后以枚举的方式被定义在 Thread 的源码中,它总共包含以下 6 个状态:NEW,新建状态,线程被创建出来,但尚未启动时的线程状态;RUN...原创 2020-04-05 23:49:42 · 411 阅读 · 0 评论 -
02- HashMap 底层实现原理是什么?JDK 8 做了哪些优化?
在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的,JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,它的组成结构如下图:数组中的元素我们称之为哈希桶,它的定义如下:static class Node<K,V> implements Map.Entry<K,V> { final int h...原创 2020-04-05 21:33:31 · 222 阅读 · 0 评论 -
01- String的特点是什么?它有哪些重要的方法?
以主流的JDK版本1.8来说,String内部实际存储结构为char数组,源码如下:public final class String implements java.io.Serializable, Comparable<String>, CharSequence { // 用于存储字符串的值 private final char value[]; // 缓存字符串的...原创 2020-04-05 15:52:23 · 372 阅读 · 0 评论