IT面试笔试题目及回答
时间:2021-12-26 16:26:40 admin
求职面试时,面试官一般都会问你一些问题,也可能是通过问卷的形式提问,怎么回答才是最好的呢?这里给大家分享一些IT面试笔试题目及回答,希望对大家有所帮助。
关于Tomcat的7道面试题
一、tomcat有哪些Connector?
Tomcat的Web服务器连接器支持两种协议:AJP和HTTP,它们均定义了以二进制格式在Web服务器和Tomcat之间进行数据传输,并提供相应的控制命令。
AJP(Apache JServ 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和 Application Server的区别是什么?
最大区别,WebServer 一般仅仅指Web(如servlet,jsp)的应用服务器,ApplicationServer不仅可以是Web,还可以是Ejb等其它的应用服务器。
web server可以是application server的一部分,也可以是单独存在。
四 、Tomcat的缺省端口是多少,怎么修改?
1)找到Tomcat目录下的conf文件夹;
2)进入conf文件夹里面找到server.xml文件;
3)打开server.xml文件;
4)在server.xml文件里面找到下列信息;
port=“8080”改成你想要的端口
五 、Tomcat 有几种部署方式?
1)直接把Web项目放在webapps下,Tomcat会自动将其部署
2)在server.xml文件上配置节点,设置相关的属性即可
3)通过Catalina来进行配置:进入到conf\Catalina\localhost文件下,创建一个xml文件,该文件的名字就是站点的名字。编写XML的方式来进行设置。
六、tomcat容器是如何创建servlet类实例?用到了什么原理?
当容器启动时,会读取在webapps 目录下所有的web应用中的web.xml 文件,然后对xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过反射的方式实例化。(有时候也是在第一次请求时实例化)在servlet注册时加上如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。
七、Tomcat顶层架构小结
(1)Tomcat中只有一个Server,一个Server可以有多个Service,一个Service可以有多个Connector和一个Container;
(2) Server掌管着整个Tomcat的生死大权;
(4)Service是对外提供服务的;
(5)Connector用于接受请求并将请求封装成Request和Response来具体处理;
(6)Container用于封装和管理Servlet,以及具体处理request请求;
RabbitMQ面试题及答案
1、RabbitMQ怎么避免消息丢失?
①消息持久化;
②ACK确认机制;
③设置集群镜像模式;
④消息补偿机制。
2、要保证消息持久化成功的条件有哪些?
①声明队列必须设置持久化durable设置为 true。
②消息推送投递模式必须设置持久化,deliveryMode设置为2(持久)。
③消息已经到达持久化交换器。
④消息已经到达持久化队列。
以上四个条件都满足才能保证消息持久化成功。
3、RabbitMQ持久化有什么缺点?
持久化的缺地就是降低了服务器的吞吐量,因为使用的是磁盘而非内存存储,从而降低了吞吐量。可尽量使用ssd硬盘来缓解吞吐量的问题。
4、RabbitMQ 有几种广播类型?
三种广播模式:
①fanout:所有bind到此exchange的queue都可以接收消息(纯广播,绑定到RabbitMQ的接受者都能收到消息);
②direct:通过routingKey和exchange决定的那个唯一的queue可以接收消息;
③topic:所有符合routingKey(此时可以是一个表达式)的routingKey所bind的queue可以接收消息;
5、RabbitMQ中vhost的作用是什么?
vhost可以理解为虚拟broker ,即mini-RabbitMQ server。其内部均含有独立的 queue、exchange和binding等,但最最重要的是,其拥有独立的权限系统,可以做到 vhost 范围的用户控制。当然,从RabbitMQ的全局角度,vhost可以作为不同权限隔离的手段(一个典型的例子就是不同的应用可以跑在不同的vhost中)。
Zookeeper面试题
1、集群中为什么要有主节点?
在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要进行leade选举。
2、集群中有3台服务器,其中一个节点宕机,这个时候Zookeeper还可以使用吗?
可以继续使用,单数服务器只要没超过一半的服务器宕机就可以继续使用。
集群规则为2N+1台,N >0,即最少需要3台。
3、说一下两阶段提交和三阶段提交的过程?分别有什么问题?
(一)两阶段提交协议2PC
1. 第一阶段(投票阶段):
(1)协调者节点向所有参与者节点询问是否可以执行提交操作(vote),并开始等待各参与者节点的响应;
(2)参与者节点执行询问发起为止的所有事务操作,并将Undo信息和Redo信息写入日志。
(3)各参与者节点响应协调者节点发起的询问。如果参与者节点的事务操作实际执行成功,则它返回一个“同意”消息;如果参与者节点的事务操作实际执行失败,则它返回一个“中止”消息。
2. 第二阶段(提交执行阶段):
当协调者节点从所有参与者节点获得的相应消息都为“同意”时:
(1)协调者节点向所有参与者节点发出“正式提交(commit)”的请求;
(2)参与者节点正式完成操作,并释放在整个事务期间内占用的资源;
(3)参与者节点向协调者节点发送“完成”消息;
(4)协调者节点受到所有参与者节点反馈的“完成”消息后,完成事务。
(二)两阶段提交存在的问题:
1. 执行过程中,所有参与节点都是事务阻塞型的。当参与者占有公共资源时,其他第三方节点访问公共资源不得不处于阻塞状态;
2. 参与者发生故障:协调者需要给每个参与者额外指定超时机制,超时后整个事务失败;
3. 协调者发生故障:参与者会一直阻塞下去。需要额外的备机进行容错;
4. 二阶段无法解决的问题:协调者再发出commit消息之后宕机,而唯一接收到这条消息的参与者同时也宕机了。那么即使协调者通过选举协议产生了新的协调者,这条事务的状态也是不确定的,没人知道事务是否被已经提交。
(三)三阶段提交协议3PC
与两阶段提交不同的是,三阶段提交有两个改动点:
1. 引入超时机制。同时在协调者和参与者中都引入超时机制;
2. 在第一阶段和第二阶段中插入一个准备阶段。保证了在最后提交阶段之前各参与节点的状态是一致的。
也就是说,除了引入超时机制之外,3PC 把 2PC 的准备阶段再次一分为二,这样三阶段提交就有CanCommit、PreCommit、DoCommit三个阶段。
1. CanCommit阶段
3PC的CanCommit阶段其实和2PC的准备阶段很像。协调者向参与者发送commit请求,参与者如果可以提交就返回Yes响应,否则返回No响应。
(1)事务询问:协调者向参与者发送CanCommit请求。询问是否可以执行事务提交操作。然后开始等待参与者的响应。
(2)响应反馈:参与者接到CanCommit请求之后,正常情况下,如果其自身认为可以顺利执行事务,则返回Yes响应,并进入预备状态。否则反馈No。
2. PreCommit阶段
协调者根据参与者的反应情况来决定是否可以继续事务的PreCommit操作。根据响应情况,有以下两种可能:
假如协调者从所有的参与者获得的反馈都是Yes响应,那么就会执行事务的预执行。
(1)发送预提交请求:协调者向参与者发送PreCommit请求,并进入Prepared阶段。
(2)事务预提交:参与者接收到PreCommit请求后,会执行事务操作,并将undo和redo信息记录到事务日志中。
(3)响应反馈:如果参与者成功的执行了事务操作,则返回ACK响应,同时开始等待最终指令。
假如有任何一个参与者向协调者发送了No响应,或者等待超时之后,协调者都没有接到参与者的响应,那么就执行事务的中断。
(1)发送中断请求:协调者向所有参与者发送abort请求。
(2)中断事务:参与者收到来自协调者的abort请求之后(或超时之后,仍未收到协调者的请求),执行事务的中断。
3. doCommit阶段
该阶段进行真正的事务提交,也可以分为以下两种情况。
3.1 执行提交
(1)发送提交请求:协调接收到参与者发送的ACK响应,那么他将从预提交状态进入到提交状态。并向所有参与者发送doCommit请求。
(2)事务提交:参与者接收到doCommit请求之后,执行正式的事务提交。并在完成事务提交之后释放所有事务资源。
(3)响应反馈:事务提交完之后,向协调者发送ACK响应。
(4)完成事务:协调者接收到所有参与者的ACK响应之后,完成事务。
3.2 中断事务
协调者没有接收到参与者发送的ACK响应(可能是接受者发送的不是ACK响应,也可能响应超时),那么就会执行中断事务。
(1)发送中断请求:协调者向所有参与者发送abort请求。
(2)事务回滚:参与者接收到abort请求之后,利用其在阶段二记录的undo信息来执行事务的回滚操作,并在完成回滚之后释放所有的事务资源。
(3)反馈结果:参与者完成事务回滚之后,向协调者发送ACK消息。
(4)中断事务:协调者接收到参与者反馈的ACK消息之后,执行事务的中断。
(四)三阶段提交的问题:
网络分区可能会带来问题。需要四阶段解决:四阶段直接调用远程服务的数据状态,确定当前数据一致性的情况。
4、Zookeeper宕机如何处理?
Zookeeper本身也是集群,推荐配置不少于3个服务器。Zookeeper自身也要保证当一个节点宕机时,其他节点会继续提供服务。如果是一个Follower宕机,还有2台服务器提供访问,因为Zookeeper上的数据是有多个副本的,数据并不会丢失;如果是一个Leader宕机,Zookeeper会选举出新的Leader。
Zookeeper集群的机制是只要超过半数的节点正常,集群就能正常提供服务。只有在Zookeeper节点挂得太多,只剩一半或不到一半节点能工作,集群才失效。所以:
3个节点的cluster可以挂掉1个节点(leader可以得到2票> 1.5)
2个节点的cluster就不能挂掉任何1个节点了(leader可以得到1票<= 1)
5、说下四种类型的数据节点Znode?
1. PERSISTENT:持久节点,除非手动删除,否则节点一直存在于Zookeeper上。
2. EPHEMERAL:临时节点,临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与Zookeeper连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。
3. PERSISTENT_SEQUENTIAL:持久顺序节点,基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
4. EPHEMERAL_SEQUENTIAL:临时顺序节点,基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
6、Zookeeper和Dubbo的关系?
Dubbo的将注册中心进行抽象,是得它可以外接不同的存储媒介给注册中心提供服务,有ZooKeeper,Memcached,Redis等。
引入了ZooKeeper作为存储媒介,也就把ZooKeeper的特性引进来。首先是负载均衡,单注册中心的承载能力是有限的,在流量达到一定程度的时 候就需要分流,负载均衡就是为了分流而存在的,一个ZooKeeper群配合相应的Web应用就可以很容易达到负载均衡;
资源同步,单单有负载均衡还不够,节点之间的数据和资源需要同步,ZooKeeper集群就天然具备有这样的功能;命名服务,将树状结构用于维护全局的服务地址列表,服务提供者在启动的时候,向ZooKeeper上的指定节点/dubbo/${serviceName}/providers目录下写入自己的URL地址,这个操作就完成了服务的发布。其他特性还有Mast选举,分布式锁等。
结尾:非常感谢大家阅读《IT面试笔试题目及回答》,更多精彩内容等着大家,欢迎持续关注学习大全网「Xuexidaquan.Com」,一起成长!
IT面试笔试题目及回答相关文章:
★ 国企面试笔试题目
★ 求职笔试题目汇总
【笔试题】推荐文章
1 三间国企求职笔试题目
2 教师职场求职的笔试题范文
3 求职市场营销笔试题及答案_个人求职笔试题
4 求职者经典笔试测试题范文五篇
5 中国电信求职笔试题库
6 实习生面试求职笔试题范文
7 求职通用笔试题目范文
8 招聘笔试题应届生范文
9 职场模拟求职大赛笔试题库范文
10 IT方面的面试笔试题目2022
11 软件测试工程师面试笔试题
12 国企面试笔试题目分享
【笔试题】图文精华
- 上一篇:最新2022IT面试笔试题目
- 下一篇:IT面试笔试题目及答案2022