前言

只有光头才能变强

高并发(多线程)可谓是我们开发者必要掌握的知识,在无论是校招面试还是社招,都是必考的知识点!

我在之前学习/面试前也写过了不少的原创多线程文章,大家可以回顾一下:

  • 多线程三分钟就可以入个门了!

  • Thread源码剖析

  • 多线程基础必要知识点!看了学习多线程事半功倍

  • Java锁机制了解一下

  • AQS简简单单过一遍

  • Lock锁子类了解一下

  • 线程池你真不来了解一下吗?

  • 多线程之死锁就是这么简单

  • ThreadLocal就是这么简单

  • Java多线程打辅助的三个小伙子

  • 还在用Synchronized?Atomic你了解不?

当时也画了一张思维导图:

 

多线程思维导图

思维导图在线观看地址:

  • https://www.processon.com/mindmap/5b0950c8e4b0b0a47abea76d

一、亲身经历过的面试题

下面来写写我之前秋招的时候,遇到过的多线程问题(几乎每家公司都会考),我整合了一下:

  1. 多线程了解多少啊?使用多线程会有什么问题?你是怎么理解“线程安全”的?

  2. 如果我现在想要某个操作等待线程结束之后才执行,有什么方法可以实现?为什么要用CountDownLatch?CountDownLatch的底层是什么?(引出AQS)

  3. synchronized关键字来说一下,它的用途是什么?synchronized底层的原理是什么?

  4. 线程安全的容器有哪些?(着重于ConcurrentHashMap、CopyWriteOnArrayList与其他非线程安全容器的区别以及它们的具体实现)

  5. ThreadLocal你了解过吗?主要是用来干什么的?具体的源码实现原理来说一下吧

  6. 产生死锁的条件是什么?我们可以如何避免死锁?(可延伸到操作系统层面上的死锁)

  7. synchronized锁和ReentrantLock锁有什么区别呀?

  8. 线程池你应该也看过吧,来说说为什么要用线程池。JDK默认实现了几个线程池,分别有xxx(自然地ThreadPoolExecutor构造函数的常用几个参数你也得一起说出来)

  9. 。。。还有其他等等

上面的是我在秋招的时候记得的一些常考的多线程面试题,如果你参考过校招,对这些应该不会陌生(:

当你答完一个知识点的时候,通常面试官也会继续往下问,所以大家先看看上面的题目会不会答,如果会了可以继续再往下学习。

  • 只要你能让面试官终止继续往下问了,那说明你这部分你是被认可的!


现在已经是2月的下旬了,金三银四大部分该跳槽的跳槽,该春招的春招,留给复习的时间已经不多了!就以校招来说,除了多线程的知识点还有其他重要的知识。比如说集合、算法、Spring、JVM、数据库、设计模式等等等等。这些都是需要我们去掌握的,如果你时间比较紧迫的话,要顾及全面的话,可能就没那么多时间学习多线程了。

  •  
最后

我来说说我对付费知识的理解吧:

曾经的我,也是不花一分钱买网课的,当时我想的是:“有免费的课程为什么我要付费买呢?而且还不便宜呢”。但是,如果你找过网上的资源的话,你会发现这些资源大多都缺点东西(要么质量差,要么就是源码没有,要么看到重点的时候被加密了!)。付费的知识是可以保证质量的,可以请教导师的,源码开放的等等。时间是最值钱的