【并发】面试题汇总

  • 并发篇
    • 1. 什么是线程和进程?
    • 2. 程序计数器为什么是私有的?
    • 3. 虚拟机栈和本地方法栈为什么是私有的?
    • 4. 如何理解线程安全和不安全?
    • 5. 线程的类型
    • 6. 如何创建线程?
    • 7. 线程的生命周期和状态
    • 8. 什么是死锁,死锁产生的条件
    • 9. 如何预防和避免线程死锁?
    • 10. sleep() 方法和 wait() 方法对比

并发篇

1. 什么是线程和进程?

答:

  • 进程: 进程就是一个程序的实例。每个进程都拥有独立的内存空间进程之间内存不共享。进程间的切换开销比较大
  • 线程: 线程是进程中的一个执行单元,一个进程可以包含多个线程。线程共享进程的内存空间。线程间的切换开销小

2. 程序计数器为什么是私有的?

答:

  • 程序计数器私有主要是为了线程切换后能恢复到正确的执行位置

3. 虚拟机栈和本地方法栈为什么是私有的?

答:

  • 为了保证线程中的局部变量不被别的线程访问到

4. 如何理解线程安全和不安全?

答:

  • 线程安全: 不管有多少个线程同时访问,都能保证这份数据的正确性和一致性。
  • 线程不安全: 多个线程同时访问时无法保证数据的一致性,正确性。

5. 线程的类型

答:

  • IO 密集型:IO 密集型的线程主要进行输入输出操作,如读写文件、网络通信等,需要等待 IO 设备的响应,而不占用太多的 CPU 资源
  • CPU密集型:CPU 密集型的线程主要进行计算和逻辑处理,需要占用大量的 CPU 资源

6. 如何创建线程?

答:

  • 继承Thread类,重写run方法
  • 实现Runnable 接口
  • 实现 Callable 接口 (可以获得线程的返回结果)
  • 使用线程池

7. 线程的生命周期和状态

答:

8. 什么是死锁,死锁产生的条件

答:

  • 死锁: 线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,又不释放自己资源,所以这两个线程就会互相等待而进入死锁状态。

产生死锁的四个必要条件:

  • 资源互斥:该资源任意一个时刻只由一个线程占用。
  • 请求与保持条件:线程在请求资源而阻塞时,不会释放已持有的资源。
  • 不剥夺条件:线程持有的资源不会被其他线程抢夺。
  • 循环等待条件:线程对资源的请求形成一个闭环。例如,线程 A 等待线程 B 持有的资源,线程 B 等待线程 C 持有的资源,以此类推,直到某个线程又开始等待线程 A 持有的资源。

9. 如何预防和避免线程死锁?

答:

破坏死锁的产生的必要条件即可:

  • 破坏请求与保持条件:一次性申请所有的资源。
  • 破坏不剥夺条件:占用部分资源的线程进一步申请其他资源时,如果申请不到,可以主动释放它占有的资源。
  • 破坏循环等待条件:靠按序申请资源来预防。按某一顺序申请资源,释放资源则反序释放。破坏循环等待条件。

避免死锁就是在资源分配时,借助于算法(比如银行家算法)对资源分配进行计算评估,使其进入安全状态。

安全状态 指的是系统能够按照某种线程推进顺序(P1、P2、P3……Pn)来为每个线程分配所需资源,直到满足每个线程对资源的最大需求,使每个线程都可顺利完成。称 <P1、P2、P3…Pn> 序列为安全序列。

10. sleep() 方法和 wait() 方法对比

答:

共同点:两者都可以暂停当前线程的执行。

区别:

  • sleep() 方法没有释放锁,而 wait() 方法释放了锁 。
  • wait() 通常被用于线程间交互/通信sleep()通常被用于暂停执行。
  • wait() 方法被调用后,线程不会自动苏醒,需要别的线程调用同一个对象上的 notify()或者 notifyAll() 方法。sleep()方法执行完成后,线程会自动苏醒。或者也可以使用 wait(long timeout) 超时后线程会自动苏醒。
  • sleep()Thread 类的静态本地方法,wait() 则是 Object 类的本地方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 刷题汇总——题目序号顺序版

剑指 Offer——和为 S 的两个数字 剑指 Offer——数字在排序数组中出现的次数 剑指 Offer——和为 S 的连续正数序列 剑指 Offer——最小的 K 个数 剑指 Offer——连续子数组的最大和 剑指 Offer——数组中的逆序对 LeetCode 1——两数之和 LeetCode 2——两数相加 LeetCode 3…

Nacos日志目录下每个日志文件的简要说明

当我们在使用Nacos时&#xff0c;可能会遇到各种问题&#xff0c;需要查看Nacos的日志来进行排查。 下面是对Nacos日志目录下每个日志文件的简要说明&#xff1a; alipay-jraft.log&#xff1a;该日志文件记录Nacos使用的JRaft库的日志。 cmdb-main.log&#xff1a;该日志文件…

【现代C++】委托构造函数

现代C中的委托构造函数&#xff08;Delegating Constructors&#xff09;是C11引入的特性&#xff0c;它允许一个构造函数调用同一个类中的另一个构造函数&#xff0c;以避免代码重复。这种特性在初始化对象时提高了代码的复用性和清晰性。 1. 基本用法 在同一个类中&#xf…

(小红书平台)2024用户画像洞察报告

现今的小红书坐拥3亿月活用户&#xff0c;男女比例达到3:7&#xff0c;95后占比为50%&#xff0c;00后占比为35%&#xff0c;一二线城市用户占比50%。社区分享者超8000万&#xff0c;日均用户搜索渗透达到60%&#xff0c;UGC内容占比达90%。&#xff08;数据来源&#xff1a;小…

[lesson16]类的真正形态

类的真正形态 类的关键字 struct在C语言中以及有了自己的含义&#xff0c;必须继续兼容 在C中提供了新的关键字class用于类的定义 class和struct的用法是完全相同的 在用struct定义类时&#xff0c;所有成员的默认访问级别为public 在用class定义类时&#xff0c;所有成员…

虚拟网络设备的真正使命:实现有控制的通信

在数字化时代&#x1f4f2;&#xff0c;网络安全&#x1f512;成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁&#x1f525;&#xff0c;传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备&#x1f5a7;&#xff0c;作为网络架构中…

mysql启动时报错:Starting MySQL... ERROR! The server quit without updating PID file快速解决

mysql启动时报错&#xff1a;Starting MySQL… ERROR! The server quit without updating PID file (/opt/mysql/data/mysql.pid) 的解决方法 出现问题的可能性 1、可能是/opt/mysql/data/数据目录mysql用户没有权限&#xff08;修改数据目录的权限&#xff09; 解决方法 &a…

谈谈功率IC巨头—士兰微

大家好&#xff0c;我是砖一。 今天给大家分享一下士兰微电子公司&#xff0c;&#xff0c;有做功率元器件&开关电源和IC的朋友可以了解一下&#xff0c;希望对你有用~ 1 公司介绍 士兰微电子成立于1997年&#xff0c;于2003年上市&#xff0c;总部位于杭州&#xff0c;…

unity按路径移动

using System; using System.Collections; using System.Collections.Generic; using UnityEngine;public class FollowPathMove : MonoBehaviour {public Transform[] wayPointArray;[SerializeField] private Transform PathA;//路径点的父物体[SerializeField]private Trans…

【春招面试篇】大厂面试干货分享

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多面经   &#x1f51d;&#x1f51d; 面试经验分享 1. 前言2. 去哪儿投简历?内推是否有用?3. 投递简历前的准备…

7. TypeScript中的Any, Unknown, Void, Never类型

在TypeScript的类型系统中&#xff0c;any、unknown、void、never这四种类型扮演着特殊的角色。它们各自有着不同的用途和行为&#xff0c;理解它们的差异对于编写类型安全的TypeScript代码至关重要。本文将深入探讨这四种类型的特性和使用场景&#xff0c;帮助你更好地利用Typ…

美团一面,面试官让介绍AQS原理并手写一个同步器,直接凉了

写在开头 今天在牛客上看到了一个帖子&#xff0c;一个网友吐槽美团一面上来就让手撕同步器&#xff0c;没整出来&#xff0c;结果面试直接凉凉。 就此联想到一周前写的一篇关于AQS知识点解析的博文&#xff0c;当时也曾埋下伏笔说后面会根据AQS的原理实现一个自定义的同步器…

【MySQL数据库 | 第二十五篇】深入探讨MVCC底层原理

前言&#xff1a; 在当今互联网时代&#xff0c;数据库扮演着数据存储和管理的关键角色。对于大型Web应用程序和企业级系统而言&#xff0c;高效地处理并发访问和事务管理是至关重要的。多版本并发控制&#xff08;MVCC&#xff09;是一种数据库事务处理的技术&#xff0c;旨…

【CV】ORB算法

1. ORB算法&#xff1a; 特点&#xff1a; 实现了旋转不变性、尺度不变性和计算效率高等特性。 旋转不变性&#xff1a; 通过计算关键点周围的梯度信息&#xff0c;确定关键点的主方向。将图像旋转到关键点的主方向&#xff0c;然后再提取BRIEF描述符&#xff0c;增强了旋转不…

【软件测试】个人博客系统测试

个人博客系统测试 一、项目背景1.1 技术背景1.2 功能背景 二、自动化测试2.1 什么是自动化测试2.2 通过使用selenium进行自动化测试的编写&#xff08;Java实现&#xff09;2.3 编写测试用例&#xff0c;执行自动化测试2.3.1 输入用户名:test,密码:123&#xff0c;登录成功2.3.…

CRM集成:解锁业务增长与客户关系管理的关键

预计从2021年至2028年&#xff0c;CRM领域的市场规模将大幅跃升&#xff0c;从约580亿美元增长至1290亿美元。这一显著的增长并非偶然&#xff0c;而是源于CRM平台为企业带来的巨大价值。客户关系管理平台助力销售高效开发潜在客户&#xff0c;客户成功经理有效支持客户&#x…

unable to find a medium containing a live file system解决办法!

背景&#xff1a; 用Ventoy制作U盘系统安装盘&#xff0c;只需要把ISO镜像拷进去就可以&#xff0c;可以放多少个镜像取决于U盘的大小&#xff0c;无需重复制作。Ventoy 将U盘的第一个分区默认格式化为exFAT文件系统来存放ISO文件。 但是&#xff0c;今天鲲鹏920平台安装银河…

Golang | Leetcode Golang题解之第16题最接近的三数之和

题目&#xff1a; 题解&#xff1a; func threeSumClosest(nums []int, target int) int {sort.Ints(nums)var (n len(nums)best math.MaxInt32)// 根据差值的绝对值来更新答案update : func(cur int) {if abs(cur - target) < abs(best - target) {best cur}}// 枚举 a…

心跳机制原理学习

心跳机制 应用场景&#xff1a; 在长连接下&#xff0c;有可能很长一段时间都没有数据往来。理论上说&#xff0c;这个连接是一直保持连接的&#xff0c;但是实际情况中&#xff0c;如果中间节点出现什么故障是难以知道的。更要命的是&#xff0c;有的节点&#xff08;防火墙…

【鸿蒙开发】组件状态管理@Prop,@Link,@Provide,@Consume,@Observed,@ObjectLink

1. Prop 父子单向同步 概述 Prop装饰的变量和父组件建立单向的同步关系&#xff1a; Prop变量允许在本地修改&#xff0c;但修改后的变化不会同步回父组件。当父组件中的数据源更改时&#xff0c;与之相关的Prop装饰的变量都会自动更新。如果子组件已经在本地修改了Prop装饰…