【瓴岳科技】历史面试题

【瓴岳科技】历史面试题

1. 公司简介

瓴岳科技(Fintopia)是以大数据和人工智能为基础的数字科技集团,致力于通过科技提高金融服务的品质与效率,为全球用户提供卓越的金融体验。2015年成立至今,瓴岳科技始终聚焦消费金融,业务遍布中国大陆、东南亚、拉丁美洲和非洲等;集团旗下拥有洋钱罐、Easycash等知名品牌,始终坚持以用户为中心,助力普惠金融发展。

2. 写一个lru

LRU (Least Recently Used) 是一种缓存淘汰策略,它的目的是在缓存满的时候淘汰最近最少使用的数据,以便为新数据腾出空间。这个策略假设最近使用的数据在未来也更可能被使用。

在 Java 中,可以使用 LinkedHashMap 来实现 LRU 缓存。LinkedHashMap 提供了一种构造方法,可以按访问顺序来维护元素的顺序,这样最早访问的元素会在迭代时排在最前面,最近访问的元素会排在最后面。当缓存达到容量限制时,可以删除最早访问的元素(即最前面的元素)。

下面是一个使用 LinkedHashMap 实现 LRU 缓存的例子:

import java.util.LinkedHashMap;
import java.util.Map;

public class LRUCache<K, V> extends LinkedHashMap<K, V> {
    private final int capacity;

    public LRUCache(int capacity) {
        super(capacity, 0.75f, true);
        this.capacity = capacity;
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size() > capacity;
    }

    public static void main(String[] args) {
        LRUCache<Integer, String> lruCache = new LRUCache<>(3);

        lruCache.put(1, "One");
        lruCache.put(2, "Two");
        lruCache.put(3, "Three");
        System.out.println(lruCache); // {1=One, 2=Two, 3=Three}

        lruCache.get(1);
        lruCache.put(4, "Four");
        System.out.println(lruCache); // {2=Two, 3=Three, 1=One, 4=Four}

        lruCache.put(5, "Five");
        System.out.println(lruCache); // {3=Three, 1=One, 4=Four, 5=Five}
    }
}

这个构造函数的作用是创建一个具有指定初始容量、负载因子和排序模式的LinkedHashMap 实例。代码中的 super(initialCapacity, loadFactor) 调用了父类 HashMap 的构造函数,以设置初始容量和负载因子。而 this.accessOrder = accessOrder 则设置了排序模式。

此外,这个构造函数还会在以下情况下抛出 IllegalArgumentException:

如果 initialCapacity 为负数。
如果 loadFactor 小于等于 0。
通过这个构造函数,用户可以更灵活地控制 LinkedHashMap 的行为,以满足不同的使用场景。例如,在实现 LRU 缓存时,可以设置 accessOrder 为 true,使得 LinkedHashMap 按访问顺序排序,从而能够自动淘汰最久未使用的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boy快快长大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值