锐捷、oppo2013校园招聘

2013-09-11 2013-09-11

锐捷2013校园招聘笔试题

转自:http://blog.csdn.net/lanyan822/article/details/8010474

题不多,全是c语言题,下面只是一些不太确定答案的题。

1、

  1. int x=3,y=4,z=5;  
  2. printf("%d\n",~((x^y)&&!z));  

正确答案:-1

 

其实这道题有点不太确定的就在于~0,到底等于多少。

~0=11111111 11111111 11111111 11111111

补码转换原码,等于除符号位取反+1,所以转换为10000000 00000000 00000000 00000001.所以结果为-1

2、

 

  1. printf("%d\n",strlen("912\0912"));  


正确答案:3

 

3、

 

  1. int a[100][200];  
  2. printf("%d\n",&a[37][45]-&a[0][3]);  


正确答案:7442

 

4、

 

  1. int (*ptr)[5]=(int (*)[5])100;  
  2. printf("%d\n",(int)(&(*(ptr+1))[2]));  


正确答案:128.

 

100+5*4+2*4=128

5、

 

  1. int p[3][4][5];  
  2.     int *q=(int *)p;  
  3.     int(*s)[5]=&p[1][0];  
  4.     int i;  
  5.     for(i=0;i<60;i++)  
  6.         q[i]=i;  
  7.     //printf("%d\n",p[1][7][1]);  
  8.     //printf("%d\n",(*(s+1))[3]);  
  9.     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.下面语句的输出结果:

 

  1. cout<<strlen("\t\"\065\xff\n");  


A、5

 

B、15

C、8

D、语句不合法

正确答案:A

\065和\xff都是ASCII字符。做题需仔细。

2、请填写下列代码的输出内容

 

  1. int a,b,c,d;  
  2. a=10;  
  3. b=a++;  
  4. c=++a++;  
  5. d=10*a++;  
  6. 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、

  1. int *p1=(int *)0x800500;  
  2. int *p2=(int *)0x800518;  
  3. cout<<p2-p1<<endl;  

代码执行结果?

 

正确答案:6

0x18转换10进制为24.

7、

 

  1. struct ks  
  2. {  
  3.     int a;  
  4.     int *b;  
  5. }s[4],*p;  
  6. int n=1,i;  
  7.     for(i=0;i<4;i++)  
  8.     {  
  9.         s[i].a=n;  
  10.         s[i].b=&s[i].a;  
  11.         n+=2;  
  12.     }  
  13.     p=&s[0];  
  14.     p++;  
  15.     printf("%d,%d\n",(++p)->a,(p++)->a);  

正确答案:7,3

 

这道题需要注意printf参数从右边开始压栈

程序填空题:

一道2分查找,一道树的层次遍历

 

8、链表排序(pps2013校园招聘笔试题)

考试时候,思维短路。知道思想,就是没写出来。

 

    1. //单链表排序  
    2. Node *ListSort(Node *head)  
    3. {  
    4.     if(head==NULL || head->next==NULL)  
    5.         return head;  
    6.     Node *p=head->next;  
    7.     head->next=NULL;  
    8.     Node *q;  
    9.     while(p!=NULL)  
    10.     {  
    11.         q=p->next;  
    12.         p->next=NULL;  
    13.         if(p->data<=head->data)//插入结点小于头结点,直接插入结点next指向头结点,然后将插入节点置为头结点  
    14.         {  
    15.             p->next=head;  
    16.             head=p;  
    17.         }else  
    18.         {  
    19.             Node *temp=head;  
    20.             while(temp->data<p->data && temp->next!=NULL)//找到第一个比插入节点数字大的节点,或者找到尾节点  
    21.                 temp=temp->next;  
    22.             if(temp->data>p->data)//第一种情况找到第一个比插入节点数字大的节点  
    23.             {  
    24.                 //将插入节点放在第一个比插入节点数字大的节点的后面  
    25.                 p->next=temp->next;  
    26.                 temp->next=p;  
    27.                 //交换数据。这里也是经常问到的o(1)下实现在链表某一位置的插入  
    28.                 int t_data=p->data;  
    29.                 p->data=temp->data;  
    30.                 temp->data=t_data;  
    31.             }else  
    32.             {  
    33.                 temp->next=p;  
    34.             }  
    35.         }  
    36.         p=q;  
    37.     }  
    38.     return head;  
    39. }

 

posted @ 2013-09-11 16:42  永不止步,永无止境  阅读(307)  评论(0)    收藏  举报