神领物流第三天面试题

文章讨论了运费计算的原理,涉及体积重量转换、运费模板的结构(同城、省内等类型),以及使用责任链模式处理模板优先级问题。同时提到对查询性能的优化,通过将运费模板从MySQL迁移到Redis来提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、你们的运费是怎么计算的?体积和重量怎么计算,到底以哪个为准?

运费计算是通过【首重价格 + 续重 * 续重单价】 计算的。体积和重量是没办法直接比较的,我们会将体积转化成重量,这里要用到轻抛系数,用体积/轻抛系数就可以计算出重量,与实际的重量进行比较,取大值,进行运费计算。

2、详细聊聊你们的运费模板是做什么的?

我所说的运费模板,实际上就是运费规则,我们定义了有同城、省内、经济区互寄、跨省,这四种类型的规则,其中保存了首重、续重、轻抛系数、模板类型、关联城市等字段。

在计算运费时,需要根据收发件人的地址确定使用的模板,再根据模板中具体的值进行运费计算。

3、前面听你提到了责任链模式,能详细聊聊你们是怎么用的吗?为什么要这样用? (项目中有没有用过设计模式?)

我刚刚说的责任链模式是用在运费计算模块中,在运费计算时,首先需要查询运费模板,由于运费模板是有多种类型的,并且它们之间是有优先级的,同城 > 省内 > 经济区互寄 > 跨省,按照优先级选择符合条件的模板即可。

这种场景下就比较适合使用责任链模式来做,如果第一种类型没有找到模板,就第二种类型进行查找,如果依然没有,就第三种.... 依次类推,最后由跨省模板兜底。

4、有没有针对运费计算做什么优化?

有优化的。在之前的实现中,对于运费模板的查询是基于MySQL数据库完成的,这样性能比较差,组长要求我把运费模板存入到Redis中(可以考虑hash类型),查询时优先从Redis中进行查询,如果查询不到再查询数据库,从而提升了性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值