c**y 发帖数: 73 | 1 1. 大数乘法
给定两个非常大的数,写出一个函数返回它们的乘积。可以自己定义需要用到的数据结
构来表示每个数。我用了vector。
2. 系统设计的问题。
给定一个数据中心,如何收集statistics在给定的时间范围(t0,t1)。
这是系统设计题,没啥代表性。
3. 给定一个点,找出一百万个点中距离这个点最近的k个点。
用heap来存当前最近的k个点,然后scan这一百万个点一遍。
4. 给定一个函数fetch10k(),要求实现另外一个函数fetch()。这个题的说明比较复杂
,最后没有写完。具体说明如下。
fetch10k()是给定的,signature如下。
int fetch10k(char *buffer)
这个函数干的事情是从底层读出数据,写到传入的buffer中。这个buffer是一个默认
10k bytes大小的空buffer。返回类型int,返回写入后buffer中数据的size。
注意返回的数据大小和底层的数据大小有关。如果底层数据size是0,那么返回也是0,
因为buffer里什么也没有写。
如果底层数据是小于10k,例如5k,那么返回值是5k,因为只有5k... 阅读全帖 |
|
r**h 发帖数: 1288 | 2 最后一题我的想法是,根据fetch10k的返回值是否是10k,以及当前size是否大于
fetch10k的返回值分四种情况讨论。每次用fetch10k取出数据放到临时buf里,然后再
根据情况从临时buf拷贝相应的长度到总buf里,并记录从开始读取为止已经读的总size。
不过那个额外条件我不是很理解怎么做:按理说静态的文件指针应该是包含在fetch10k
里面不能被访问到,也就是说不能通过seek或者回退指针的方法来暂存已经被读出的数
据。这时候应该是需要另外一个buf来hold住被读出但是没有被使用过的部分,或者当
前buf完全存下10k数据,但是要有一个额外的变量来指明当前buf的实际大小这样下次
call的时候可以先检查当前buf可用的部分。
不过根据函数的signature不知道如何把这些额外的信息返回来供下次使用,难道是要
用全局变量或者静态变量吗? |
|
c*********m 发帖数: 43 | 3 最后一题写了个,大家看看有啥bug没
#define MAX_BUFFER_SIZE 10 * 1024
extern int fetch10k(char *buffer);
char temp[MAX_BUFFER_SIZE + 1];
int fetch(int size, char *buffer)
{
assert(size > 0 && buffer != NULL);
static int currentPos = 0;
string s;
int currSize = 0;
static int len = 0;
while (1)
{
if (currentPos != len)
{
int i;
for (i = currentPos; i < len; i++)
{
... 阅读全帖 |
|
r*******e 发帖数: 7583 | 4 夫家是F?
最后一题就是著名的read1024()啊,G以前经常问,版上讨论过多次
这题很完整写出来没有错的都很不容易
buffer
fetch10k |
|
r*******e 发帖数: 7583 | 5 嗯,需要一个全局或者静态变量
size。
fetch10k |
|