【瓴岳科技】历史面试题

07-21 1082阅读

【瓴岳科技】历史面试题

  • 1. 公司简介
  • 2. 写一个lru

    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 extends LinkedHashMap {
        private final int capacity;
        public LRUCache(int capacity) {
            super(capacity, 0.75f, true);
            this.capacity = capacity;
        }
        @Override
        protected boolean removeEldestEntry(Map.Entry eldest) {
            return size() > capacity;
        }
        public static void main(String[] args) {
            LRUCache 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 按访问顺序排序,从而能够自动淘汰最久未使用的元素。

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]