计算机方向的面试题目有哪些_第1页
计算机方向的面试题目有哪些_第2页
计算机方向的面试题目有哪些_第3页
计算机方向的面试题目有哪些_第4页
计算机方向的面试题目有哪些_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机方向的面试题目有哪些面试是每个人都会经历的事情,在面试前我们应该做好充分的准备,可以提早看看一些面试题目,提早做好准备。下面给大家带来2022计算机方向的面试题目有哪些,希望能帮助到大家!

ActiveMQ面试题目

1、什么是ActiveMQ?

activeMQ是一种开源的,实现了JMS1.1标准的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和平安的企业级消息通信。

2、Activemq的瓶颈值

根据网上一般评测文档上来看,每秒的消息吞吐在2000以上,acticemq也可以集群化部署,也是使用zookeeper来搭建。

3、ActiveMQ效劳器宕机怎么办?

这得从ActiveMQ的储存机制说起。在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的,它们的最大限制在配置文件的节点中配置。

但是,在非持久化消息堆积到一定程度,内存告急的时候,ActiveMQ会将内存中的非持久化消息写入临时文件中,以腾出内存。虽然都保存到了文件里,但它和持久化消息的区别是,重启后持久化消息会从文件中恢复,非持久化的临时文件会直接删除。

那假如文件增大到达了配置中的最大限制的时候会发生什么?我做了以下实验:

设置2G左右的持久化文件限制,大量消费持久化消息直到文件到达最大限制,此时消费者阻塞,但消费者可正常连接并消费消息,等消息消费掉一部分,文件删除又腾出空间之后,消费者又可继续发送消息,效劳自动恢复正常。

设置2G左右的临时文件限制,大量消费非持久化消息并写入临时文件,在到达最大限制时,消费者阻塞,消费者可正常连接但不能消费消息,或者本来慢速消费的消费者,消费突然停顿。整个系统可连接,但是无法提供效劳,就这样挂了。

详细原因不详,解决方案:尽量不要用非持久化消息,非要用的话,将临时文件限制尽可能的调大。

4、AcitveMQ的作用、原理?(消费者、消费者。p2p、订阅实现流程)

Activemq的作用就是系统之间进展通信。当然可以使用其他方式进展系统间通信,假如使用Activemq的话可以对系统之间的调用进展解耦,实现系统间的异步通信。原理就是消费者消费消息,把消息发送给activemq。Activemq接收到消息,然后查看有多少个消费者,然后把消息转发给消费者,此过程中消费者无需参与。消费者接收到消息后做相应的处理和消费者没有任何关系

5、activemq在工程中如何应用的

Activemq在工程中主要是完成系统之间通信,并且将系统之间的调用进展解耦。例如在添加、修改商品信息后,需要将商品信息同步到索引库、同步缓存中的数据以及生成静态页面一系列操作。

在此场景下就可以使用activemq。一旦后台对商品信息进展修改后,就向activemq发送一条消息,然后通过activemq将消息发送给消息的消费端,消费端接收到消息可以进展相应的业务处理

7、rabbitmq如何实现集群高可用?

集群是保证效劳可靠性的一种方式,同时可以通过程度扩展以提升消息吞吐才能。RabbitMQ是用分布式程序设计语言erlang开发的,所以天生就支持集群。接下来,将介绍RabbitMQ分布式消息处理方式、集群形式、节点类型,并动手搭建一个高可用集群环境,最后通过java程序来验证集群的高可用性。

RabbitMQ分布式的消息处理方式有以下三种:

(1)Clustering:不支持跨网段,各节点需运行同版本的Erlang和RabbitMQ,应用于同网段局域网。

(2)Federation:允许单台效劳器上的Exchange或Queue接收发布到另一台效劳器上Exchange或Queue的消息,应用于广域网。

(3)Shovel:与Federation类似,但工作在更低层次。

RabbitMQ对网络延迟很敏感,在LAN环境建议使用clustering方式;在WAN环境中,那么使用Federation或Shovel。我们平时说的RabbitMQ集群,说的就是clustering方式,它是RabbitMQ内嵌的一种消息处理方式,而Federation或Shovel那么是以plugin形式存在。

8、丢消息怎么办?

这得从java的.SocketException异常说起。简单点说就是当网络发送方发送一堆数据,然后调用close关闭连接之后。这些发送的数据都在接收者的缓存里,接收者假如调用read方法仍旧能从缓存中读取这些数据,尽管对方已经关闭了连接。

但是当接收者尝试发送数据时,由于此时连接已关闭,所以会发生异常,这个很好理解。不过需要注意的是,当发生SocketException后,本来缓存区中数据也作废了,此时接收者再次调用read方法去读取缓存中的数据,就会报Software

causedconnectionabort:recvfailed错误。

通过抓包得知,ActiveMQ会每隔10秒发送一个心跳包,这个心跳包是效劳器发送给客户端的,用来判断客户端死没死。假如你看过上面第一条,就会知道非持久化消息堆积到一定程度会写到文件里,这个写的过程会阻塞所有动作,而且会持续20到30秒,并且随着内存的增大而增大。

当客户端发完消息调用connection.close()时,会期待效劳器对于关闭连接的答复,假如超过15秒没答复就直接调用socket层的close关闭tcp连接了。这时客户端发出的消息其实还在效劳器的缓存里等待处理,不过由于效劳器心跳包的设置,导致发生了.SocketException异常,把缓存里的数据作废了,没处理的消息全部丧失。

解决方案:用持久化消息,或者非持久化消息及时处理不要堆积,或者启动事务,启动事务后,mit()方法会负责任的等待效劳器的返回,也就不会关闭连接导致消息丧失了。

RabbitMQ面试题目

一、什么是RabbitMQ?

采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了效劳之间的高度解耦。

二、为什么要使用RabbitMQ?

①在分布式系统下具备异步,削峰,负载平衡等一系列高级功能;

②拥有持久化的机制,进程消息,队列中的信息也可以保存下来。

③实现消费者和消费者之间的解耦。

④对于高并发场景下,利用消息队列可以使得同步访问变为串行访问到达一定量的限流,利于数据库的操作。

⑤可以使用消息队列到达异步下单的效果,排队中,后台进展逻辑下单。

三、RabbitMQ的使用场景有哪些?

①跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式。

②多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更合适作为多个应用之间的松耦合的接口。基于消息队列的耦合,不需要发送方和接收方同时在线。在企业应用集成(EAI)中,文件传输,共享数据库,消息队列,远程过程调用都可以作为集成的方法。

③应用内的同步变异步,比方订单处理,就可以由前端应用将订单信息放到队列,后端应用从队列里依次获得消息处理,顶峰时的大量订单可以积压在队列里渐渐处理掉。由于同步通常意味着阻塞,而大量线程的阻塞会降低计算机的性能。

④消息驱动的架构(EDA),系统分解为消息队列,和消息制造者和消息消费者,一个处理流程可以根据需要拆成多个阶段(Stage),阶段之间用队列连接起来,前一个阶段处理的结果放入队列,后一个阶段从队列中获取消息继续处理。

⑤应用需要更灵敏的耦合方式,如发布订阅,比方可以指定路由规那么。

⑥跨局域网,甚至跨城市的通讯(CDN行业),比方北京机房与广州机房的应用程序的通信。

四、RabbitMQ有哪些重要的角色?

RabbitMQ中重要的角色有:消费者、消费者和代理:

①消费者:消息的创立者,负责创立和推送数据到消息效劳器;

②消费者:消息的接收方,用于处理数据和确认消息;

③代理:就是RabbitMQ本身,用于扮演“快递〞的角色,本身不消费消息,只是扮演“快递〞的角色。

五、如何确保消息正确地发送至RabbitMQ?如何确保消息接收方消费了消息?

1、发送方确认形式

①将信道设置成confirm形式(发送方确认形式),那么所有在信道上发布的消息都会被指派一个唯一的ID。

②一旦消息被投递到目的队列后,或者消息被写入磁盘后(可持久化的消息),信道会发送一个确认给消费者(包含消息唯一ID)。

③假如RabbitMQ发生内部错误从而导致消息丧失,会发送一条nack(notacknowledged,未确认)消息。

④发送方确认形式是异步的,消费者应用程序在等待确认的同时,可以继续发送消息。当确认消息到达消费者应用程序,消费者应用程序的回调方法就会被触发来处理确认消息。

2、接收方确认机制

①消费者接收每一条消息后都必须进展确认(消息接收和消息确认是两个不同操作)。只有消费者确认了消息,RabbitMQ

才能平安地把消息从队列中删除。

②这里并没有用到超时机制,RabbitMQ仅通过Consumer的连接中断来确认是否需要重新发送消息。也就是说,只要连接不中断,RabbitMQ给了Consumer足够长的时间来处理消息。保证数据的最终一致性。

3、下面罗列几种特殊情况

①假如消费者接收到消息,在确认之前断开了连接或取消订阅,RabbitMQ会认为消息没有被分发,然后重新分发给下一个订阅的消费者。(可能存在消息重复消费的隐患,需要去重)

②假如消费者接收到消息却没有确认消息,连接也未断开,那么RabbitMQ认为该消费者繁忙,将不会给该消费者分发更多的消息。

六、RabbitMQ怎么防止消息丧失?

①消息持久化;

②ACK确认机制;

③设置集群镜像形式;

④消息补偿机制。

七、要保证消息持久化成功的条件有哪些?

①声明队列必须设置持久化durable设置为true。

②消息推送投递形式必须设置持久化,deliveryMode设置为2(持久)。

③消息已经到达持久化交换器。

④消息已经到达持久化队列。

以上四个条件都满足才能保证消息持久化成功。

八、RabbitMQ持久化有什么缺点?

持久化的缺地就是降低了效劳器的吞吐量,因为使用的是磁盘而非内存存储,从而降低了吞吐量。可尽量使用ssd硬盘来缓解吞吐量的问题。

九、RabbitMQ有几种播送类型?

三种播送形式:

①fanout:所有bind到此exchange的queue都可以接收消息(纯播送,绑定到RabbitMQ的承受者都能收到消息);

②direct:通过routingKey和exchange决定的那个唯一的queue可以接收消息;

③topic:所有符合routingKey(此时可以是一个表达式)的routingKey所bind的queue可以接收消息;

十、RabbitMQ中vhost的作用是什么?

vhost可以理解为虚拟broker,即mini-RabbitMQserver。其内部均含有独立的

queue、exchange和binding等,但最最重要的是,其拥有独立的权限系统,可以做到vhost

范围的用户控制。当然,从RabbitMQ的全局角度,vhost可以作为不同权限隔离的手段(一个典型的例子就是不同的应用可以跑在不同的vhost中)。

关于Tomcat的13道面试题

一、什么是Tomcat?

Tomcat简单的说就是一个运行JAVA的网络效劳器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。

二、tomcat构造目录有哪些?

①bin:启动和关闭tomcat的bat文件。

②conf:配置文件。

③server.xml该文件用于配置server相关的信息,比方tomcat启动的端口号,配置主机(Host)。

④web.xml文件配置与web应用(web应用相当于一个web站点)

⑤tomcat-user.xml配置用户名密码和相关权限。

⑥lib:该目录放置运行tomcat运行需要的jar包。

⑦logs:存放日志,当我们需要查看日志的时候,可以查询信息。

⑧webapps:放置我们的web应用。

⑨work工作目录:该目录用于存放jsp被访问后生成对应的server文件和.class文件。

三、如何配置Tomcat虚拟目录?

1、在server.xml中的节点下添加如下代码。path表示的是访问时输入的web工程名,docBase表示的是站点目录的绝对途径。

2、进入到confCatalinalocalhost文件下,创立一个xml文件,该文件的名字就是站点的名字。

四、Tomcat体系构造是怎样的?

阅读器->tomcatserver->service->connector->engine(引擎)->

host(主机)->web应用。

五、Web恳求在Tomcat恳求中的恳求流程是怎么样的?

①阅读器输入URL地址;

②查询本机hosts文件寻找IP;

③查询DNS效劳器寻找IP;

④向该IP发送Http恳求;

⑤Tomcat容器解析主机名;

⑥Tomcat容器解析Web应用;

⑦Tomcat容器解析资源名称;

⑧Tomcat容器获取资源;

⑨Tomcat响应阅读器。

六、如何在tomcat集群中实现Session共享

Apache集群实现Tomcat的Session共享配置其实很简单,在Tomcat自带的文档中有详细的说明(

/docs/cluster-howto.html),只不过是英语的,所以结合下面根据说下怎么配置吧:

1、既然是集群肯定要多准备几个Tomcat来模拟,比方分别为Tomcat01、Tomcat02、Tomcat03。

假如各Tomcat程序放在不同的机器上,那么就不会有端口的冲突。假如是放在同一台机器上的话,那就简单改几个端口,防止端口占用造成的冲突。翻开conf文件夹中的server.xml文件,需要修改的端口有:

1、

2、

3、

以上port需要修改,至于修改成什么样子,看你自己了,只要不出现端口冲突就可以了,要保证各个Tomcat实例间没有端口冲突。

七、tomcat有哪些Connector?

Tomcat的Web效劳器连接器支持两种协议:AJP和HTTP,它们均定义了以二进制格式在Web效劳器和Tomcat之间进展数据传输,并提供相应的控制命令。

AJP(ApacheJServ

Protocol)协议:目前正在使用的AJP协议的版本是通过JK和JK2连接器提供支持的AJP13,它基于二进制的格式在Web效劳器和Tomcat之间传输数据,而此前的版本AJP10和AJP11那么使用文本格式传输数据。

HTTP协议:诚如其名称所表示,其是使用HTTP或HTTPS协议在Web效劳器和Tomcat之间建立通信,此时,Tomcat就是一个完全功能的HTTP效劳器,它需要监听在某端口上以接收来自于商前效劳器的恳求。

八、tomcat的Valve的作用是什么?

Valve类似于过滤器,它可以工作于Engine和Host/Context之间、Host和Context之间以及Context和Web应用程序的某资源之间。一个容器内可以建立多个Valve,而且Valve定义的次序也决定了它们生效的次序。

九、Webserver和ApplicationServer的区别是什么?

最大区别,WebServer

一般仅仅指Web(如servlet,jsp)的应用效劳器,ApplicationServer不仅可以是Web,还可以是Ejb等其它的应用效劳器。

webserver可以是applicationserver的一部分,也可以是单独存在。

十、Tomcat的缺省端口是多少,怎么修改?

1)找到Tomcat目录下的conf文件夹;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论