网宿校招笔试题节选

来源:互联网 发布:网络接口 编辑:程序博客网 时间:2024/06/06 20:13

偶是一个大四的学生,前几天被一个厦大的娃抓着,连续加班打RPG,压力甚大,跑去厦大打了一次酱油。

第一题

//intel386平台下int main(){int a[2000];char *p = (char *)a;for(int i=0;i<2000;i++)a[i]=-1-i;printf("%d\n",strlen(p));}

首先,intel386说明这是一个小端机器,所以,int中的字符在内存中的排列是左边是高位,右边是低位,比如12 345  在内存中为(39300000 000000000000000000000000);

其次,我们可以注意到,a数组中保存的是负数,负数在内存中以补码的形式保存,char *p指向整型数组的时候,char 1字节,int 4字节,strlen是根据'/0'判断结束的,'/0'的ASCII码是0;

最后,可以得出结论,判断int数组中何时从一开始的-1(11111111 11111111 11111111 11111111)变成(00000000 111111111111111111111111),得出答案是1020


/////////////////////////////////////////////////////补充/////////////////////////////////////////////////////
中间的编程题

1、一个数组,求最大最小值,要求比较次数为2*(n-1)次。
2、 逆序输出单链表。
3、输出单链表倒数第n个元素。
4、一个数组,其中有一个数字超过了一半的出现频率,如何在o(n)的时间内找出来,这个,可以参考何海涛的博客。
5、一个数组,长度为n,要求是,输入一个n‘,n’<n,输入一个k,求出前n‘个元素的第k大元素,前提是:很频繁的查询。
/////////////////////////////////////////////////////补充/////////////////////////////////////////////////////


最后一题

3个节点7个域名,当流量异常的时候如何快速找到该域名。

个人想法,用1代表节点流量异常。

这样子,正常运行的时候是000,若节点1和节点3出现流量异常(101)的话,代表第五个域名被攻击。