![计算机类面试题目及答案_第1页](http://file4.renrendoc.com/view/c28d3d4e24d00ac40f173073d897f3d0/c28d3d4e24d00ac40f173073d897f3d01.gif)
![计算机类面试题目及答案_第2页](http://file4.renrendoc.com/view/c28d3d4e24d00ac40f173073d897f3d0/c28d3d4e24d00ac40f173073d897f3d02.gif)
![计算机类面试题目及答案_第3页](http://file4.renrendoc.com/view/c28d3d4e24d00ac40f173073d897f3d0/c28d3d4e24d00ac40f173073d897f3d03.gif)
![计算机类面试题目及答案_第4页](http://file4.renrendoc.com/view/c28d3d4e24d00ac40f173073d897f3d0/c28d3d4e24d00ac40f173073d897f3d04.gif)
![计算机类面试题目及答案_第5页](http://file4.renrendoc.com/view/c28d3d4e24d00ac40f173073d897f3d0/c28d3d4e24d00ac40f173073d897f3d05.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 PAGE15 页 共 NUMPAGES15 页计算机类面试题目及答案Java多线程面试题目1、什么是线程?线程是操作系统可以进展运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进展多处理器编程,你可以使用多线程对运算密集型任务提速。比方,假如一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。2、线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片一样的内存空间。每个线程都拥有单独的栈内存用来存储本地数据。3、如何在Java中实现线程?两种方式:ja
2、va.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承java.lang.Thread 类或者直接调用Runnable接口来重写run方法实现线程。4、Java 关键字volatile 与 synchronized 作用与区别?Volatile:它所修饰的变量不保存拷贝,直接访问主内存中的。在Java内存模型中,有main memory,每个线程也有自己的memory (例如存放器)。为了性能,一个线程会在自己的memory中保持要访问的变量的副本。这样就会出现同一个变量在某个瞬
3、间,在一个线程的memory中的值可能与另外一个线程memory中的值,或者main memory中的值不一致的情况。 一个变量声明为volatile,就意味着这个变量是随时会被其他线程修改的,因此不能将它cache在线程memory中。synchronized:当它用来修饰一个方法或者一个代码块的时候,可以保证在同一时刻最多只有一个线程执行该段代码。一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。二、然而,当一个线程访问object的一个sy
4、nchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。四、当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码局部的访问都被暂时阻塞。五、以上规那么对其它对象锁同样适用。5、有哪些不同的线程生命周期?当我们在Ja
5、va程序中新建一个线程时,它的状态是New。当我们调用线程的start方法时,状态被改变为Runnable。线程调度器会为Runnable线程池中的线程分配CPU时间并且讲它们的状态改变为Running。其他的线程状态还有Waiting,Blocked 和Dead。6、你对线程优先级的理解是什么?每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权,但这依赖于线程调度的实现,这个实现是和操作系统相关的(OS dependent)。我们可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。线程优先级是一个int变量(从1-10),1代表最低优先级,10代
6、表最高优先级。7、什么是死锁(Deadlock)?如何分析p 和防止死锁?死锁是指两个以上的线程永远阻塞的情况,这种情况产生至少需要两个以上的线程和两个以上的资。分析p 死锁,我们需要查看Java应用程序的线程转储。我们需要找出那些状态为BLOCKED的线程和他们等待的资。每个资都有一个唯一的id,用这个id我们可以找出哪些线程已经拥有了它的对象锁。防止嵌套锁,只在需要的地方使用锁和防止无限期等待是防止死锁的通常方法。8、什么是线程平安?Vector是一个线程平安类吗?假如你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。假如每次运行结果和单线程运行的结果是一样的,而
7、且其他的变量的值也和预期的是一样的,就是线程平安的。一个线程平安的计数器类的同一个实例对象在被多个线程使用的情况下也不会出现计算失误。很显然你可以将集合类分成两组,线程平安和非线程平安的。Vector 是用同步方法来实现线程平安的, 而和它相似的ArrayList不是线程平安的。9、Java中如何停顿一个线程?Java提供了很丰富的API但没有为停顿线程提供API。JDK 1.0本来有一些像stop, suspend和resume的控制方法但是由于潜在的死锁威胁因此在后续的JDK版本中他们被弃用了,之后Java API的设计者就没有提供一个兼容且线程平安的方法来停顿一个线程。当run或者 ca
8、ll方法执行完的时候线程会自动完毕,假如要手动完毕一个线程,你可以用volatile 布尔变量来退出run方法的循环或者是取消任务来中断线程。Kuberes面试题及答案1、什么是Kuberes?Kuberes是一个开容器管理工具,负责容器部署,容器扩缩容以及负载平衡。作为Google的创意之作,它提供了出色的社区,并与所有云提供商合作。因此,我们可以说Kuberes不是一个容器化平台,而是一个多容器管理解决方案。2、Kuberes与Docker有什么关系?众所周知,Docker提供容器的生命周期管理,Docker镜像构建运行时容器。但是,由于这些单独的容器必须通信,因此使用Kuberes。因此
9、,我们说Docker构建容器,这些容器通过Kuberes互相通信。因此,可以使用Kuberes手动关联和编排在多个主机上运行的容器。3、什么是Container Orchestration?考虑一个应用程序有5-6个微效劳的场景。如今,这些微效劳被放在单独的容器中,但假如没有容器编排就无法进展通信。因此,由于编排意味着所有乐器在音乐中和谐共处,所以类似的容器编排意味着各个容器中的所有效劳协同工作以满足单个效劳器的需求。4、Kuberes如何简化容器化部署?由于典型应用程序将具有跨多个主机运行的容器集群,因此所有这些容器都需要互相通信。因此,要做到这一点,你需要一些可以负载平衡,扩展和监控容器的
10、东西。由于Kuberes与云无关并且可以在任何公共/私有提供商上运行,因此必须是您简化容器化部署的选择。5、您对Kuberes的集群理解多少?Kuberes背后的根底是我们可以施行所需的状态管理,我的意思是我们可以提供特定配置的集群效劳,并且集群效劳将在根底架构中运行并运行该配置。因此,正如您所看到的,部署文件将具有提供应集群效劳所需的所有配置。如今,部署文件将被提供应API,然后由集群效劳决定如何在环境中安排这些pod,并确保正确运行的pod数量。因此,位于效劳前面的API,工作节点和节点运行的Kubelet进程,共同构成了Kuberes集群。6、Kuberes Architecture的不
11、同组件有哪些?Kuberes Architecture主要有两个组件 - 主节点和工作节点。如以下图所示,master和worker节点中包含许多内置组件。主节点具有kube-controller-manager,kube-apiserver,kube-scheduler等。而工作节点具有在每个节点上运行的kubelet和kube-proxy。7、您能否介绍一下Kuberes中主节点的工作情况?Kuberes master控制容器存在的节点和节点内部。如今,这些单独的容器包含在容器内部和每个容器内部,您可以根据配置和要求拥有不同数量的容器。因此,假如必须部署pod,那么可以使用用户界面或命令行
12、界面部署它们。然后,在节点上调度这些pod,并根据资需求,将pod分配给这些节点。kube-apiserver确保在Kuberes节点和主组件之间建立通信。8、kube-apiserver和kube-scheduler的作用是什么?kube -apiserver遵循横向扩展架构,是主节点控制面板的前端。这将公开Kuberes主节点组件的所有API,并负责在Kuberes节点和Kuberes主组件之间建立通信。kube-scheduler负责工作节点上工作负载的分配和管理。因此,它根据资需求选择最适宜的节点来运行未调度的pod,并跟踪资利用率。它确保不在已满的节点上调度工作负载。9、你对Kube
13、res的负载平衡器有什么理解?负载平衡器是暴露效劳的最常见和标准方式之一。根据工作环境使用两种类型的负载平衡器,即内部负载平衡器或外部负载平衡器。内部负载平衡器自动平衡负载并使用所需配置分配容器,而外部负载平衡器将流量从外部负载引导至后端容器。10、Replica Set 和 Replication Controller之间有什么区别?Replica Set 和 Replication Controller几乎完全一样。它们都确保在任何给定时间运行指定数量的pod副本。不同之处在于复制pod使用的选择器。Replica Set使用基于集合的选择器,而Replication Controller
14、使用基于权限的选择器。Equity-Based选择器:这种类型的选择器允许按标签键和值进展过滤。因此,在外行术语中,基于Equity的选择器将仅查找与标签具有完全一样短语的pod。例如:假设您的标签键表示app = nginx,那么,使用此选择器,您只能查找标签应用程序等于nginx的那些pod。Selector-Based选择器:此类型的选择器允许根据一组值过滤键。因此,换句话说,基于Selector的选择器将查找已在集合中提及其标签的pod。例如:假设您的标签键在(nginx,NPS,Apache)中显示应用程序。然后,使用此选择器,假如您的应用程序等于任何nginx,NPS或Apache
15、,那么选择器将其视为真实结果。Tomcat面试题及答案一、Tomcat 的缺省端口是多少,怎么修改?1)找到 Tomcat 目录下的 conf 文件夹2)进入 conf 文件夹里面找到 server.xml 文件3)翻开 server.xml 文件4)在 server.xml 文件里面找到以下信息port=“8080”改成你想要的端口二、tomcat 有哪几种 Connector 运行形式(优化)?bio:传统的 Java I/O 操作,同步且阻塞 IO。maxThreads=”150”/Tomcat 使用线程来处理接收的每个恳求。这个值表示Tomcat 可创立的最大的线程数。默认值 200。
16、可以根据机器的时期性能和内存大小调整,一般可以在 400-500。最大可以在 800 左右。minSpareThreads=”25”Tomcat 初始化时创立的线程数。默认值 4。假如当前没有空闲线程,且没有超过 maxThreads,一次性创立的空闲线程数量。Tomcat 初始化时创立的线程数量也由此值设置。maxSpareThreads=”75”一旦创立的线程超过这个值,Tomcat 就会关闭不再需要的 socket 线程。默认值 50。一旦创立的线程超过此数值,Tomcat 会关闭不再需要的线程。线程数可以大致上用 “同时在线人数每秒用户操作次数系统平均操作时间” 来计算。acceptC
17、ount=”100”-指定当所有可以使用的处理恳求的线程数都被使用 时,可以放到处理队列中的恳求数,超过这个数的恳求将不予处理。默认值 10。假如当前可用线程数为 0,那么将恳求放入处理队列中。这个值限定了恳求队列的大小,超过这个数值的恳求将不予处理。connectionTimeout=”20000”网络连接超时,默认值 20000,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。nio:JDK1.4 开场支持,同步阻塞或同步非阻塞 IO。指定使用 NIO 模型来承受 恳求恳求。默认是 BlockingIO,配置为 protocol=”/1.1” acc
18、eptorThreadCount=”2” 使用 NIO 模型时接收线程的数目aio(nio.2):JDK7 开场支持,异步非阻塞 IO。apr:Tomcat 将以 JNI 的形式调用 Apache 效劳器的核心动态链接库来处理文件读取或网络传输操作,从而大大地 进步 Tomcat 对静态文件的处理性能。三、Tomcat 有几种部署方式?1)直接把 Web 工程放在 webapps 下,Tomcat 会自动将其部署2)在 server.xml 文件上配置节点,设置相关的属性即可3)通过 Catalina 来进展配置:进入到 confCatalinalocalhost 文件下,创立一个xml 文件
19、,该文件的名字就是站点的名字。编写 XML 的方式来进展设置。四、tomcat 容器是如何创立 servlet 类实例?用到了什么原理?当容器启动时,会读取在 webapps 目录下所有的 web 应用中的 web.xml 文件,然后对 xml 文件进展解析,并读取 servlet 注册信息。然后,将每个应用中注册的 servlet 类都进展加载, 并通过反射的方式实例化。(有时候也是在第一次恳求时实例化)在 servlet 注册时加上假如为正数,那么在一开场就实例化,假如不写或为负数,那么第一次恳务实例化。五、tomcat 如何优化?1、优化连接配置.这里以 tomcat7 的参数配置为例,需要修改 conf/server.xml文件,修改连接数,关闭客户端 dns 查询。参数解释:URIEncoding=”UTF-8:使得 tomc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年点火线圈项目申请报告模范
- 2025年建筑行业策划策略与绿色施工协议书
- 2025年子女监护权策划补充协议的法律效力分析
- 2025年医疗器械供应与医疗服务合作框架协议
- 2025年先进汽车修理设施租赁合同
- 2025年停车场地承包经营协议范本
- 2025年劳动者家庭医疗保健策划与子女援助协议
- 2025年争斗赔偿和解协议格式
- 2025年合作导师协议范本
- 2025年农业发展公司技术咨询服务合同范本
- 无菌技术操作-PPT课件
- 公司办公室5S管理规定(实用含图片)
- 人教版小学五年级数学下册教材解读
- JTT888-2020公共汽车类型划分及等级评定_(高清-最新)
- 某天然气公司场站设备管理制度
- 临时码头施工方案
- 汶川地震灾后恢复重建生产力布局和产业调整专项规划
- 教师专业发展与职业生涯规划优秀课件
- 电力工程施工单位如何提升管理办法
- 商场撤场申请书
- 《建筑固定消防设施》PPT课件
评论
0/150
提交评论