闪送一面凉经
💼公司岗位
Java开发工程师
1.自我介绍
2.项目问题:
对订单库存是怎样设计的?
答:(当时比较紧张第一遍说错了)当用户下单并且成功扣款时,会对库存进行修改,根据用户订单减少库存。不对...是用户提交订单会对减少库存,根据定时任务对用户是否完成付款进行判断,用户规定时间未完成付款则会回填库存。
怎么防止库存超卖?
答:在提交订单接口首先做了令牌桶算法进行限流,防止高并发情况的问题,然后添加了锁机制,将用户的主键加锁,保证一个用户只能同时提交一次订单,提交完订单会对库存进行修改,每次提交订单都会对库存进行判断,若有库存就可以提交没有则返回失败信息。
怎么保证高并发的时候订单不会被超卖,假如我现在就1个库存,但是100个人同时请求这一个,怎么保证没有2个人抢到同1个库存的情况?
答:(当时一脸懵)我在接口加了令牌桶算法进行限流,保证不会有多人都请求到这个商品,而且对用户主键进行加锁,让他们的操作是串行的,不会产生一个多次请求的情况。可能没有考虑的很全面,大概就是这么设计的(当时没有底气)
3.谈一谈Java的反射
答:我认为反射是框架的灵魂,很多现在的框架都是通过反射机制实现的,比如Spring,在SpringIoC中就用到了反射机制,Spring对Bean对象的管理和注册就是通过反射机制实现的。
这是Spring中的反射,那你有用到过Java反射么?
答:我平常项目中可能会调取一些private的类或者一些私有的方法可能用到反射,但是使用反射一定会有安全性问题,有的private本身就不是想被调用到的,我们可以使用:类class、new类.getClass()和Class.forName("类全路径")来获取到这个类。
4.讲一下Spirng MVC的请求流程
答:SpringMVC核心是DispatcherServlet,前端发送请求到DispatcherServlet,然后DispatcherServlet根据请求信息调用HandlerMapping,HandlerMapping解析请求找到对应的controller这里叫做Hander,并会将请求涉及到的拦截器和 Handler 一起封装,然后调用 HandlerAdapter适配器执行 Handler ,请求处理后,会返回一个 ModelAndView 对象给DispatcherServlet,数据模型以及相应的视图的信息,现在的前后端分离的项目其实就已经结束了,会把数据返回到前端进行处理,以前的JSP等前后端不分离的会对view进行渲染等操作。
5.讲一下MySQL数据库优化
答:数据库优化可以从多个方面考虑,首先是物理层面对于数据库部署的服务器可选择内存较大的服务器,可以使用更好的存储引擎,比如现在MySQL的InnoDB,其次可以根据数据库是使用情况进行分库分表、读写分离等集群部署,然后可以对编写的SQL进行优化比如减少SELECT *,连表操作等SQL的编写,合理的使用索引等。
我想问的是对数据库的优化,比如怎么加索引?
答:对于数据库的索引是为了加速对表中数据行的检索而创建的一种分散的存储结构,数据库没有索引就会走表进行全表扫描,我们去优化一条SQL并添加索引的时候,可以先去找到慢SQL,根据SQL编写进行分析添加合适的索引,在MySQL的日志中使用show variables like ‘%slow_query_log%定位慢SQL,并使用explain关键字进行分析,可以SQL中是否用到索引。我们添加索引可以根据主键ID进行添加主键索引,因为主键一般是连续且唯一的。若SQL列中有长字符串或者是文本可以为这列添加上全文索引。对于用的比较多的列或者是查询速度很慢的SQL可以对他们where条件里面的列添复合索引,但是要把比较常用的列放到最左侧,因为复合索引有最左匹配原则,若查询的列不在最左侧可能不会使用索引。
6.RabbitMQ和Rocket MQ的区别
答:RabbitMQ是开源的对于学生来说比较友好,RocketMQ是对于企业的性能更好。他们都是高可用的,相对来说RabbMQ的时效性更好延迟最低,RocketMQ的稳定性更好,吞吐量更大。
7.了解RocketMQ的架构实现吗?
答:RocketMQ不太了解,我知道RabbitMQ,RabbitMQ核心主要是个队列,消息生产者产生消息后会发送给RabbitMQ的交换机,交换机接收到消息,并将消息路由到队列中,队列存储消息,等待消费者处理,将交换机和队列连起来进行一个绑定,消费者订阅队列进行消费。
8.反问
面试官比较随意,面试的氛围还是很好的,但是感觉有些不想听,(可能是我个人理解),不知道这是KPI面还是什么原因,我回答的还算比较流畅,最后可惜没有通过,不知道现在该往什么方向准备了。
有大神帮我指点一下么,回答的问题望大家能指出
#牛客解忧铺##面试# #凉经##大厂##找工作#
Java开发工程师
1.自我介绍
2.项目问题:
对订单库存是怎样设计的?
答:(当时比较紧张第一遍说错了)当用户下单并且成功扣款时,会对库存进行修改,根据用户订单减少库存。不对...是用户提交订单会对减少库存,根据定时任务对用户是否完成付款进行判断,用户规定时间未完成付款则会回填库存。
怎么防止库存超卖?
答:在提交订单接口首先做了令牌桶算法进行限流,防止高并发情况的问题,然后添加了锁机制,将用户的主键加锁,保证一个用户只能同时提交一次订单,提交完订单会对库存进行修改,每次提交订单都会对库存进行判断,若有库存就可以提交没有则返回失败信息。
怎么保证高并发的时候订单不会被超卖,假如我现在就1个库存,但是100个人同时请求这一个,怎么保证没有2个人抢到同1个库存的情况?
答:(当时一脸懵)我在接口加了令牌桶算法进行限流,保证不会有多人都请求到这个商品,而且对用户主键进行加锁,让他们的操作是串行的,不会产生一个多次请求的情况。可能没有考虑的很全面,大概就是这么设计的(当时没有底气)
3.谈一谈Java的反射
答:我认为反射是框架的灵魂,很多现在的框架都是通过反射机制实现的,比如Spring,在SpringIoC中就用到了反射机制,Spring对Bean对象的管理和注册就是通过反射机制实现的。
这是Spring中的反射,那你有用到过Java反射么?
答:我平常项目中可能会调取一些private的类或者一些私有的方法可能用到反射,但是使用反射一定会有安全性问题,有的private本身就不是想被调用到的,我们可以使用:类class、new类.getClass()和Class.forName("类全路径")来获取到这个类。
4.讲一下Spirng MVC的请求流程
答:SpringMVC核心是DispatcherServlet,前端发送请求到DispatcherServlet,然后DispatcherServlet根据请求信息调用HandlerMapping,HandlerMapping解析请求找到对应的controller这里叫做Hander,并会将请求涉及到的拦截器和 Handler 一起封装,然后调用 HandlerAdapter适配器执行 Handler ,请求处理后,会返回一个 ModelAndView 对象给DispatcherServlet,数据模型以及相应的视图的信息,现在的前后端分离的项目其实就已经结束了,会把数据返回到前端进行处理,以前的JSP等前后端不分离的会对view进行渲染等操作。
5.讲一下MySQL数据库优化
答:数据库优化可以从多个方面考虑,首先是物理层面对于数据库部署的服务器可选择内存较大的服务器,可以使用更好的存储引擎,比如现在MySQL的InnoDB,其次可以根据数据库是使用情况进行分库分表、读写分离等集群部署,然后可以对编写的SQL进行优化比如减少SELECT *,连表操作等SQL的编写,合理的使用索引等。
我想问的是对数据库的优化,比如怎么加索引?
答:对于数据库的索引是为了加速对表中数据行的检索而创建的一种分散的存储结构,数据库没有索引就会走表进行全表扫描,我们去优化一条SQL并添加索引的时候,可以先去找到慢SQL,根据SQL编写进行分析添加合适的索引,在MySQL的日志中使用show variables like ‘%slow_query_log%定位慢SQL,并使用explain关键字进行分析,可以SQL中是否用到索引。我们添加索引可以根据主键ID进行添加主键索引,因为主键一般是连续且唯一的。若SQL列中有长字符串或者是文本可以为这列添加上全文索引。对于用的比较多的列或者是查询速度很慢的SQL可以对他们where条件里面的列添复合索引,但是要把比较常用的列放到最左侧,因为复合索引有最左匹配原则,若查询的列不在最左侧可能不会使用索引。
6.RabbitMQ和Rocket MQ的区别
答:RabbitMQ是开源的对于学生来说比较友好,RocketMQ是对于企业的性能更好。他们都是高可用的,相对来说RabbMQ的时效性更好延迟最低,RocketMQ的稳定性更好,吞吐量更大。
7.了解RocketMQ的架构实现吗?
答:RocketMQ不太了解,我知道RabbitMQ,RabbitMQ核心主要是个队列,消息生产者产生消息后会发送给RabbitMQ的交换机,交换机接收到消息,并将消息路由到队列中,队列存储消息,等待消费者处理,将交换机和队列连起来进行一个绑定,消费者订阅队列进行消费。
8.反问
面试官比较随意,面试的氛围还是很好的,但是感觉有些不想听,(可能是我个人理解),不知道这是KPI面还是什么原因,我回答的还算比较流畅,最后可惜没有通过,不知道现在该往什么方向准备了。
有大神帮我指点一下么,回答的问题望大家能指出
#牛客解忧铺##面试# #凉经##大厂##找工作#
全部评论
kpi吧,问的有点少
相关推荐
11-25 17:39
门头沟学院 C++ 点赞 评论 收藏
分享
点赞 评论 收藏
分享