锐捷、oppo2013校园招聘
2013-09-11 2013-09-11
转自:http://blog.csdn.net/lanyan822/article/details/8010474
题不多,全是c语言题,下面只是一些不太确定答案的题。
1、
- int x=3,y=4,z=5;
- printf("%d\n",~((x^y)&&!z));
正确答案:-1
其实这道题有点不太确定的就在于~0,到底等于多少。
~0=11111111 11111111 11111111 11111111
补码转换原码,等于除符号位取反+1,所以转换为10000000 00000000 00000000 00000001.所以结果为-1
2、
- printf("%d\n",strlen("912\0912"));
正确答案:3
3、
- int a[100][200];
- printf("%d\n",&a[37][45]-&a[0][3]);
正确答案:7442
4、
- int (*ptr)[5]=(int (*)[5])100;
- printf("%d\n",(int)(&(*(ptr+1))[2]));
正确答案:128.
100+5*4+2*4=128
5、
- int p[3][4][5];
- int *q=(int *)p;
- int(*s)[5]=&p[1][0];
- int i;
- for(i=0;i<60;i++)
- q[i]=i;
- //printf("%d\n",p[1][7][1]);
- //printf("%d\n",(*(s+1))[3]);
- printf("%d\n",p[1][7][1]*(*(s+1))[3]);
正确答案:1568
p[1][7][1]=56.当时考虑会不会越界。仔细一算,竟然没有越界。
6、2/13 4/11 2/3 8/7 2 写出下一个数:
正确答案:4
这样写就好看了,2/13 4/11 6/9 8/7 10/5
oppo2013笔试题-不全
时间:2012-9-17 地点:电子科大
题目:选择,填空,代码补全+行测(智力题,性格测试)
题目倒是不难,各种坑啊。一定要仔细啊。又吃亏了。。
1.下面语句的输出结果:
- cout<<strlen("\t\"\065\xff\n");
A、5
B、15
C、8
D、语句不合法
正确答案:A
\065和\xff都是ASCII字符。做题需仔细。
2、请填写下列代码的输出内容
- int a,b,c,d;
- a=10;
- b=a++;
- c=++a++;
- d=10*a++;
- printf("b,c,d:%d,%d,%d",b,c,d);
正确答案:编译错误
因为前自增和后自增都需要左值。所以++a++这句代码编译错误
3、写一个a个字节对齐的宏
正确答案:#pragma pack(a)
4、预处理器标志#error的目的是什么?
正确答案:生成编译错误消息
http://blog.csdn.net/chenghf1979/article/details/5201074
5、动态链接库和静态链接库的区别
http://www.cnblogs.com/Winston/archive/2008/07/05/1236273.html
6、
- int *p1=(int *)0x800500;
- int *p2=(int *)0x800518;
- cout<<p2-p1<<endl;
代码执行结果?
正确答案:6
0x18转换10进制为24.
7、
- struct ks
- {
- int a;
- int *b;
- }s[4],*p;
- int n=1,i;
- for(i=0;i<4;i++)
- {
- s[i].a=n;
- s[i].b=&s[i].a;
- n+=2;
- }
- p=&s[0];
- p++;
- printf("%d,%d\n",(++p)->a,(p++)->a);
正确答案:7,3
这道题需要注意printf参数从右边开始压栈
程序填空题:
一道2分查找,一道树的层次遍历
8、链表排序(pps2013校园招聘笔试题)
考试时候,思维短路。知道思想,就是没写出来。
- //单链表排序
- Node *ListSort(Node *head)
- {
- if(head==NULL || head->next==NULL)
- return head;
- Node *p=head->next;
- head->next=NULL;
- Node *q;
- while(p!=NULL)
- {
- q=p->next;
- p->next=NULL;
- if(p->data<=head->data)//插入结点小于头结点,直接插入结点next指向头结点,然后将插入节点置为头结点
- {
- p->next=head;
- head=p;
- }else
- {
- Node *temp=head;
- while(temp->data<p->data && temp->next!=NULL)//找到第一个比插入节点数字大的节点,或者找到尾节点
- temp=temp->next;
- if(temp->data>p->data)//第一种情况找到第一个比插入节点数字大的节点
- {
- //将插入节点放在第一个比插入节点数字大的节点的后面
- p->next=temp->next;
- temp->next=p;
- //交换数据。这里也是经常问到的o(1)下实现在链表某一位置的插入
- int t_data=p->data;
- p->data=temp->data;
- temp->data=t_data;
- }else
- {
- temp->next=p;
- }
- }
- p=q;
- }
- return head;
- }

浙公网安备 33010602011771号