面试题:Cache Reader For AWS

昨天面了个试gg了,代码没写完,因为找思路的时间太长

题意

有一个S3的storage的接口是

1
void read(int offset, int limit, char* output);

但是这玩意贼慢。要你实现一个CacheReader,来优化clients的read操作。最多能存n bytes的数,尽量少直接请求S3。

做法

一开始想的复杂了、、因为每个read都有一个[l,r]区间,然后我就在想怎么维护这些区间、、忘了OS课上讲的东西了。

其实这种很明显,得自己定义一个pageSize。不然怎么实施缓存替换策略?分成固定大小的块之后,各种处理都会变得简单很多。比如GFS,要是按照各个文件的长度分配磁盘那不就要了老命了。

缓存替换用LRU就行。

面的太二了。惭愧。