昨天面了个试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就行。
面的太二了。惭愧。