当前位置:首页 > 服务端 > 面试必问的并发编程知识点,你知道多少?

面试必问的并发编程知识点,你知道多少?

2022年11月07日 08:35:04服务端8

前言

众所周知,在Java的知识体系中,并发编程是非常重要的一环,也是面试的必问题,一个好的Java程序员是必须对并发编程这块有所了解的。

然而不论是哪个国家,什么背景的 Java 开发者,都对自己写的并发程序相当自信,但也会在出问题时表现得很诧异甚至一筹莫展。

可见,Java 并发编程显然不是一件能速成的能力,基础搭得越好,越全面,在实践中才会有更深刻的理解。

因此,大家不难发现 Java 并发问题一直是各个大厂面试的重点之一。我在平时的面试中,也发现很多候选人对一些基本的并发概念表示没听过,或原理不理解,可能知道一些却又讲不清楚,最终导致面试失败。

本文会结合实际中接触到的一些面试题,重点来聊一聊 Java 并发中的相关知识点。

Synchronized 相关问题

问题一:Synchronized 用过吗,其原理是什么?

问题二:你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?

问题三:什么是可重入性,为什么说 Synchronized 是可重入锁?

问题四:JVM 对 Java 的原生锁做了哪些优化?

问题五:为什么说 Synchronized 是非公平锁?

问题六:什么是锁消除和锁粗化?

问题七:为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是

问题八:乐观锁一定就是好的吗?

可重入锁 ReentrantLock 及其他显式锁相关问题

问题一:跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?

问题二:那么请谈谈 AQS 框架是怎么回事儿?

问题三:请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。

问题四:ReentrantLock 是如何实现可重入性的?

问题五:除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?

问题六:请谈谈 ReadWriteLock 和 StampedLock。

问题七:如何让 Java 的线程彼此同步?你了解过哪些同步器?请分别介绍下。

问题八:CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?

Java 线程池相关问题

问题一:Java 中的线程池是如何实现的?

问题二:创建线程池的几个核心构造参数?

问题三:线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?

问题四:既然提到可以通过配置不同参数创建出不同的线程池,那么 Java 中默认实现好的线程池又有哪些呢?请比较它们的异同。

问题五:如何在 Java 线程池中提交线程?

Java 内存模型相关问题

问题一:什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?

问题二:请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?

问题三:既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的?

问题四:请对比下 volatile 对比 Synchronized 的异同。

问题五:请谈谈 ThreadLocal 是怎么解决并发安全的?

问题六:很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?

如何学习并发编程

学习java并发就像进入了另外一个学习领域,就像学习一门新的编程语言,或者是学习一套新的语言概念,要理解并发编程,其难度跟理解面向对象编程难度差不多。你花一点功夫,就可以理解它的基本机制,但是要想真正掌握它的本质,就需要深入的学习与理解。最后在分享一个并发编程知识的学习导图给大家!

面试必问的并发编程知识点,你知道多少? _ JavaClub全栈架构师技术笔记

结语

最后我把这些实际遇到的并发编程面试题及常见问题的答案总结了一下,由于文字过多,就单独做了一个文档。以及准备了一些更多关于Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分布式、高并发、性能调优、微服务等架构面试题和架构资料,如有需要的朋友的可以点击免费领取,也可以关注我以后还会有更多干货分享!

作者:茶轴的青春
来源链接:https://www.cnblogs.com/lfs2640666960/p/11461119.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/68294.html

分享给朋友:

“面试必问的并发编程知识点,你知道多少?” 的相关文章

实习第一周(Golang)

实习第一周(Golang)

目录 一,序 二,基础学习 三,环境安装 四,项目操练 GO111MODULE...

Python基础知识

Python基础知识

标识符,变量名、函数名、类名的统称 命名规范 只能包含字母、数字、下划线,并且不能以数字开头 不能与系统关键字、模块名相同 严格...

pycharm安装教程,超详细

pycharm安装教程,超详细

在安装pycharm之前,确保你的电脑配置好了python,没有下载安装的可以去看我的文章—>>>python安装详细教程 pycharm windows版本下载地址:https://www.jetbrains.com/pycha...

划分子网和构造超网的学习

1.划分子网 标准的划分方法的缺点: IP 地址空间的利用率有时很低。 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。 两级的 IP 地址不够灵活 最终提出解决的办法:划分子网,两级地址变...

软件工程复习要点

软件工程复习要点

软件工程复习 一、填空题 二、选择题 三、简答题 8.根据一学期的学习,谈谈你对软件工程学科的认识。...

[C#]richtextbox实现拖放

namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeCo...

[C#]结构体和字节数组的相互转化

public static class StructCopyer { // 相当于序列化与反序列化,但是不用借助外部文件 //1、struct转换为Byte[] public static Byte[]...

[C++]VC自定义发IP包例子

/************************************ *自定义发IP包例子(TCP/IP包发送) *给目标主机的端口发送一个 syn请求, *注意目标主机的信息会发给发送IP地址的主机 *这说明TCP/IP协议本身有IP期骗的漏洞 *这种方运可以自己写成...

centos7中 yum的安装

centos7中 yum的安装

自己误将yum卸载, 在重装时由于依赖问题一直报错: error: Failed dependencies:     /usr/bin/python is ne...

Logback日志框架

Logback日志框架

1 简介 logback官方文档 在实际项目开发中,日志框架是不可避免的。目前常用的日志框架包括log4j和logback等。 该文章将选取logback作为日志框架讲解。logback提供的日志功能主要有两个方面: 通过logbac...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。