面试准备

面试官您好,我叫

我毕设内容是设计和开发一个基于RFID自动识别技术的物流跟踪系统,其中包括开发一个中间件,用于提取阅读器信息并处理后插入数据库,以及开发一个后台管理系统,用于工艺员对标签和零件物流信息进行监控和查询。系统是基于SpringBoot的一站式开发,MySQL数据库做存储层,整合了Mybatis作为DAO层,SpringMVC控制层,并在RFID数据获取处理后使用了RabbitMQ作为消息中间件,完成对数据的异步插入数据库,以及在前端用户查询数据时添加了Redis作为缓存,避免了频繁的访问数据库。


为什么选用springboot作为开发框架?

内核还是spring,不过是对外做了大量封装,大大提高了开发的效率;不必再像传统spring开发过程中,需要面临大量的整合三方应用包括服务器等的麻烦,配置起来非常方便;方便了部署,配置,监控;缺点是封装了太多的东西,更加难以接触到spring的本质,就像是棉花糖,使用方便,但是想做自己单独的配置,需要去读很多官方文档,修改不少指定的类,而且版本不断的更新,有不少坑得踩;


谈谈SpringMVC的原理

首先MVC是一种设计模式,model是模型,如services层和dao层处理业务的,view是视图,如前端的html和jsp显示层,controller是控制器,是控制用户访问的控制层,如执行拦截,验证,根据特定的url找到对应的模型进行处理等;之前网络上有struts,struts2等MVC框架出现过,而SpringMVC就是基于spring这一个非常流行框架下的MVC框架,因为Spring框架的IOC和AOP等特性,springmvc也流行起来,主要能将业务处理很好的和用户访问控制解耦,天然集成于spring中;

和struts区别:springmvc是基于方法开发,一个url对应一个方法,参数作为方法形参传入,而struts2是基于类,请求参数是通过类的属性传入;

如何工作的?


为什么选用RabbitMQ作为消息中间件

传统的AMQP实现的消息队列,对数据的一致性,可靠性,稳定性要求较高,但是对性能和吞吐量还在其次;而kafka一开始开发出来就是为了处理海量数据如日志处理和传输,追求高吞吐量,不支持事务。



谈谈你对Redis的理解?

Redis不仅可以做缓存,还可以做DB,分布式锁,消息队列等;使用Redis作为缓存层,主要是基于Redis的性能和并发:redis是单线程的,redis的纯内存操作;采用了非阻塞的I/O多路复用机制;

缓存穿透:访问的数据都不在缓存里导致大量访问数据库,从而使数据库连接异常;

缓存雪崩:缓存同一时间的大量失效,又来一波请求,结果导致数据库连接异常;

你可能感兴趣的:(面试准备)