栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

「Java面试」请你说一下你对滑动窗口算法的理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

「Java面试」请你说一下你对滑动窗口算法的理解

大家好,我是娜娜,一个没有才华只能靠颜值混饭吃的Java程序员。 一个工作5年的程序员,去滴滴面试,被问到了Sentinel组件里面关于滑动窗口算法的问题。 他很遗憾,平时写CRUD比较多,技术底层的回答只能靠运气。 于是面试没有通过,错过了一个很好的机会。 关于:“请你说一下你对滑动窗口算法的理解” 这个问题。 我把高手的回答整理到了10W字的面试文档中, 下面看看高手的回答

需要高手面试文档(附赠阿里内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以评论区留言

高手:

滑动窗口是一种比较常用的数据统计算法。

简单来说,就是在一个大的数组上,定义一个固定长度的滑动窗口,然后这个窗口在数组上进行滑动。

在窗口滑动的过程中,左边会出一个元素,右边会进一个元素, 最后,我们根据当前窗口内记录的数据进行计算。

从而达到数据统计的目的。

滑动窗口一般可以用来解决数组的统计问题,比如。

  • 解决数组/字符串的子元素问题。
  • 把嵌套的for循环问题,转换为单循环问题,降低时间复杂度。

在Hystrix中,用到了滑动窗口来实现熔断触发的数据统计。

另外在Sentinel限流框架中,也使用了滑动窗口来实现限流的数据统计。

不过在这两个组件中使用的滑动窗口都做了一些调整,他们是通过时间线来驱动窗口往前滑动的。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

简单来说,以Hystrix为例,它定义一个10个长度的数组,每个数组表示一个1秒的时间区间跨度,然后在每个区间中记录当前时间端内发生的所有请求的成功、失败的次数。

Hystrix只需要统计当前10秒内对应的10个窗口总的成功、失败次数。

最后根据配置的阈值决定是否要触发熔断功能。

总结

如果大家刷的算法比较多,对滑动窗口算法应该是不陌生的。

比如查找某一个字符串里面的包含某些字母的最小子字符串,就可以用到滑动窗口算法。

除此之外,在Sentinel里面也用到了滑动窗口来做数据统计。

算法的考察在大厂会比较多一些,大家平时可以抽空去刷一刷算法题。

大家记得点赞收藏+关注!

需要高手面试文档(附赠大厂内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以后台评论区留言。

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017293.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号