Java核心面试宝典Day13面试官最爱问的“进程”面试题

Posted 灰小猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java核心面试宝典Day13面试官最爱问的“进程”面试题相关的知识,希望对你有一定的参考价值。

Hello,你好呀,我是灰小猿!一个超会写bug的程序猿!

用坚持缔造技术、用指尖敲动未来!
和很多小伙伴们一样,我也是一名奔波在Java道路上的“创造者”。也想靠技术来改未来,改变世界!因为我们坚信每一次敲动键盘都能让生活变得更智能、世界变得更有趣

在此专栏《Java核心面试宝典》记录我们备战梦想的【day 13】

前几天和大家一起总结了一些关于Java基础的相关面试题,但是这也只是其中的一部分,还有很多之后慢慢总结慢慢学习,今天呢,就来盘点一下在Java进程和线程控制上的一些面试题。

1、进程和线程有哪些联系?

进程是程序依次执行的过程,线程是比进程小的执行单位,一个进程在其执行过程中可以创建多个线程多个线程共享进程的堆和方法区内存资源

2、进程和线程的区别是什么?

进程和线程最大的区别是,进程是立的,而各个线程不一定独立,因为同一个进程中的多个线程很有可能相互影响,线程执行开销小,但不利于资源的管理和维护,进程开销较大,但是有利于资源的统一管理和维护。

3、线程的状态有几种,分别是什么状态?

线程的状态有6种,分别是初始状态运行状态阻塞状态等待状态超时等待状态终止状态

4、简述一下线程的6种状态?

  • 初始状态(NEW): 线程已经构建,但是尚未启动。
  • 运行状态(RUNNABLE): 包括就绪(READY)和运行中(RUNNING)两种状态,统称为运行状态。
  • 阻塞状态(BLOCKED): 线程被锁阻塞。
  • 等待状态(WAITING): 线程需要其他线程做出特定动作(通知或者中断)
  • 超时等待状态(TIME_WAITING): 不等同于等待状态,超时等待状态可以在指定的时间内自行返回。
  • 终止状态(TERMINATED): 当前线程已经执行完毕。

5、详细说一下等待状态和超时状态的区别?

和等待状态相比,超时等待状态增加了超时限制,当达到执行的超时时间后,线程将会自动返回到运行状态。

6、为什么需要使用多线程?

线程是程序执行的最小单位,多个线程同时运行可以减少线程上下文切换的开销,多线程是开发高并发系统的基础(即允许同一时间段执行多个任务),利用好多线程机制可以很好的提升系统的并发能力性能

7、多线程可能存在哪些问题?

多线程可能存在的问题包括内存泄漏上下文切换死锁以及受限于硬件和软件的资源限制问题等。

8、那么多线程中关键字synchronized解决的是什么问题呢?

关键字synchronized解决的是多个线程之间访问资源的同步性的问题。

9、关键字synchronized修饰实例方法、静态方法和代码块时,分别是什么含义?

修饰实例方法时,会给当前对象实例加锁;
修饰静态方法时,会给当前类加锁;
修饰代码块时,会给指定对象加锁,进入同步代码/代码块之前需要获得当前对象/当前类/指定对象的锁。

10、关键字volatile有哪两个作用?

关键字volatile的作用是保证变量的可见性,以及防止指令进行重排序优化

11、关键字volatile的使用需要满足什么条件?

使用关键字volatile的变量必须满足两个条件。

一是对变量的写入操作不依赖于变量的的当前值。能够确保只有单个线程更新变量的值。
二是该变量没有包含在具有其他变量的不变式中。

12、说一说关键字synchronized和volatile的区别?

关键字 volatile 是线程同步的轻量级实现,不需要加锁,因此性能优于关键字 synchronized。

关键字 synchronized 可以修饰方法和代码块,关键字 volatile 只能修饰变量。

关键字 synchronized 可能发生阻塞,关键字 volatile 不会发生阻塞。

关键字 synchronized 可以保证数据的可见性和原子性,关键字 volatile 只能保证数据的可见性,不能保证数据的原子性。

关键字 synchronized 解决的是多个线程之间访问资源的同步性,关键字 volatile 解决的是变量在多个线程之间的可见性。

今日总结

多线程相关的考察可以说是面试中必问的内容,尤其是对线程原理、synchronized关键字的使用和线程常见问题的考察。

这方面的题目比较多,所以如果小伙伴们有遇到其他相关的面试题,欢迎在评论区留言提出,我会把大家提出的总结到文章内`, 欢迎小伙伴们一起评论区打卡学习!小伙伴们可也在左方加我好友一起探讨学习!

我是灰小猿,我们下期见!

以上是关于Java核心面试宝典Day13面试官最爱问的“进程”面试题的主要内容,如果未能解决你的问题,请参考以下文章

好友给我分享了一份面试官最爱问的Java面试题

好友给我分享了一份面试官最爱问的Java面试题,你值得拥有!

Java面试官最爱问的volatile关键字

Java核心面试宝典Day21面试官:如果你访问一个网站很慢,怎么排查和解决?

优普攻略丨Java面试官最爱问的volatile关键字

优普分享丨Java面试官最爱问的volatile关键字