http://hi.baidu.com/sukiclover/blog/item/c30eb38f681916fbf11f3657.html
选择题
第一题,两台电脑在局域网中,机器为千兆网卡,一台作服务器里面有一张网页为 1K 字节,问另一台下载这个网页的速度。
我答:我不知道 1K 是指 1024 还是 1000 …不过按我的算法没区别, 1000 000000/8/1k
我选了 10 000 张 / 秒
第二题,单链表插入一个节点的问题。在 p 指向的节点后插入一个 q 指向的节点。
我答: q->next=p->next;p->next=q;
之后乱序,我记不清楚题号了。
有一题,地图染色问题,每个国家用矩形表示,让相邻国家颜色不同。离散里面有
有一题,问快速排序达到最坏情况时间复杂度 n2 的原数数组的具体情形。见数据结构
有一题,很扯的…指针取址符号混乱,选项却很白痴。
有一题,入栈序列 1,2,3,4,5,..,n ,第一个出栈的是 n ,问第 i 个出栈的是多少。
我答: n-i+1
最后一题,给中缀和后缀表达式,求前缀表达式。
填空题
第一题:数组 (a1,a2,a3,a4..,an) ,删除任意一个的概率相同,问平均删除一个要移动多少个。
我答: (n-1)/2
第二题:一个程序填空,程序大意是在数组里面找第二大的数。
注:不难
第三题:大致如下一个程序片段:
void xxx(x)
{
intcountx=0;
while(x)
{
countx++;
x=x&(x-1);
}
cout<<countx<<endl;
}
问 xxx(9999) 输出什么。
我答: 8 ,记得做 ACM 的时候碰到过那个式子,貌似关于排列的,具体意思忘记了,搞一下可以明白是 x 变成二进制,里面有多少个 1 就是答案。
第四题:大致如下一个代码
inta[3][2]={1,2,3,4,5,6};
int*p[3];
p[0]=a[1];
问 *(p[0]+1) 是个什么东西
我答: 4 ,蛮基础嗯。
简答题
第一题: 7 公斤米, 50 克砝码, 200 克砝码各一个,称 1350 克米问最少要多少次,并编程回答。
我答, 6 次,可能一开始会想到 1350/250 + 2 = 7 次,说明贪心无效。我不知道我的方法是不是很笨,用了递推,或者你可以看成是动态规划。转化一下题目的意思就是 1 克和 4 克砝码,问多少次称出 27 克大米, F[N] 代表 N 克大米最少需要多少次。
则有:
F[N]=min{F[N-1],F[N-4],F[N-5]}+1
代码如下:
intfindmin(int weight)
{
int v= weight/50;
int f[150];
f[0]=0;f[1]=1;f[2]=2;f[3]=3;f[4]=1;
if (v<5) return f[v];
int i;
for (i=5;i<=v;i++)
f[i]=min(f[i-1]+1,f[i-4]+1,f[i-5]+1);
return f[v];
}
注:我一开始愣了很久,我在想,称好的大米可以作为砝码来用吗??这样就是另一种问题了吧。
第二题, n 个鸡蛋放到 m 个篮子,每个篮子不能为空,问所有可能的摆放方法,使得满足 对于任意一个不大于 n 的数可以又若干个篮子里面的鸡蛋数加起来。
我答:不能想出算出所有摆放方法的方法,期待 ACM 大牛路过。
第三题,大意淘宝网的评论系统,原先只有一个评论表,对于现在大用户,大数据量,大访问量,请设计一个合理可行的架构来优化关于评论的数据库。
我答:哥蒙了,哥胡言乱语的。
附加题:前端设计师必答
第一题:图片默认为半透明,鼠标移上去变成不透明。
我注: img 标签 onfocus 和 onblur 的应用,注意这个透明的属性在 IE 和 FireFox 下是不同的。而且用 js 控制的时候,属性名也要注意…
第二题:一个输入框,和一个列表框,列表框里面有很多字符串,在输入框里面输入字符串时,列表框中字符串前缀是该字符串的做高亮或者其他显著表示。最后回车选择或者鼠标双击列表框选择。
我注:看上去要写不少东西啊……实在懒了。
总结:
基础偏多,大题很算法,很偏实际应用,前面不会不应该了,后面看造化,毕竟时间也不多。