avatar

Java面试题3

1.ElasticSearch在什么时候用?版本是多少?

1
2
分词搜索,相关性搜索,TB级搜索
使用版本7.3.0

2.Spring MVC的工作流程

Spring MVC的工作流程

1
2
3
4
5
6
7
8
9
10
11
1.用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载springmvc.xml配置文件
2.前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在springmvc.xml中配置的或者注解的url与对应的处理类找到并进行存储,用map<url,handler>这样的方式来存储
3.HandlerMapping有了映射关系,并且找到url对应的处理器,HandlerMapping就会将其处理器(Handler)返回,在返回前,会加上很多拦截器
4.DispatcherServlet拿到Handler后,找到HandlerAdapter(处理器适配器),通过它来访问处理器,并执行处理器
5.执行处理器
6.处理器会返回一个ModelAndView对象给HandlerAdapter
7.通过HandlerAdapter将ModelAndView对象返回给前端控制器(DispatcherServlet)
8.前端控制器请求视图解析器(ViewResolver)去进行视图解析,根据逻辑视图名解析成真正的视图(jsp),其实就是将ModelAndView对象中存放视图的名称进行查找,找到对应的页面形成视图对象
9.返回视图对象到前端控制器
10.视图渲染,就是将ModelAndView对象中的数据放到request域中,用来让页面加载数据的
11.通过第8步,通过名称找到了对应的页面,通过第10步,request域中有了所需要的数据,那么就能够进行视图渲染了,最后将其返回即可

4.SSM搭建流程

1
2
3
4
5
6
7
8
9
10
1. 创建应用并导入相关jar包
2. 创建信息输入页面
3. 创建持久化类
4. 创建Dao层
5. 创建Service层
6. 创建Service实现类
7. 创建Controller层
8. 创建用户信息显示页面
9. 创建相关配置文件
10.发布并运行应用

5.Spring Cloud常用框架组件

1
2
3
4
5
6
7
8
9
10
1. Spring Cloud Eureka(服务治理)
2. Spring Cloud Ribbon(客户端负载均衡)
3. Spring Cloud Hystrix(服务容错保护)
4. Spring Cloud Feign(声明式服务调用)
5. Spring Cloud Zuul(API网关服务)
6. Spring Cloud Config(分布式配置中心)
7. Spring Cloud Bus(消息总线)
8. Spring Cloud Stream(消息驱动微服务)
9. Spring Cloud Sleuth(分布式服务跟踪)
10.Spring Cloud Shiro(安全权限控制)

6.加载商品时商品信息有变动怎么及时处理

1
应该用到canal监控,把数据库中变动的商品skuId发送到RabbitMQ,然后后面的微服务比如搜索微服务和生成静态页面微服务   进行监听,接受到的spuId在做相应的逻辑调用,调商品微服务得到商品信息,生成静态页面微服务,得到商品信息渲染成静态页面,搜索微服务得到商品信息导入到ElasticSearch

7.Rabbitmq在遇到问题堆积后无法接收的情况怎么办

1
2
3
4
5
6
7
8
9
1.打破发送循环条件:
设置合适的qos值,当qos值值被用光,而新的ack未被mq接收时,就可以跳出发送循环,去接收新的消息;
消息者到主动block接收进程,消费者感知到接收消息的速度过快时,主动block,利用block与unblock方法调节接收速率.当接收进程被block时,mq跳出发送循环
2.建立新的队列:
资源有较多剩余,而又不需要保证消息的顺序的情况下可以通过建立新的vhost,在该vhost下创建queue,生产者将消息发送到新的,消费者同时订阅新旧queue
3.使用缓存:
在生产者端使用缓存,当生产速率受到流控限制时,缓存数据;在堆积的消息被处理完后,生产速率恢复正常时,此时将缓存的数据发送给mq
4.更新RabbitMQ的版本
5.加机器

8.Solr和Elasticsearch区别,优缺点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Elasticsearch的优缺点:
优点:
Elasticsearch是分布式的,不需要其他组件,分发是实时的,被叫做"Push replication"
Elasticsearch完全支持Apache Lucene的接近实时的搜索
处理多租户不需要特殊配置,而Solr则需要更多的高级设置
Elasticsearch采用Gateway的概念,使得完备份更加简单
各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。
缺点:
只有一名开发者(当前Elasticsearch GitHub组织已经不只如此,已经有了相当活跃的维护者)
还不够自动(不适合当前新的Index Warmup API)

Solr的优缺点:
优点:
Solr有一个更大、更成熟的用户、开发和贡献者社区
支持添加多种格式的索引,如:HTML、PDF、微软、Office系列软件格式以及JSON、XML、CSV等纯文本格式
Solr比较成熟、稳定
不考虑建索引的同时进行搜索,速度更快
缺点:
建立索引时,搜索效率下降,实时索引搜索效率不高
Elasticsearch与Solr的区别:
二者安装都很简单
Solr利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能
Solr支持更多格式的数据,而Elasticsearch仅支持json文件格式
Solr官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供
Solr在传统的搜索应用中表现好于Elasticsearch,但在处理实时搜索应用时效率明显低于Elasticsearch
Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用

9.redis存储哪些数据结构?

1
2
3
4
5
1.字符串类型 string
2.哈希类型 hash
3.列表类型 list
4.集合类型 set
5.有序集合类型 sortedset

10.redis常用的命令?

1
2
3
4
5
1.keys * : 查询所有的键
2.type key : 获取键对应的value的类型
3.del key : 删除指定的key value
4.info : 查看Redis的相关信息
5.flushall : 删除所有的key
文章作者: 123
文章链接: https://gao5805123.github.io/123/2020/05/09/Java%E9%9D%A2%E8%AF%95%E9%A2%983/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 123
打赏
  • 微信
    微信
  • 支付宝
    支付宝