首页 > 编程语言 >Java相关面试题(2024大厂高频面试题系列)

Java相关面试题(2024大厂高频面试题系列)

时间:2024-10-22 13:49:14浏览次数:3  
标签:状态 面试题 调用 Java 2024 线程 方法 CPU wait

一、多线程基础基础知识

1. 并发编程

1.1 并发编程的优缺点

优点

  • 充分利用多核CPU的计算能力,通过并发编程的形式将多核CPU的计算能力发挥到极致,性能得到提升。
  • 方面进行业务的拆分。提高系统并发能力和性能:高并发系统的开发,并发编程会显得尤为重要,利用好多线程机制可以大大提高系统的并发能力及性能;面对复杂的业务模型,并行程序会比串行程序更适应业务需求,而并发编程更适合这种业务拆分。cai

缺点

  • 并发编程的目的是为了提高程序的执行效率,提高程序运行速度,但并发编程并不是总能提高性能,有时还会遇到很多问题,例如:内存泄漏,线程安全,死锁等。
1.2 并发编程的三要素

并发编程的三要素:(也是带来线程安全所在)

  1. 原子性:原子是不可再分割的最小单元,原子性是指一个或多个操作要么全部执行成功,要么全部执行失败。
  2. 可见性:一个线程对共享变量的修改,另一个线程能看到(synchronized,volatile)
  3. 有序性:程序的执行顺序按照代码的先后顺序

线程安全的问题原因有:

1. 线程切换带来的原子性问题
2. 缓存导致的可见性问题
3. 编译优化带来的有序性问题

解决方案:

  • JDK Atomic开头的原子类、synchronized、LOCK,可以解决原子性问题
  • synchronized、volatile、LOCK,可以解决可见性问题
  • Happens-Before 规则可以解决有序性问题
1.3 并发和并行有和区别

并发:多个任务在同一个CPU上,按照细分的时间片轮流交替执行,由于时间很短,看上去好像是同时进行的。
并行:单位时间内,多个处理器或多核处理器同时处理多个任务,是真正意义上的同时进行。
串行:有n个任务,由一个线程按照顺序执行。

1.4 什么是多线程,多线程的优劣?

定义:多线程是指程序中包含多个流,即在一个程序中可以同时进行多个不同的线程来执行不同的任务
优点:

  • 可以提高CPU的利用率,在多线程中,一个线程必须等待的时候,CPU可以运行其它线程而不是等待,这样就大大提高了程序的效率,也就是说单个程序可以创建多个不同的线程来完成各自的任务。
    缺点:
  • 线程也是程序,线程也需要占内存,线程也多内存也占的也多。
  • 多线程需要协调和管理,所以需要CPU跟踪线程。
  • 线程之间共享资源的访问会相互影响,必须解决禁用共享资源的问题。

2. 线程与进程

2.1 什么是线程与进程

进程:内存中运行的运用程序,每个进程都有自己独立的内存空间,一个进程可以由多个线程,例如在Windows系统中,xxx.exe就是一个进程。
线程:进程中的一个控制单元,负责当前进程中的程序执行,一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可以共享数据。

篇幅限制下面就只能给大家展示小册部分内容了。包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题

 需要全套面试笔记的【点击此处即可】即可免费获取

2.2 线程与进程的区别

根本区别:进程是操作系统资源分配的基本单元,而线程是处理器任务调度的和执行的基本单位。
资源开销:每个进程都有自己独立的代码和空间(程序上下文),程序之间的切换会有较大的开销;线程可以看作轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
包含关系:如果一个进程内有多个线程,则执行的过程不是一条线的,而是多条线(多个线程),共同完成;线程是进程的一部分,可以把线程看作是轻量级的进程。
内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的。

2.3 用户线程与守护线程

用户(User)线程:运行在前台,执行具体任务,如程序的主线程,连接网络的子线程都是用户线程。
守护(Daemon)线程:运行在后台,为其它前台线程服务,也可以说守护线程是JVM非守护线程的”佣人“,一旦所有线程都执行结束,守护线程会随着JVM一起结束运行。
main函数就是一个用户线程,main函数启动时,同时JVM还启动了好多的守护线程,如垃圾回收线程,比较明显的区别时,用户线程结束,JVM退出,不管这个时候有没有守护线程的运行,都不会影响JVM的退出。

2.4 什么是线程死锁

死锁是指两个或两个以上进程(线程)在执行过程中,由于竞争资源或由于彼此通信造成的一种堵塞的现象,若无外力的作用下,都将无法推进,此时的系统处于死锁状态。
如图,线程A拥有的资源2,线程B拥有的资源1,此时线程A和线程B都试图去拥有资源1和资源2,但是它们的

标签:状态,面试题,调用,Java,2024,线程,方法,CPU,wait
From: https://blog.csdn.net/2401_87705318/article/details/143155450

相关文章

  • Spring AI : Java写人工智能的应用框架
    SpringAI:为Java开发者提供高效集成大模型能力的框架当前Java调用大模型时,面临缺乏优质AI应用框架的挑战。Spring作为资深的Java应用框架提供者,通过推出SpringAI来解决这一问题。它借鉴了langchain的核心理念,并结合了Java面向对象编程的特点,为开发者提供了统一且可灵活替换......
  • vue-springboot基于JavaWeb的智慧养老院管理系统的设计与实现 附源码
    目录项目介绍系统实现截图源码获取地址下载技术栈开发核心技术介绍:为什么选择最新的Vue与SpringBoot技术核心代码部分展示项目介绍该系统从三个对象:由管理员和家属、护工来对系统进行设计构建。主要功能包括:个人信息修改,对家属信息、护工信息、老人入住、外出报备、......
  • 2024.10.15第三节课
    一、Al是什么?通常我们会获得这样的解释:人工智能(AI)是计算机科学的一个分支,致力于创造能够模仿人类智能行为的机器或系统。这与教育学中的“智能“概念有些相似,但范围更广,包括感知、学习、推理、问题解决等能力。二、从教育者角度来理解AI1、规则基础系统•教学大纲和课程设置......
  • JavaScript从零学起 —— 数据类型(进阶篇6)
    说明:此文章用作个人学习记录,若有任何问题或建议欢迎大家在评论区讨论文章目录前言一、日期(Date)1.Date类型的定义2.创建Date3.常用方法4.日期格式化5.常见问题与解决方案二、正则表达式(RegExp)1.正则表达式的定义2.创建正则表达式3.匹配常用字符4.常......
  • Java中的控制结构中的顺序结构和分支结构
    文章目录前言1.顺序结构2.分支结构2.1选择语句if2.2if格式12.3if语句格式22.3if语句格式3if语句与三元运算符2.1选择语句switch前言我是一名来自延边大学人工智能专业的热爱街舞的大四学生,目前在学习Java,我会根据我的学习路线给大家分享学习经验,这章我们学习Java中......
  • Java项目中引入达梦数据库依赖驱动并且操作链接数据库
    本人详解作者:王文峰,参加过CSDN2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的Java开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯山峯转载说明:务必注明来源(注明:作者:王文峰哦)Java项目中引......
  • 【开源免费】基于SpringBoot+Vue.JS读书笔记共享平台(JAVA毕业设计)
    本文项目编号T029,文末自助获取源码\color{red}{T029,文末自助获取源码}......
  • 【开源免费】基于SpringBoot+Vue.JS母婴商城系统 (JAVA毕业设计)
    本文项目编号T030,文末自助获取源码\color{red}{T030,文末自助获取源码}......
  • 【JAVA】第二张_面向对象
    引言Java面向对象是一种编程方法论,它将软件系统看作是一组对象的集合,每个对象都有自己的状态和行为,并且能够相互之间进行通信和协作。java面向对象知识的思维导图1、面向对象思想面向对象(Object-Oriented)是一种编程思想和方法论,它的核心理念是将问题拆解成由对象组成的模......
  • 基于Java+Jsp+Ssm+Mysql实现的零食商城系统功能设计与实现一
    一、前言介绍:1.1项目摘要随着电子商务的快速发展和消费者购物习惯的改变,线上购物已成为人们日常生活中不可或缺的一部分。零食作为日常生活中常见的消费品,其线上销售市场也呈现出快速增长的趋势。零食商城系统的设计与实现,旨在满足消费者对零食的多样化、个性化需求,提供......