自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 问答 (1)
  • 收藏
  • 关注

原创 50. 怎么防止死锁?

死锁的四个必要条件:互斥条件:线程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某资源仅为一个线程所占有。此时若有其他线程请求该资源,则请求线程只能等待。不剥夺条件:线程所获得的资源在未使用完毕之前,不能被其他线程强行夺走,即只能由获得该资源的线程自己主动释放。请求和保持条件:线程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他线程占有,此时请求线程被阻塞,但对自己已获得的资源保持不放。循环等待条件:存在一种线程资源的循环等待链,链中每一个线程已获得的资源同时被链中下

2021-09-12 23:38:43 231

原创 49. 什么是死锁?

线程死锁是指由于两个或者多个线程互相持有所需要的资源,导致这些线程一直处于等待其他线程释放资源的状态,无法继续执行,如果线程都不主动释放所占有的资源,将产生死锁通俗点说:死锁就是两个线程同时占用两个资源,但又在彼此等待对方释放锁。最后附上面试题汇总及答案([持续更新中](https://blog.csdn.net/m0_46420991/article/details/119797037))...

2021-09-12 23:35:49 171

原创 九、设计模式

文章目录九、设计模式1. 说一下你熟悉的设计模式?2. 简单工厂和抽象工厂有什么区别?3. 观察者设计模式的好处?4. 什么是单例模式?用Java写一个单例类。5. 描述适配器设计模式6. 描述代理设计模式九、设计模式1. 说一下你熟悉的设计模式?单例模式:Spring框架中默认将bean设置为单例的,可以极大地提高系统的性能工厂模式:Spring框架中的工厂模式,就是自己不再主动创建对象,而是让工厂来帮我们创建对象。代理模式:Spring MVC使用的AOP面向切面编程,就是典型的代理模式的

2021-09-08 17:08:09 242

原创 48. 多线程锁的升级原理是什么?

JVM优化synchronized的运行机制,当JVM检测到不同的竞争状态时,就会根据需要自动切换到合适的锁,这种切换就是锁的升级。升级是不可逆的,也就是说只能从低到高,也就是偏向–>轻量级–>重量级,不能够降级最后附上面试题汇总及答案(持续更新中)...

2021-09-08 17:01:08 317

原创 47 . 在 java 程序中怎么保证多线程的运行安全?

线程的安全性问题体现在:原子性:一个或者多个操作在 CPU 执行的过程中不被中断的特性可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到有序性:程序执行的顺序按照代码的先后顺序执行解决办法:JDK Atomic开头的原子类、synchronized、LOCK,可以解决原子性问题synchronized、volatile、LOCK,可以解决可见性问题Happens-Before 规则可以解决有序性问题最后附上面试题汇总及答案(持续更新中)...

2021-09-08 16:52:47 234

原创 46. 线程池中 submit()和 execute()方法有什么区别?

execute() 参数 Runnable ;submit() 参数 (Runnable) 或 (Runnable 和 结果 T) 或 (Callable)execute() 没有返回值;而 submit() 有返回值submit() 的返回值 Future 调用get方法时,可以捕获处理异常最后附上面试题汇总及答案(持续更新中)...

2021-09-08 16:51:52 162

原创 45. 线程池都有哪些状态?

RUNNING :能接受新提交的任务,并且也能处理阻塞队列中的任务;SHUTDOWN:关闭状态,不再接受新提交的任务,但却可以继续处理阻塞队列中已保存的任务。在线程池处于 RUNNING 状态时,调用 shutdown()方法会使线程池进入到该状态。(finalize() 方法在执行过程中也会调用shutdown()方法进入该状态);STOP:不能接受新任务,也不处理队列中的任务,会中断正在处理任务的线程。在线程池处于 RUNNING 或 SHUTDOWN 状态时,调用 shutdownNow() 方法

2021-09-08 16:49:22 205

原创 44.创建线程池有哪几种方式?

Executors.newFixedThreadPool:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待;Executors.newCachedThreadPool:创建一个可缓存的线程池,若线程数超过处理所需,缓存一段时间后会回收,若不够,则新建线程;Executors.newSingleThreadExecutor:创建单个线程数的线程池,它可以保证先进先出的执行顺序;Executors.newScheduledThreadPool:创建一个可以执行延迟任务的线程池;Ex

2021-09-08 16:47:55 219

原创 43. 线程的 run()和 start()有什么区别?

启动一个线程需要调用 Thread 对象的 start() 方法调用线程的 start() 方法后,线程处于可运行状态,此时它可以由 JVM 调度并执行,这并不意味着线程就会立即运行run() 方法是线程运行时由 JVM 回调的方法,无需手动写代码调用直接调用线程的 run() 方法,相当于在调用线程里继续调用方法,并未启动一个新的线程最后附上面试题汇总及答案(持续更新中)...

2021-09-08 16:44:08 140

原创 42. notify()和 notifyAll()有什么区别?

都是用来用来唤醒调用wait()方法进入等待锁资源队列的线程,区别在于:notify():唤醒正在等待此对象监视器的单个线程。 如果有多个线程在等待,则选择其中一个随机唤醒,唤醒的线程享有公平竞争资源的权利notifyAll():唤醒正在等待此对象监视器的所有线程,唤醒的所有线程公平竞争资源最后附上面试题汇总及答案(持续更新中)...

2021-09-08 16:42:46 264

原创 八、网络

文章目录八、网络1. http 响应码 301 和 302 代表的是什么?有什么区别?2. forward 和 redirect 的区别?3. 简述 tcp 和 udp的区别?4. tcp 为什么要三次握手,两次不行吗?为什么?5. 说一下 tcp 粘包是怎么产生的?6. OSI 的七层模型都有哪些?7. get 和 post 请求有哪些区别?8. 如何实现跨域?9. 说一下 JSONP 实现原理?八、网络1. http 响应码 301 和 302 代表的是什么?有什么区别?301 表示被请求 u

2021-09-08 16:32:48 136

原创 七、 异常

文章目录七、 异常1. throw 和 throws 的区别?2. final、finally、finalize 有什么区别?3. try-catch-finally 中哪个部分可以省略?4. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?5. 常见的异常类有哪些?6. finally语句块一定执行吗?七、 异常1. throw 和 throws 的区别?throw:表示方法内抛出某种异常对象如果异常对象是非 RuntimeEx

2021-08-31 11:30:30 133

原创 六、Java Web

文章目录六、Java Web1. jsp 和 servlet 有什么区别?2. jsp 有哪些内置对象?作用分别是什么?3. 说一下 jsp 的 4 种作用域?4. session 和 cookie 有什么区别?5. 说一下session的工作原理?6. 如果客户端禁止cookie能实现session还能用吗?7. spring mvc 和 struts 的区别是什么?8. 如何避免sql注入?9. 什么是XSS攻击,如何避免?10. 什么是CSRF攻击,如何避免?六、Java Web1. jsp

2021-08-31 11:24:21 147

原创 四、反射;五、对象拷贝

文章目录四、反射1. 什么是反射?2. 什么是 java 序列化?什么情况下需要序列化?3. 动态代理是什么?有哪些应用?4. 怎么实现动态代理?五、对象拷贝1. 为什么要使用克隆?3. 如何实现对象克隆?4. 深拷贝和浅拷贝区别是什么?四、反射 1. 什么是反射?Java 反射,就是在运行状态中。获取任意类的所有属性和方法获取任意对象的属性,并且能改变对象的属性调用任意对象的方法判断任意一个对象所属的类实例化任意一个类的对象这种动态获取的信息以及动态调用对象的方法的功能称为j

2021-08-27 12:14:32 221

原创 三、多线程

文章目录三、多线程1. 并行和并发有什么区别?2. 线程和进程的区别?3. 守护线程是什么?4. 创建线程有哪几种方式?5. 说一下 runnable 和 callable 有什么区别?6. 线程有哪些状态?7. sleep() 和 wait() 有什么区别?8. notify()和 notifyAll()有什么区别?9. 线程的 run()和 start()有什么区别?10. 创建线程池有哪几种方式11. 线程池都有哪些状态?12. 线程池中 submit()和 execute()方法有什么区别?13.

2021-08-20 11:31:03 292

原创 二、Java容器

文章目录二、容器1. java 容器都有哪些?2. Collection 和 Collections 有什么区别?3. List、Set、Map 之间的区别是什么?4. HashMap 和 Hashtable 有什么区别?5. 如何决定使用 HashMap 还是 TreeMap?6. 说一下 HashMap 的实现原理?7. 说一下 HashSet 的实现原理?8. ArrayList 和 LinkedList 的区别是什么?9. 如何实现数组和 List 之间的转换?10. ArrayList 和 Vec

2021-08-19 12:13:40 300

原创 一、Java基础

一、Java基础文章目录一、Java基础1.JDK 和 JRE 有什么区别?2. == 和 equals 的区别是什么?3. 两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?4. final 在 java 中有什么作用?5. java 中的 Math.round(-1.5) 等于多少?6. String 属于基础的数据类型吗?7. java 中操作字符串都有哪些类?它们之间有什么区别?8. String str="i"与 String str=new String(

2021-08-19 11:47:30 434

原创 面试题整理

面试题整理文章目录面试题整理前言[一、Java 基础](https://blog.csdn.net/m0_46420991?spm=1000.2115.3001.5343&type=lately)二、容器三、多线程四、反射五、对象拷贝六、Java Web七、 异常八、网络九、设计模式十、 Spring/Spring MVC十一、Spring Boot/Spring Cloud十二、 Hibernate十三、 Mybatis十四、 RabbitMQ十五、 Zookeeper十六、 Kafka十七、M

2021-08-19 11:17:03 834

原创 41. sleep() 和 wait() 有什么区别?

**sleep( )**方法属于Thread类中,导致程序暂停执行指定的时间,让出CPU给其他线程,但是依然处于监控状态,等指定时间到了就自动回复运行状态,不会释放对象锁;**wait( )**方法属于Object类中,会放弃对象锁,进入等待此对象的等待锁定池,只有此对象调用notify( )方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。...

2021-08-19 10:46:41 121

原创 40. 线程有哪些状态?

NEW 初始状态,线程被构建,但是还没有调用 start() 方法RUNNABLE 运行状态,Java线程操作系统中的就绪和运行两种状态笼统地称作“运行中BLOCKED 阻塞状态,表示线程阻塞于锁WAITING 等待状态,表示线程进入等待状态,进入该状态表示当前线程需要等待其他线程做出一些特定动作(通知或中断)TIME_WAITING 超时等待状态,该状态不同于WAITING,他可以在指定时间自行返回的TERMINATED 终止状态,表示当前线程已经执行完毕...

2021-08-10 16:17:18 145

原创 39. 说一下 runnable 和 callable 有什么区别?

Runnable 接口 run 方法无返回值;Callable 接口 call 方法有返回值,支持泛型Runnable 接口 run 方法只能抛出运行时异常,且无法捕获处理;Callable 接口 call 方法允许抛出异常,可以获取异常信息

2021-08-10 16:14:59 154

原创 38. 创建线程有哪几种方式?

(1)继承Thread类(2)实现Runnable接口(3)实现Callable接口、(4)线程池

2021-08-10 16:13:56 132

原创 37. 守护线程是什么?

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。所有用户线程停止时,进程会停掉所有守护线程,退出程序。

2021-08-10 16:11:55 150

原创 36. 线程和进程的区别?

1.线程(Thread)与进程(Process)进程定义的是应用程序与应用程序之间的边界,一个进程就代表一个应用程序。不同的进程之间不能共享代码和数据空间,而同一进程的不同线程可以共享代码和数据空间。2.一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。实现线程的两种方式:继承Thread类,实现Runable接口...

2021-08-10 16:10:18 153

原创 35. 并行和并发有什么区别?

并行指多个事件在同一个时刻发生;并发指在某时刻只有一个事件在发生,某个时间段内由于 CPU 交替执行,可以发生多个事件。并行没有对 CPU 资源的抢占;并发执行的线程需要对 CPU 资源进行抢占。并行执行的线程之间不存在切换;并发操作系统会根据任务调度系统给线程分配线程的 CPU 执行时间,线程的执行会进行切换。...

2021-08-10 16:09:00 423

原创 34.怎么确保一个集合不能被修改?

使用 JDK中java.util.Collections 类,unmodifiable*** 方法赋值原集合当再修改集合时,会报错 java.lang.UnsupportedOperationException。List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); System.out.println(list); Collection<String&gt

2021-08-10 15:59:50 72

原创 33. Iterator 和 ListIterator 有什么区别?

相同点都是迭代器,当需要对集合中元素进行遍历不需要干涉其遍历过程时,这两种迭代器都可以使用。不同点1.使用范围不同,Iterator可以应用于所有的集合。而ListIterator只能用于List及其子类型。2.ListIterator有add方法,可以向List中添加对象,而Iterator不能。3.ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现

2021-08-02 09:28:29 397

原创 32. Iterator 怎么使用?有什么特点?

Iterator的使用(1)Iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素。(2)使用next()获得序列中的下一个元素(3)使用hasNext()检查序列中是否还有元素。(4)使用remove()将迭代器新近返回的元素删除。 List<String> list = new ArrayList<String>(); list.add("张三"); list.add("李四"); list.add("王五");

2021-07-31 10:58:31 1840

原创 31.迭代器 Iterator 是什么?

用于顺序访问集合对象的元素,不必知道集合对象的底层实现。Iterator是可以遍历集合的对象,为各种容器提供了公共的操作接口,隔离对容器的遍历操作和底层实现,从而实现解耦。缺点是增加新的集合类需要配合增加新的迭代器对象,成对增加。...

2021-07-31 10:43:37 154

原创 30. 哪些集合类是线程安全的?

Vector,实现List接口,与ArrayList相比几乎相同,但是是线程安全的。底层是数组。Stack,继承Vector类,先进后出。HashTable,实现Map接口,与HashMap几乎完全相同,但是是线程安全的。java.util.concurrent包下的所有集合类,例如:ConcurrentHashMap。...

2021-07-31 10:34:09 2343

原创 29. 在 Queue 中 poll()和 remove()有什么区别?

队列(queue)是一个典型的先进先出的容器。即从容器的一端放入事物,从另一端取出,并且事物放入容器的顺序与取出的顺序是相同的。相同点:都是返回第一个元素,并在队列中删除返回的对象。不同点:remove() ,如果队列为空的时候,则会抛出异常而poll()只会返回null...

2021-07-29 09:56:21 328

原创 28. Array 和 ArrayList 有何区别?

Array 是数组;ArrayList 是集合存储内容比较: Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。空间大小比较: array 是数组,arraylist 是集合,集合可以根据自身变化扩大,而数组创建后不可以变化。方法上的比较: ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大小),而ArrayList可以只是先声明。对于基本数

2021-07-28 11:51:46 656

原创 27. ArrayList 和 Vector 的区别是什么?

线程安全:Vector使用了Synchronized来实现线程同步,是线程安全的,而 ArrayList是非线程安全的。性能:ArrayList在性能方面要优于vector.扩容:ArrayList和vector都会根据实际的需要动态的调整容量,只不过在vector扩容每次会增加1倍,而ArrayList只会增加50%....

2021-07-28 11:41:17 189

原创 26. 如何实现数组和 List 之间的转换?

数组转 List ,使用 JDK 中 java.util.Arrays 工具类的 asList 方法import java.util.Arrays;import java.util.List;public class test26 { public static void main(String[] args) { String[] strs = new String[] {"aaa", "bbb", "ccc"}; //数组 for (String s :

2021-07-28 11:35:15 253

原创 25. ArrayList 和 LinkedList 的区别是什么?

数据结构:ArrayList 是动态数组的数据结构实现,而 LinkedList 是双向链表的数据结构实现。随机访问方式:LinkedList 是线性的数据存储方式,需要移动指针从前往后依次查找。所以 ArrayList 比 LinkedList 在随机访问的时候效率要高,增加和删除:ArrayList 增删操作要影响数组内的其他数据的下标。所以在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,综合来说:在需要频繁读取集合中的元素时,更推荐使用 Array

2021-07-28 11:21:37 175

原创 24. 说一下 HashSet 的实现原理?

HashSet 的父类接口是Set集合HashSet 是以Hash表结构存储HashSet 多线程不安全HashMap 可以存null值,HashSet的底层是用HashMap实现的,将HashMap 值的那一列隐藏,就是HashSet (存在键的那一列)一般子类需要用到HashCode方法,并且进行重写。...

2021-07-28 11:20:45 461

原创 23. 说一下 HashMap 的实现原理?

HashSet 是以Hash表结构存储可以存null键、null值HashMap 储存的是Jdk中提供的类型的键,可以保证唯一性一般子类需要用到HashCode方法,并且进行重写。

2021-07-28 11:19:36 199

原创 22. 如何决定使用 HashMap 还是 TreeMap?

HashMap基于散列桶(数组和链表)实现;TreeMap基于红黑树实现。HashMap不支持排序;TreeMap默认是按照Key值升序排序的,可指定排序的比较器,主要用于存入元素时对元素进行自动排序。HashMap大多数情况下有更好的性能,尤其是读数据。在没有排序要求的情况下,使用HashMap。两个都是非线程安全...

2021-07-28 11:18:40 638

原创 21. HashMap 和 Hashtable 有什么区别?

1.Map是一个以键值对存储的接口。Map下有两个具体的实现,分别是HashMap和HashTable.2.HashMap是线程非安全的,HashTable是线程安全的,所以HashMap的效率高于HashTable.3.HashMap允许键或值为空,而HashTable不允许键或值为空...

2021-07-28 11:17:42 119

原创 20. List、Set、Map 之间的区别是什么?

List:有序集合,元素可重复Set:无序集合,元素不可重复Map:键值对集合,存储键和值之间的映射;key无序唯一不可重复;value不要求有序,允许重复

2021-07-27 10:26:11 163

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除