面试不再怕,20行Python代码帮你搞懂LRU算法

Posted python6359

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试不再怕,20行Python代码帮你搞懂LRU算法相关的知识,希望对你有一定的参考价值。

技术分享图片

 

LRU算法在后端工程师面试中,是一个比较常出现的题目,这篇文章带大家一起,理解LRU算法,并最终用Python轻松实现一个基于LRU算法的缓存。

缓存是什么

技术分享图片

 

先看一张图,当我们访问网页,浏览器会给服务器发请求,服务器会经过一系列的运算,把页面返回给浏览器。

Python学习交流群:125240963获取Python面试真题一份,希望能够对大家找工作有所帮助!

技术分享图片

 

当有多个浏览器同时访问的时候,就会在短时间内发起多个请求,而服务器对每一个请求都要进行一系列相同的操作。重复工作不仅浪费资源,还可能导致响应速度变慢。

技术分享图片

 

LRU是什么

技术分享图片

 

LRU的淘汰逻辑

技术分享图片

 

我们用一张图来描述LRU的淘汰逻辑,图中的缓存是一个列表结构,上面是头结点下面是尾节点,缓存容量为8(8个小格子):

  • 有新数据(意味着数据之前没有被缓存过)时,加入到列表头
  • 缓存到达最大容量时,需要淘汰数据多出来的数据,此时淘汰列表尾部的数据
  • 当缓存中有数据被命中,则将数据移动到列表头部(相当于新加入缓存)

按上面的逻辑我们可以看到,一个数据如果经常被访问就会不断地被移动到列表头部,不会被淘汰出缓存,而越不经常访问的数据,越容易被挤出缓存。

技术分享图片

 

20行Python代码实践LRU

技术分享图片

 

下次面试在遇到LRU的题目,是不是就胸有成竹了?

以上是关于面试不再怕,20行Python代码帮你搞懂LRU算法的主要内容,如果未能解决你的问题,请参考以下文章

帮你搞懂Python进程,线程与协程

双非本科字节跳动Java面试题分享,彻底帮你搞懂

Java面试10大知识点总结宝典助你通关!彻底帮你搞懂

java时间差计算,彻底帮你搞懂

上个月成功拿到阿里P7offer,彻底帮你搞懂

Javascript 中的浅拷贝深拷贝是什么?一文带你搞懂,不再犯错