Java 杂谈

Java多线程与常遇面试题总结

2018-12-30  本文已影响1人  风平浪静如码

Java多线程面试问题总结

1、多线程有什么用?

2、创建线程的方式

3、start()方法和run()方法的区别

4、Runnable接口和Callable接口的区别

5、CyclicBarrier和CountDownLatch的区别

6、volatile关键字的作用

7、什么是线程安全

8、Java中如何获取到线程dump文件

9、一个线程如果出现了运行时异常会怎么样

10、如何在两个线程之间共享数据

11、sleep方法和wait方法有什么区别

12、生产者消费者模型的作用是什么

13、ThreadLocal有什么用

14、为什么wait()方法和notify()/notifyAll()方法要在同步块中被调用

15、wait()方法和notify()/notifyAll()方法在放弃对象监视器时有什么区别

16、为什么要使用线程池

17、怎么检测一个线程是否持有对象监视器

18、synchronized和ReentrantLock的区别

19、ConcurrentHashMap的并发度是什么

20、ReadWriteLock是什么

21、FutureTask是什么

22、Linux环境下如何查找哪个线程使用CPU最长

23、Java编程写一个会导致死锁的程序

24、怎么唤醒一个阻塞的线程

25、不可变对象对多线程有什么帮助

26、什么是多线程的上下文切换

27、如果你提交任务时,线程池队列已满,这时会发生什么

28、Java中用到的线程调度算法是什么

29、Thread.sleep(0)的作用是什么

30、什么是自旋

31、什么是Java内存模型

32、什么是CAS

33、什么是乐观锁和悲观锁

34、什么是AQS

35、单例模式的线程安全性

36、Semaphore有什么作用

37、Hashtable的size()方法中明明只有一条语句"return count",为什么还要做同步?

38、线程类的构造方法、静态块是被哪个线程调用的

39、同步方法和同步块,哪个是更好的选择

40、高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池?

面试最容易被问到的十八道题

1)请简单解释算法是什么?

2)解释什么是快速排序算法?

3)解释算法的时间复杂度?

4)请问用于时间复杂度的符号类型是什么?

5)解释二分法检索如何工作?

6)解释是否可以使用二分法检索链表?

7)解释什么是堆排序?

8)说明什么是Skip list?

9)解释插入排序算法的空间复杂度是多少?

10)解释什么是“哈希算法”,它们用于什么?

11)解释如何查找链表是否有循环?

12)解释加密算法的工作原理?

13)列出一些常用的加密算法?

14)解释一个算法的最佳情况和最坏情况之间有什么区别?

15)解释什么是基数排序算法?

16)解释什么是递归算法?

17)提到递归算法的三个定律是什么?

18)解释什么是冒泡排序算法?

以上就是多线程面试题与常见面试题(可私信我免费领取答案),以下最新总结的BAT面试题及答案及更多关于Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料,有需要的朋友可以找我免费领取(领取方式看我个人介绍!)

上一篇下一篇

猜你喜欢

热点阅读