# 1.笔试题
# 1.1大文件查找前100个最大的数字
有一个文本文件(data.txt)里面每行为一个数字切文件预计有100W行左右,请以最快的速度在一台主机4核cpu/1G内存的主机上找出前100个最大的数字,并且输出其在文件所在行。 注意:请尽量提供该程序在生产运行所需全部信息。
# 1.2实现LRU算法(禁用LinkedHashMap)
LRU(Least recently used 最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高” 设计一个实现以下接口的LRU缓存方法,不能使用LinkedHashMap.
public interface LruCache<K, V> {
/**
* Set the capacity of the total cache num
*
* @param capacity
* capacity
*/
void setCapacity(int capacity);
/**
* Update cache according to LRU definition. This time complexity of this method should be O(1).
*
* @param cacheKey
* key
* @param cacheValue
* value
*/
void put(K cacheKey, V cacheValue);
/**
* 获取元素
*
* @param cacheKey
* 元素key
* @return value
*/
V get(K cacheKey);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30