还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
面试笔试题目及回答IT关于Tomcat的7道面试题
一、tomcat有哪些ConnectorTomcat的Web服务器连接器支持两种协议AJP和HTTP,它们均定义了以二进制格式在Web服务器和Tomcat之间进行数据传输,并供应相应的限制叮嘱AJPfApache JServProtocol)协议目前正在运用的AJP协议的版本是通过JK和JK2连接器供应支持的AJP13,它基于二进制的格式在Web服务器和Tomcat之间传输数据,而此前的版本AJP1O和AJP11则运用文本格式传输数据HTTP协议诚如其名称所表示,其是运用HTTP或HTTPS协议在Web服务器和Tomcat之间建立通信,此时,Tomcat就是一个完全功能的HTTP服务器,它须要监听在某端口上以接收来自于商前服务器的请求
二、tomcat的Valve的作用是什么?Valve类似于过滤器,它可以工作于Engine和Host/Context之间、Host和Context之间以及Context和Web应用程序的某资源之间一个容器内可以建立多个Valve,而且Valve定义的次序也确定了它们生效的次序
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选举,分布式锁等
三、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项目放在web叩ps下,Tomcat会自动将其部署2)在server.xml文件上配置节点,设置相关的属性即可3)通过Catalina来进行配置进入到conf\Catalina\localhost文件下,创建一个xml文件,该文件的名字就是站点的名字编写XML的方式来进行设置
六、tomcat容器是如何创建servlet类实例用到了什么原理?当容器启动时,会读取在webapps书目下全部的web应用中的web.xml文件,然后对xml文件进行解析,并读取servlet注册信息然后,将每个应用中注册的servlet类都进行加载,并通过反射的方式实例化有时候也是在第一次请求时实例化在servlet注册时加上假如为正数,则在一起先就实例化,假如不写或为负数,则第一次请求实例化
七、Tomcat顶层架构小结lTomcat中只有一个Server,一个Server可以有多个Service,一个Service可以有多个Connector和一个Container;2Server掌管着整个Tomcat的生死大权;4Service是对外供应服务的;5Connector用于接受请求并将请求封装成Request和Response来具体处理;⑹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-RabbitMQserver其内部均含有独立的queue、exchange和binding等,但最最重要的是,其拥有独立的权限系统,可以做到vhost范围的用户限制当然,从RabbitMQ的全局角度,vhost可以作为不同权限隔离的手段(一个典型的例子就是不同的应用可以跑在不同的vhost中)Zookeeper面试题
1、集群中为什么要有主节点在分布式环境中,有些业务逻辑只须要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大削减重复计算,提高性能,于是就须要进行leade选举
2、集群中有3台服务器,其中一个节点宕机,这个时候Zookeeper还可以运用吗?可以接着运用,单数服务器只要没超过一半的服务器宕机就可以接着运用集群规则为2N+1台,NO,即最少须要3台
3、说一下两阶段提交和三阶段提交的过程分别有什么问题?一两阶段提交协议2PC
1.第一阶段投票阶段⑴协调者节点向全部参加者节点询问是否可以执行提交操作vote,并起先等待各参加者节点的响应;2参加者节点执行询问发起为止的全部事务操作,并将Undo信息和Redo信息写入日志3各参加者节点响应协调者节点发起的询问o假如参加者节点的事务操作实际执行成功,则它返回一个同意〃消息;假如参加者节点的事务操作实际执行失败,则它返回一个中止〃消息
2.其次阶段提交执行阶段当协调者节点从全部参加者节点获得的相应消息都为同意〃时⑴协调者节点向全部参加者节点发出正式提交commit〃的请求;⑵参加者节点正式完成操作,并释放在整个事务期间内占用的资源;3参加者节点向协调者节点发送〃完成〃消息;4协调者节点受到全部参加者节点反馈的“完成〃消息后,完成事务二两阶段提交存在的问题
1.执行过程中,全部参加节点都是事务堵塞型的当参加者占有公共资源时,其他第三方节点访问公共资源不得不处于堵塞状态;
2.参加者发生故障协调者须要给每个参加者额外指定超时机制,超时后整个事务失败;
3.协调者发生故障参加者会始终堵塞下去须要额外的备机进行容错;
4.二阶段无法解决的问题:协调者再发出commit消息之后宕机,而唯一接收到这条消息的参加者同时也宕机了那么即使协调者通过选举协议产生了新的协调者,这条事务的状态也是不确定的,没人知道事务是否被已经提交三三阶段提交协议3PC与两阶段提交不同的是,三阶段提交有两个改动点
1.引入超时机制同时在协调者和参加者中都引入超时机制;
2.在第一阶段和其次阶段中插入一个准备阶段保证了在最终提交阶段之前各参加节点的状态是全都的也就是说,除了引入超时机制之外,3PC把2PC的准备阶段再次一分为二,这样三阶段提交就有CanCommit PreCommitDoCommit三个阶段
1.CanCommit阶段3PC的CanCommit阶段其实和2PC的准备阶段很像协调者向参加者发送commit请求,参加者假如可以提交就返回Yes响应,否则返回No响应1事务询问协调者向参加者发送CanCommit请求询问是否可以执行事务提交操作然后起先等待参加者的响应2响应反馈参加者接到CanCommit请求之后,正常状况下,假如其自身认为可以顺当执行事务,则返回Yes响应,并进入预备状态否则反馈N
2.PreCommit阶段协调者依据参加者的反应状况来确定是否可以接着事务的PreCommit操作依据响应状况,有以下两种可能假如协调者从全部的参加者获得的反馈都是Yes响应,那么就会执行事务的预执行⑴发送预提交请求协调者向参加者发送PreCommit请求,并进入Prepared阶段2事务预提交参加者接收到PreCommit请求后,会执行事务操作,并将undo和redo信息记录到事务日志中⑶响应反馈假如参加者成功的执行了事务操作,则返回ACK响应,同时起先等待最终指令假如有任何一个参加者向协调者发送了N响应,或者等待超时之后,协调者都没有接到参加者的响应,那么就执行事务的中断1发送中断请求协调者向全部参加者发送abort请求2中断事务:参加者收到来自协调者的abort请求之后或超时之后,仍未收到协调者的请求,执行事务的中断
3.doCommit阶段该阶段进行真正的事务提交,也可以分为以下两种状况
3.1执行提交⑴发送提交请求协调接收到参加者发送的ACK响应,那么他将从预提交状态进入到提交状态并向全部参加者发送doCommit请求2事务提交参加者接收到doCommit请求之后,执行正式的事务提交并在完成事务提交之后释放全部事务资源⑶响应反馈事务提交完之后,向协调者发送ACK响应⑷完成事务协调者接收到全部参加者的ACK响应之后,完成事务
3.2中断事务协调者没有接收到参加者发送的ACK响应可能是接受者发送的不是ACK响应,也可能响应超时,那么就会执行中断事务1发送中断请求协调者向全部参加者发送abort请求⑵事务回滚参加者接收到abort请求之后,利用其在阶段二记录的undo信息来执行事务的回滚操作,并在完成回滚之后释放全部的事务资源⑶反馈结果参加者完成事务回滚之后,向协调者发送ACK消/匕、O
(4)中断事务协调者接收到参加者反馈的ACK消息之后,执行事务的中断
(四)三阶段提交的问题网络分区可能会带来问题须要四阶段解决四阶段干脆调用远程服务的数据状态,确定当前数据全都性的状况
4、Zookeeper宕机如何处理?Zookeeper本身也是集群,举荐配置不少于3个服务器Zookeeper自身也要保证当一个节点宕机时,其他节点会接着供应服务假如是一个Follower宕机,还有2台服务器供应访问,因为Zookeeper上的数据是有多个副本的,数据并不会丢失;假如是一个Leader宕机,Zookeeper会选举出新的LeaderZookeeper集群的机制是只要超过半数的节点正常,集群就能正常供应服务只有在Zookeeper节点挂得太多,只剩一半或不到一半节点能工作,集群才失效所以3个节点的cluster可以挂掉1个节点(leader可以得到2票
1.5)2个节点的cluster就不能挂掉任何1个节点了(leader可以得到1票=1)
5、说下四种类型的数据节点Znode
1.PERSISTENT许久节点,除非手动删除,否则节点始终存在于Zookeeper上。