百思桥[笔试题]
2013-09-25

注:笔试题根据面试者回忆记录,仅供参考;

一、选择题
1、
main()
{
     struct node
     {
          int a;
          int b;
          int c;
      };
     struct node s={3,5,6};
     struct node *pt = &s;
     printf("%d", *(int*)pt);
}
这段程序的输出是:
A 3     B5     C6     D 7

2、
int foo(int x, int n)
{
     int val;
     val=1;
     if(n>0)
     {
          if(n%2==1) val=val*x;
          val=val*foo(n*x, n/2);
     }
     return val;
}   
这段代码对x和n完成什么样的功能(操作)?
A x^n     B x*n     Cn^x     D以上均不是

3、
int *fl(void)
{
     int x=10;
     return(&x);
}

int *f2(void)
{
     int *ptr;
     *ptr=10;
     return ptr;
}

int *f3(void)
{
     int *ptr;
     ptr=(int*)malloc(sizeof(int));
     return ptr;
}
上面这3个函数哪一个最可能引起指针方面的问题?
A 只有f3     B只有f1和f3     C只有f1和f2     Df1,f2,f3

4
main()
{
     char p;
     char buf[10]={1,2,3,4,5,6,9,8};
     p=(buf+1)[5];
     printf("%d",p);
}
这段程序的输出是:
A 5     B 6     C 9     D 以上都不对

二、简答题
1、Linux的进程间通信:管道通信、消息队列、共享内存分别适合哪些场合?

2、Linux环境中,库函数调用和系统调用的不同点?

3、嵌入式设备中的文件系统有哪些?NANDflash适合用哪种?

4、面向对象的三个基本特征,并简单叙述

5、阅读下面代码:

#pragma pack(8)
     struct s1{ short a;
                      long b;
     }
     struct s2{ short c;
                      long d;
                      long long e;
     }
#pragma pck()
     请问:1、sizeof(s2)=?
                2、s2的s1中a后面空了几个字节接着是b?

6、简答socket编程:一个client和一个sever,两者之间建立了一个基于TCP的socket连接,在刚刚建立好连接后,尚未进行数据传输,server端应用程序突然crush掉了,现在立刻重启server端应用程序(假设间隔很短),一般情况下server端应用程序是无法启动的。请问是什么原因?如何解决这个问题?

7、编程题:不调用库函数实现strcpy函数,将strSrc拷贝到strDest,并返回目的地址:
char *strcpy(char* strDest, const char *strSrc)  //补充下面代码
{

}