网宿校招笔试题节选

偶是一个大四的学生,前几天被一个厦大的娃抓着,连续加班打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)的话,代表第五个域名被攻击。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值