面试准备

LRU算法(Last recently used,最近最少使用):缓存淘汰策略

实现:双向链表

1.新数据插入链表头部

2.修改或者访问缓存(链表)中数据,则将数据移动到链表头部

3.链表满的时候,丢弃尾部数据。

 

Python 内存管理和回收:

1.引用计数——

缺点:a.维护引用计数需要消耗一定的资源。b.循环引用时无法回收。

2.标记-清除——

有点:解决循环引用可能引起的内存泄漏问题

实现:

a.对执行删除后操作后的每个对象引用计数(额外再)-1,如果此时引用为0,则放入死亡容器,大于0则放入存活容器。

b.遍历存活容器,查看是否有的对象引用了死亡容器内的对象,如果欧就把该 对象 从死亡容器中取出放到存活容器里。

c.将死亡组里的所有对象清除掉。

3.分代技术

原理:分代回收技术是简历在标记-清除技术之上的,因为不能每次标记-清除都对所有对象进行(太费资源),效率太低),于是Python就将内存根据对象的存活时间划分为不同的集合,每个集合称为一个代。分为3代(0, 1, 2),它们对应的是3个链表,年轻代的总数达到上限时,垃圾回收机制就被触发,删掉可以被回收的对象,而把不会回收的放到上一代去。

 

选择一个hash函数的指标:

1.效率——计算速度快,尽量接近O(1)

2.均匀分布,减小碰撞。

 

快速排序:Python实现

def quick_sort(v, left, right):
    if left > right:
        return
    low = left
    high = right
    key = v[left]
    while low < high:
        while key <= v[high] and low < high:
            high -= 1
        v[low] = v[high]
        while key > v[low] and low < high:
            low += 1
        v[high] = v[low]

    v[low] = key
    quick_sort(v, left, low - 1)
    quick_sort(v, low + 1, right)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值