计算机类面试题目及答案

更新时间:2024-03-29 06:16:49 阅读: 评论:0

2024年3月29日发(作者:系统软件主要包括)

计算机类面试题目及答案

计算机类面试题目及答案

Java多线程面试题目

1、什么是线程?

线程是操作系统可以进展运算调度的最小单位,它被包含

在进程之中,是进程中的实际运作单位。程序员可以通过它进

展多处理器编程,你可以使用多线程对运算密集型任务提速。

比方,假如一个线程完成一个任务要100毫秒,那么用十个线

程完成改任务只需10毫秒。

2、线程和进程有什么区别?

线程是进程的子集,一个进程可以有很多线程,每条线程

并行执行不同的任务。不同的进程使用不同的内存空间,而所

有的线程共享一片一样的内存空间。每个线程都拥有单独的栈

内存用来存储本地数据。

3、如何在Java中实现线程?

两种方式:

类的实例就是一个线程但是它需要调用

le接口来执行,由于线程类本身就是调用

的Runnable接口所以你可以继承

第 1 页 共 14 页

类或者直接调用Runnable接口来重写run方法实现线

程。

4、Java 关键字volatile 与 synchronized 作用与区别?

Volatile:

它所修饰的变量不保存拷贝,直接访问主内存中的。

在Java内存模型中,有main memory,每个线程也有自

己的memory

(例如存放器)。为了性能,一个线程会在自己的memory

中保持要访问的变量的副本。这样就会出现同一个变量在某个

瞬间,在一个线程的memory中的值可能与另外一个线程

memory中的值,或者main

memory中的值不一致的情况。 一个变量声明为

volatile,就意味着这个变量是随时会被其他线程修改的,因

此不能将它cache在线程memory中。

synchronized:

当它用来修饰一个方法或者一个代码块的时候,可以保证

在同一时刻最多只有一个线程执行该段代码。

一、当两个并发线程访问同一个对象object中的这个

synchronized(this)同步代码块时,一个时间内只能有一个线

程得到执行。另一个线程必须等待当前线程执行完这个代码块

以后才能执行该代码块。

第 2 页 共 14 页

二、然而,当一个线程访问object的一个

synchronized(this)同步代码块时,另一个线程仍然可以访问

该object中的非synchronized(this)同步代码块。

三、尤其关键的是,当一个线程访问object的一个

synchronized(this)同步代码块时,其他线程对object中所

有其它synchronized(this)同步代码块的访问将被阻塞。

四、当一个线程访问object的一个synchronized(this)

同步代码块时,它就获得了这个object的对象锁。结果,其

它线程对该object对象所有同步代码局部的访问都被暂时阻

塞。

五、以上规那么对其它对象锁同样适用。

5、有哪些不同的线程生命周期?

当我们在Java程序中新建一个线程时,它的状态是

New。当我们调用线程的start方法时,状态被改变为

Runnable。线程调度器会为Runnable线程池中的线程分配

CPU时间并且讲它们的状态改变为Running。其他的线程状态

还有Waiting,Blocked

和Dead。

6、你对线程优先级的理解是什么?

第 3 页 共 14 页

每一个线程都是有优先级的,一般来说,高优先级的线程

在运行时会具有优先权,但这依赖于线程调度的实现,这个实

现是和操作系统相关的(OS

dependent)。

我们可以定义线程的优先级,但是这并不能保证高优先级

的线程会在低优先级的线程前执行。线程优先级是一个int变

量(从1-10),1代表最低优先级,10代表最高优先级。

7、什么是死锁(Deadlock)?如何分析^p 和防止死锁?

死锁是指两个以上的线程永远阻塞的情况,这种情况产生

至少需要两个以上的线程和两个以上的资。

分析^p 死锁,我们需要查看Java应用程序的线程转

储。我们需要找出那些状态为BLOCKED的线程和他们等待的

资。每个资都有一个唯一的id,用这个id我们可以找出哪些

线程已经拥有了它的对象锁。

防止嵌套锁,只在需要的地方使用锁和防止无限期等待是

防止死锁的通常方法。

8、什么是线程平安?Vector是一个线程平安类吗?

假如你的代码所在的进程中有多个线程在同时运行,而这

些线程可能会同时运行这段代码。假如每次运行结果和单线程

运行的结果是一样的,而且其他的变量的值也和预期的是一样

的,就是线程平安的。

第 4 页 共 14 页

一个线程平安的计数器类的同一个实例对象在被多个线程

使用的情况下也不会出现计算失误。很显然你可以将集合类分

成两组,线程平安和非线程平安的。Vector

是用同步方法来实现线程平安的, 而和它相似的

ArrayList不是线程平安的。

9、Java中如何停顿一个线程?

Java提供了很丰富的API但没有为停顿线程提供API。

JDK 1.0本来有一些像stop,

suspend和resume的控制方法但是由于潜在的死锁威胁

因此在后续的JDK版本中他们被弃用了,之后Java

API的设计者就没有提供一个兼容且线程平安的方法来停

顿一个线程。

当run或者 call方法执行完的时候线程会自动完毕,假

如要手动完毕一个线程,你可以用volatile

布尔变量来退出run方法的循环或者是取消任务来中断线

程。

Kuberes面试题及答案

1、什么是Kuberes?

Kuberes是一个开容器管理工具,负责容器部署,容器扩

缩容以及负载平衡。作为Google的创意之作,它提供了出色

第 5 页 共 14 页

的社区,并与所有云提供商合作。因此,我们可以说Kuberes

不是一个容器化平台,而是一个多容器管理解决方案。

2、Kuberes与Docker有什么关系?

众所周知,Docker提供容器的生命周期管理,Docker镜

像构建运行时容器。但是,由于这些单独的容器必须通信,因

此使用Kuberes。因此,我们说Docker构建容器,这些容器

通过Kuberes互相通信。因此,可以使用Kuberes手动关联和

编排在多个主机上运行的容器。

3、什么是Container Orchestration?

考虑一个应用程序有5-6个微效劳的场景。如今,这些微

效劳被放在单独的容器中,但假如没有容器编排就无法进展通

信。因此,由于编排意味着所有乐器在音乐中和谐共处,所以

类似的容器编排意味着各个容器中的所有效劳协同工作以满足

单个效劳器的需求。

4、Kuberes如何简化容器化部署?

由于典型应用程序将具有跨多个主机运行的容器集群,因

此所有这些容器都需要互相通信。因此,要做到这一点,你需

要一些可以负载平衡,扩展和监控容器的东西。由于Kuberes

与云无关并且可以在任何公共/私有提供商上运行,因此必须

是您简化容器化部署的选择。

5、您对Kuberes的集群理解多少?

第 6 页 共 14 页

Kuberes背后的根底是我们可以施行所需的状态管理,我

的意思是我们可以提供特定配置的集群效劳,并且集群效劳将

在根底架构中运行并运行该配置。

因此,正如您所看到的,部署文件将具有提供应集群效劳

所需的所有配置。如今,部署文件将被提供应API,然后由集

群效劳决定如何在环境中安排这些pod,并确保正确运行的

pod数量。

因此,位于效劳前面的API,工作节点和节点运行的

Kubelet进程,共同构成了Kuberes集群。

6、Kuberes Architecture的不同组件有哪些?

Kuberes Architecture主要有两个组件 -

主节点和工作节点。如以下图所示,master和worker节

点中包含许多内置组件。主节点具有kube-controller-

manager,kube-apirver,kube-scheduler等。而工作节点

具有在每个节点上运行的kubelet和kube-proxy。

7、您能否介绍一下Kuberes中主节点的工作情况?

Kuberes

master控制容器存在的节点和节点内部。如今,这些单

独的容器包含在容器内部和每个容器内部,您可以根据配置和

要求拥有不同数量的容器。

第 7 页 共 14 页

计算机类面试题目及答案

本文发布于:2024-03-29 06:16:48,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1711664209176137.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:计算机类面试题目及答案.doc

本文 PDF 下载地址:计算机类面试题目及答案.pdf

下一篇:返回列表
标签:线程   容器   运行   效劳   节点   提供
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|