美文网首页开发技巧马士兵Java学习笔记
腾讯P8专家终于总结出:274道设计模式+多线程+并发编程面试题

腾讯P8专家终于总结出:274道设计模式+多线程+并发编程面试题

作者: 程序员1 | 来源:发表于2020-05-19 16:12 被阅读0次

    前言

    今天给大家分享的是:腾讯P8专家总结出来的274道设计模式+多线程+并发编程面试题及答案技术文档,希望大家能够喜欢~~~

    学习路线

    第二版:精选设计模式10道面试题及答案

    什么是设计模式

    为什么要学习设计模式

    设计模式分类.

    设计模式的六大原则-

    单例模式

    1.什么是单例

    2.那些地方用到了单例模式-

    3.单例优缺点

    优点:

    缺点:

    4.单例模式使用注意事项:

    5.单例防止反射漏洞攻击

    6.如何选择单例创建方式

    7.单例创建方式

    厂模式

    1.什么是厂模式

    2.I厂模式好处-

    3.为什么要学习工厂设计模式

    4.Spring开发中的工厂设计模式

    5.工厂模式分类

    代理模式

    1.什么是代理模式

    2.代理模式应用场景

    3.代理的分类

    4.三种代理的区别-

    5.用代码演示三种代理.

    建造者模式

    第二版:并发编程48道面试题及答案

    1、并发编程三要素?

    1.原子性

    2.可见性

    3、有序性

    2.实现可见性的方法有哪些?

    3、多线程的价值?

    1、发挥多核CPU的优势

    2、防止阻塞-

    3、便于建模.

    4、创建线程的有哪些方式?

    1、继承Thread类创建线程类

    2、通过Runnable接口创建线程类

    3、通过Callable和Future创建线程

    4、通过线程池创建.

    5.创建线程的三种方式的对比?

    6、线程的状态流转图-

    7. Java 线程具有五中基本状态.....

    8、什么是线程池?有哪几种创建方式?

    9.四种线程池的创建:

    10、线程池的优点?

    11.常用的并发I具类有哪些?

    1. CountDownLatch .

    2. CyclicBarrier

    3、Semaphore

    4、Exchanger

    12、CycliBarrier 和CountDownLatch的区别

    13、synchronized 的作用?

    14、volatile 关键字的作用

    15.什么是CAS-

    16. CAS的问题

    1.CAS容易造成ABA问题:

    2.不能保证代码块的原子性

    3、CAS造成CPU利用率增加-

    17.什么是Future?

    18、什么是AQS.

    19. AQS支持两种同步方式:

    1.独占式

    2.共享式

    20、ReadWriteLock 是什么

    21、FutureTask 是什么

    22. synchronized 和ReentrantLock的区别-

    1. ReentrantLock 可以对获取锁的等待时间进行设置,这样就避免了死锁

    2. ReentrantLock 可以获取各种锁的信息

    3. ReentrantLock 可以灵活地实现多路通知-

    23、什么是乐观锁和悲观锁-

    24、线程B怎么知道线程A修改了变量

    1、volatile 修饰变量

    2、synchronized 修饰修改变量的方法

    3、wait/notify-

    4、while 轮询

    25、synchronized. volatile. CAS比较.

    26. sleep 方法和wait方法有什么区别?

    27. ThreadLocal 是什么?有什么用?

    28、为什么wait0方法和notify0/notifyAIl)方法要在同步块中披调用

    29.多线程同步有哪几种方法?

    30、线程的调度策略-

    1.线程体中调用了yield方法让出了对cpu的占用权利

    2.线程体中调用了sleep方法使线程进入睡眠状态

    3.线程由于10操作受到阻塞

    4、另外一个更高优先级线程出现

    31. ConcurrentHashMap 的并发度是什么一

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

    1.获取项目的pid,jps或者ps-ef|grepjava,这个前面有讲过

    2. top H -p pid.顺序不能改变-

    33、Java 死锁以及如何避免?

    34、死锁的原因

    35.怎么唤醒一个阻塞的线程-

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

    37.什么是多线程的上下文切换

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

    39. Java 中用到的线程调度算法是什么-

    40.什么是线程调度器(Thread Scheduler)和时间分片(ime Slicing)?

    41、什么是白----....

    42、Java Concurrency API中的Lock接口(Lock interface)是什么?对比同步它有什么优势?

    1、可以使锁更公平

    2.可以使线程在等待锁的时候响应中断-

    3.可以让线程尝试获取锁,并在无法获取锁的时候立即返回或者等待一段时间

    4、可以在不同的范围,以不同的顺序获取和释放锁-

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

    1、饿汉式单例模式的写法:线程安全

    2、懒汉式单例模式的写法:非线程安全.

    3、双检锁单例模式的写法:线程安全

    44、Semaphore 有什么作用-

    45. Executors 类是什么?

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

    47.同步方法和同步块,哪个是更好的选择?-

    48、Java 线程数过多会造成什么异常?

    1.线程的生命周期开销非常高

    2、消耗过多的CPU资源:

    3、降低稳定

    第二版:多线程75道面试及答案

    1.在java中守护线程和本地线程区别?

    2.线程与进程的区别?

    3.什么是多线程中的上下文切换?

    4、死锁与活锁的区别,死锁与饥饿的区别?

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

    6.什么是线程组,为什么在Java中不推荐使用?

    7.为什么使用Executor框架?

    8、在Java中Executor和Executors的区别?

    9.如何在Windows和Linux.上查找哪个线程使用的CPU时间最长?

    10、什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)

    11、Java Concurrency API中的Lock接口(Lock interface)是什么?对比同步它

    什么优势?

    12.什么是Executors框架?

    13.什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者

    -消费者模型?

    14、什么是Callable和Future?

    15、什么是FutureTask?使用ExecutorService启动任务。

    16.什么是并发容器的实现?

    17.多线程同步和互斥有几种实现方法,都是什么?

    18、什么是竞争条件?你怎样发现和解决竞争?

    19.你将如何使用thread dump?你将如何分析Thread dump?

    20、为什么我们调用start0方法时会执行run0方法.为什么我们不能直接调用run()方法?

    21. Java 中你怎样唤醒一个阻塞的线程?

    22.在Java中CycliBarriar和CountdownLatch有什么区别?

    23.什么是不可变对象,它对写并发应用有什么帮助?

    24、什么是多线程中的上下文切换?

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

    26、什么是线程组,为什么在Java中不推荐使用?

    27.为什么使用Executor框架比使用应用创建和管理线程好?

    28. java 中有几种方法可以实现-个线程?

    29.如何停止-个正在运行的线程?

    30、notify0和 notifyAIl0有什么区别?

    31.什么是Daemon线程?它有什么意义?

    32、java 如何实现多线程之间的通讯和协作?

    33.什么是可重入锁(ReentrantLock) ?

    34、当一个线程进入某个对象的一个synchronized的实例方法后,其它线程是否可进入此对象的其它方法?

    35、乐观锁和悲观锁的理解及如何实现,有哪些实现方式?

    1、ABA问题:

    2、循环时间长开销大:

    3、只能保证一个共享变量的原子操作:

    36、SynchronizedMap 和ConcurrentHashMap有什么区别?

    37. CopyOnWriteArrayList 可以用于什么应用场泉?

    1、读写分离,读和写分开

    2、最终-致性

    3.使用另外开辟空间的思路,来解决并发冲突

    38、什么叫线程安全? servlet 是线程安全吗?-

    39. volatile 有什么用?能否用一句话说明下 volatile的应用场景?

    40、为什么代码会重排序?

    41.在java中wait和sleep方法的不同?

    42.用Java实现阻塞队列

    43.一个线程运行时发生异常会怎样?

    44、如何在两个线程间共享数据?

    45、Java 中notify和notifyAll 有什么区别?

    46.为什么wait, notify和notifyAll 这些方法不在thread类里面?

    47.什么是ThreadLocal变量?

    48、Java 中interrupted和islnterrupted 方法的区别?

    49.为什么wait和notify方法要在同步块中调用?

    50、为什么你应该在循环中检查等待条件?-

    51. Java 中的同步集合与并发集合有什么区别?

    52、什么是线程油?为什 么要使用它?

    53.怎么检测-个线程是否拥有锁?

    54、你如何在Java中获取线程堆栈?

    56、Thread 类中的yield方法有什么作用?

    57. Java 中ConcurrentHashMap的并发度是什么?

    58、Java 中Semaphore是什么?

    59、Java 线程池中submit(和execute0方法有什么区别?

    60、什么是阻塞式方法?

    61. Java中的ReadWriteLock是什么?

    62、volatile 变量和atomic变量有什么不同?

    63.可以直接调用Thread类的run 0方法么?

    64、如何让正在运行的线程暂停-段时间?

    65、你对线程优先级的理解是什么?

    66、什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )

    67.你如何确保main0方法所在的线程是Java程序最后结束的线程?

    68、线程之间是如何通信的?

    69、为什么线程通信的方法wait0, notify0和notifyAll()被定义在Object类里?

    70、为什么wait0. notifyO和notifyAll 0必须在同步方法或者同步块中被调用?

    71.为什么Thread类的sleep0和yield 0方法是静态的?

    72.如何确保线程安全?

    73.同步方法和同步块。哪个是更好的选择?

    74、如何创建守护线程?

    75、什么是Java Timer类?如何创建一个有特定时间间隔的任务?

    第二版:并发编程140道面试题及答案

    基础知识-

    做一个形象的比喻:

    相同点:

    主要区别:

    并发理论

    r= a*a;/语句4

    1.不管怎么排序,结果不能改变

    2.不存在数据依赖的可以被编译器和处理器重排序

    3. -个操作依赖两个操作.这两个操作如果不存在依赖可以重排序

    4.单线程根据此规则不会有问题。但是重排序后多线程会有问题

    synchronized关键字最主要的三种使用方式:

    双重校验锁实现对象单例(线程安全)

    说明:

    1、 为uniqueInstance 分配内存空间

    2、初始 化uniquelnstance

    3、将 uniquelnstance 指向分配的内存地址

    所以从Oracle Java Spec里面可以看到:

    区别

    线程池-

    可以得出一个结论:

    并发容器

    1、HashMap 添加方法的源码

    2、HashTable 添加方法的源码.

    并发队列

    1、 非堵塞队列:

    并发工具类

    ............

    274道设计模式+多线程+并发编程面试题技术文档总览

    需要的小伙伴抓紧时间获取啦,只需转发关注小编,+++V X :bjmashibing001 来免费获取啦~~~~~~~~

    感谢大家的支持,关注不迷路,干货满满!!!

    相关文章

      网友评论

        本文标题:腾讯P8专家终于总结出:274道设计模式+多线程+并发编程面试题

        本文链接:https://www.haomeiwen.com/subject/aimbohtx.html