计算机类面试题目及答案范例.docx
《计算机类面试题目及答案范例.docx》由会员分享,可在线阅读,更多相关《计算机类面试题目及答案范例.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机类面试题目及答案Java多线程面试题目1、什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以运用多线程对运算密集型任务提速。比如,假如一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。2、线程和进程有什么区分?线程是进程的子集,一个进程可以有许多线程,每条线程并行执行不同的任务。不同的进程运用不同的内存空间,而全部的线程共享一片相同的内存空间。每个线程都拥有单独的栈内存用来存储本地数据。3、如何在Java中实现线程?两种方式:java.lang.Thread 类的实例就是一个线程
2、但是它须要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承java.lang.Thread 类或者干脆调用Runnable接口来重写run()方法实现线程。4、Java 关键字volatile 与 synchronized 作用与区分?Volatile:它所修饰的变量不保留拷贝,干脆访问主内存中的。在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。为了性能,一个线程会在自己的memory中保持要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一
3、个线程memory中的值,或者main memory中的值不一样的状况。 一个变量声明为volatile,就意味着这个变量是随时会被其他线程修改的,因此不能将它cache在线程memory中。synchronized:当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必需等待当前线程执行完这个代码块以后才能执行该代码块。二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,
4、另一个线程仍旧可以访问该object中的非synchronized(this)同步代码块。三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中全部其它synchronized(this)同步代码块的访问将被堵塞。四、当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象全部同步代码部分的访问都被短暂堵塞。五、以上规则对其它对象锁同样适用。5、有哪些不同的线程生命周期?当我们在Java程序中新建一个线程时,它的状态是New。当我
5、们调用线程的start()方法时,状态被变更为Runnable。线程调度器会为Runnable线程池中的线程安排CPU时间并且讲它们的状态变更为Running。其他的线程状态还有Waiting,Blocked 和Dead。6、你对线程优先级的理解是什么?每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权,但这依靠于线程调度的实现,这个实现是和操作系统相关的(OS dependent)。我们可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。线程优先级是一个int变量(从1-10),1代表最低优先级,10代表最高优先级。7、什么是死锁(Deadloc
6、k)?如何分析和避开死锁?死锁是指两个以上的线程恒久堵塞的状况,这种状况产生至少须要两个以上的线程和两个以上的资源。分析死锁,我们须要查看Java应用程序的线程转储。我们须要找出那些状态为BLOCKED的线程和他们等待的资源。每个资源都有一个唯一的id,用这个id我们可以找出哪些线程已经拥有了它的对象锁。避开嵌套锁,只在须要的地方运用锁和避开无限期等待是避开死锁的通常方法。8、什么是线程平安?Vector是一个线程平安类吗?假如你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。假如每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程平
7、安的。一个线程平安的计数器类的同一个实例对象在被多个线程运用的状况下也不会出现计算失误。很明显你可以将集合类分成两组,线程平安和非线程平安的。Vector 是用同步方法来实现线程平安的, 而和它相像的ArrayList不是线程平安的。9、Java中如何停止一个线程?Java供应了很丰富的API但没有为停止线程供应API。JDK 1.0原来有一些像stop(), suspend()和resume()的限制方法但是由于潜在的死锁威逼因此在后续的JDK版本中他们被弃用了,之后Java API的设计者就没有供应一个兼容且线程平安的方法来停止一个线程。当run()或者 call()方法执行完的时候线程会
8、自动结束,假如要手动结束一个线程,你可以用volatile 布尔变量来退出run()方法的循环或者是取消任务来中断线程。Kubernetes面试题及答案1、什么是Kubernetes?Kubernetes是一个开源容器管理工具,负责容器部署,容器扩缩容以及负载平衡。作为Google的创意之作,它供应了精彩的社区,并与全部云供应商合作。因此,我们可以说Kubernetes不是一个容器化平台,而是一个多容器管理解决方案。2、Kubernetes与Docker有什么关系?众所周知,Docker供应容器的生命周期管理,Docker镜像构建运行时容器。但是,由于这些单独的容器必需通信,因此运用Kuber
9、netes。因此,我们说Docker构建容器,这些容器通过Kubernetes相互通信。因此,可以运用Kubernetes手动关联和编排在多个主机上运行的容器。3、什么是Container Orchestration?考虑一个应用程序有5-6个微服务的场景。现在,这些微服务被放在单独的容器中,但假如没有容器编排就无法进行通信。因此,由于编排意味着全部乐器在音乐中和谐共处,所以类似的容器编排意味着各个容器中的全部服务协同工作以满意单个服务器的需求。4、Kubernetes如何简化容器化部署?由于典型应用程序将具有跨多个主机运行的容器集群,因此全部这些容器都须要相互通信。因此,要做到这一点,你须要
10、一些能够负载平衡,扩展和监控容器的东西。由于Kubernetes与云无关并且可以在任何公共/私有供应商上运行,因此必需是您简化容器化部署的选择。5、您对Kubernetes的集群了解多少?Kubernetes背后的基础是我们可以实施所需的状态管理,我的意思是我们可以供应特定配置的集群服务,并且集群服务将在基础架构中运行并运行该配置。因此,正如您所看到的,部署文件将具有供应给集群服务所需的全部配置。现在,部署文件将被供应给API,然后由集群服务确定如何在环境中支配这些pod,并确保正确运行的pod数量。因此,位于服务前面的API,工作节点和节点运行的Kubelet进程,共同构成了Kubernet
11、es集群。6、Kubernetes Architecture的不同组件有哪些?Kubernetes Architecture主要有两个组件 - 主节点和工作节点。如下图所示,master和worker节点中包含很多内置组件。主节点具有kube-controller-manager,kube-apiserver,kube-scheduler等。而工作节点具有在每个节点上运行的kubelet和kube-proxy。7、您能否介绍一下Kubernetes中主节点的工作状况?Kubernetes master限制容器存在的节点和节点内部。现在,这些单独的容器包含在容器内部和每个容器内部,您可以依据配置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 面试 题目 答案 范例
限制150内