IT面试笔试题目及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IT面试笔试题目及答案2020
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认为该消费者繁忙,将不会给该消费者分发更多的消息。

关于Tomcat的面试题
一、什么是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体系结构是怎样的?
浏览器 - tomcat server- 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、Tomcat0
2、Tomcat03。

如果各Tomcat程序放在不同的机器上,那么就不会有端口的冲突。

如果是放在同一台机器上的话,那就简单改几个端口,防止端口占用造成的冲突。

打开conf文件夹中的server.xml文件,需要修改的端口有:
1、
2、
3、
以上port需要修改,至于修改成什么样子,看你自己了,只要不出现端口冲突就可以了,要保证各个Tomcat实例间没有端口冲突。

关于Zookeeper的面试题
一、谈下你对Zookeeper的认识?
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。

它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

二、Zookeeper都有哪些功能?
1. 集群管理:监控节点存活状态、运行请求等;
2. 主节点选举:主节点挂掉了之后可以从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用Zookeeper可以协助完成这个过程;
3. 分布式锁:Zookeeper提供两种锁:独占锁、共享锁。

独占锁即一次只能有一个线程使用资源,共享锁是读锁共享,读写互斥,即可以有多线线程同时读同一个资源,如果要使用写锁也只能有一个线程使用。

Zookeeper 可以对分布式锁进行控制。

4. 命名服务:在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。

三、谈下你对ZAB协议的了解?
ZAB协议是为分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议。

ZAB协议包括两种基本的模式:崩溃恢复和消息广播。

当整个Zookeeper 集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与Leader服务器保持正常通信时,所有服务器进入崩溃恢复模式,首先选举产生新的Leader服务器,然后集群中Follower服务器开始与新的Leader服务器进行数据同步。

当集群中超过半数机器与该Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。

四、Zookeeper怎么保证主从节点的状态同步?
Zookeeper的核心是原子广播机制,这个机制保证了各个server之间的同步。

实现这个机制的协议叫做Zab协议。

Zab协议有两种模式,它们分别是恢复模式和广播模式。

1. 恢复模式
当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数server完成了和leader的状态同步以后,恢复模式就结束了。

状态同步保证了leader和server具有相同的系统状态。

2. 广播模式
一旦leader已经和多数的follower进行了状态同步后,它就可以开始广播消息了,即进入广播状态。

这时候当一个server加入ZooKeeper服务中,它会在恢复模式下启动,发现leader,并和leader进行状态同步。

待到同步结束,它也参与消息广播。

ZooKeeper服务一直维持在Broadcast 状态,直到leader 崩溃了或者leader失去了大部分的followers支持。

五、Zookeeper有几种部署模式?
Zookeeper有三种部署模式:
1. 单机部署:一台集群上运行;
2. 集群部署:多台集群运行;
3. 伪集群部署:一台集群启动多个Zookeeper实例运行。

六、说一下Zookeeper的通知机制?
client端会对某个znode建立一个watcher事件,当该znode发生变化时,这些client会收到zk的通知,然后client可以根据znode变化来做出业务上的改变等。

相关文档
最新文档