Read Buffer API
题目:
http://www.1point3acres.com/bbs/thread-210772-1-1.html
第二题给你一个从文件读数据的API(offset, bytestoread),实现一个新的带buffer的API,这个API会多次调用,每次读的数据可以是文件中任意长度连续的一段,内存充足够用
这题扯了差不多十分钟才弄懂面试官的意思。至于用什么数据结构作buffer,写代码时从数组到列表再到双向队列改了好几遍,居然一直懵逼没想到用hashmap,小哥都不耐烦了,幸好在最后一刻还是说出了要用hashmap,然后时间到。
解题思路:
假设每次读的数据长度是n,然后hashmap的<key, value> = <index, buf> index = 0, n, 2*n, ...
然后以后每次从 x 处读len的数据,只需要取 hashmap.get(x / n) 中 x % n 开始的数据,如果 x % n != 0 则需要再加上 hashmap.get(x / n + 1) 中 0 ~ x % n的数据
大概就是这个意思,但每次读的长度和位置都不定,就用map<index,char>以字符为单位buffer就行了
http://www.1point3acres.com/bbs/thread-210772-1-1.html
第二题给你一个从文件读数据的API(offset, bytestoread),实现一个新的带buffer的API,这个API会多次调用,每次读的数据可以是文件中任意长度连续的一段,内存充足够用
这题扯了差不多十分钟才弄懂面试官的意思。至于用什么数据结构作buffer,写代码时从数组到列表再到双向队列改了好几遍,居然一直懵逼没想到用hashmap,小哥都不耐烦了,幸好在最后一刻还是说出了要用hashmap,然后时间到。
解题思路:
假设每次读的数据长度是n,然后hashmap的<key, value> = <index, buf> index = 0, n, 2*n, ...
然后以后每次从 x 处读len的数据,只需要取 hashmap.get(x / n) 中 x % n 开始的数据,如果 x % n != 0 则需要再加上 hashmap.get(x / n + 1) 中 0 ~ x % n的数据
大概就是这个意思,但每次读的长度和位置都不定,就用map<index,char>以字符为单位buffer就行了

Comments
Post a Comment