神州数码网络公司和富士通软件研发笔试题

  
  
11月8日
软件开发工程师笔试题
//神州数码网络公司
 
第一部分选择:
1-下列总线接口哪个不是PC的外围扩展总线
     a、ISA总线上
     b、CPU局部总线上
     c、PCI总线上
     d、EISA总线上
2-哪一种情况适用现行链表的链式存储
   a、大量数据,大量随机读
   b、大量数据,大量插入和删除
   c、大量数据,大量的随机写入
3-数组Q[1——m]表示的环形队列,f为当前队头在数组中的位置,r为队尾的后一
位置 顺时针,则队列的元素个数为:
   a、r-f
   b、m+r-f mod m
   c、m-r+f mod m
   d、m-r-f mod m
4-CMM模型软件成熟度5级排序。
        CMM1 初始级
        CMM2 可重复级
        CMM3 已定义级
        CMM4 已管理级
        CMM5 优化级
5-二分法查找11顺序表{3 6 8 10 12 15 16 18 21 25 30},需要进行几次关键值比

  a、2   b、3   c、4   d、 5
第二部分简答:
1、在多任务操作系统中,进程的状态ready, run, pend, zombie的含义和相互的
迁移条件。
 
 
2、VC++中,如何调用操作系统的函数。
 

3、TCP/IP模型中,画出分层协议并解释。ARP是什么作用。
 
4、双向循环链表,删除两个链表data值相同的结点。写程序。
 

5、不改变其他位的值,写一段程序分别将char型变量a的bit3置位和复位。
 

第三部分编程:
1、改错
 char *string_test()
 {
  char *a="1234567890";
  char c[10];
  int *b;
  b=malloc(sizeof(a));
  strcpy(b,a);
  strncpy(&c,a,10);
  printf("%s/n",c);
  return b;
 }
 main()
 {
  char *b=string_test();
  printf("%s/n",b);
  return;
 }
参考答案:
 char *string_test()
 {
  char *a="1234567890";
  char c[11];
  char *b;
  b=(char *)malloc(strlen(a)+1);
  strcpy(b,a);
  strncpy(c,a,11);
  printf("%s/n",c);
  return b;
 }
 int main()
 {
  char *b=string_test();
  printf("%s/n",b);
  free(b);
  return 0;
 }
2、用标准C实现strcat和memmove函数
 char *strcat(char *dest, const char *src)
 char *strcat(char * dst, const char * src)
{  
    char *cp=dst;
    while(*cp)
    cp++;
    while(*cp++=*src++)
    NULL;
    return dst;
}

char *strcpy(char *dest, const char *srce)
{
 char *addr=dest;
 while((*dest++=*srce++)!='/0')
  NULL;
 return addr;
}
 
 void *memmove(void *dest, const void *src, size_t count)
  void* memmove(void* dest, void* source, size_t count)
   {

       void* ret = dest;

       if (dest <= source || dest >= (source + count))

       {   

         while (count --)

               *dest++ = *source++;

     }

     else

     {

       dest += count - 1;

       source += count - 1;

       while (count--)

                *dest-- = *source--;

      }

      return ret;

}

 ps: void* memcpy(void* dest, void* source, size_t count)
      {

           void* ret = dest;

          //copy from lower address to higher address

          while (count--)

                  *dest++ = *source++;

 

           return ret;

      }

 

3、设计一个linux或者windows下c语言,基于TCP的多线程服务器和客户端发送程
序。(1)对服务器程序,收到客户端字符串后,用printf()显示。要求对客户端的
报文处理采用多线程并发处理方式。
(2)对客户端程序,接收来自键盘的字符串,发给指定的IP服务器。
 
————————————————————————————————————
//福建富士通
1、在64位高档机中,long占字节数为
a、4      b、8      c、32     d、 64
2、函数中局部变量生成于__中
a、堆      b、栈  c、静态存储区   d、代码存储区
3、不正确的附值或赋初值方式为__
a、char str[]="string";
b、char str[10]; str="string";
c、char *p="string";
d、char *p; p="string";
4、对于以下的变量定义,表达式___是正确的
struct node {
 char s[10];
 int k;
 } p[4];
a、p->k=2;   
b、p[0].s="abc";
c、p[0]->k=2;
d、p->s='a';
5、下面程序的输出__
 #pragma pack(1)  //如果#pragma pack(4)
 void main()
 {
  struct test {
  char c;
  short s1;
  short s2;
  int i;
  };
 cout<<sizeof(test)<<endl;
 }
a、9     b、10     c、12      d、16
6、下面的程序段:
   char a[3],b[]="china";
   a=b;
   printf("%s",a);
a、输出china  b、ch    c、chi   d、编译出错
7、在x86架构的计算机上运行下面程序输出为_____
void main()
{
 int i=0x01020304;
 unsigned char *pc=(unsigned char *)&i;
 for(int j=0;j<sizeof(i);j++)  {
  cout<<*pc++<<"/t";    cout<<(int)*pc++<<"/t";

 }
}
a、4 3 2 1     b、1 2 3 4.
c、3 4 2 1     d、 2 1 4 3
8、在SUN SPARC工作站上运行上面的程序结果为__

9、不是建立函数的目的选项是:
a、提高程序的运行效率
b、提高程序可读性
c、减少程序篇幅
d、减少程序文件所占内存
10、函数原型为void func();以下哪个函数指针类型定义是正确的
a、typedef FUNC void (*) ()
b、typedef void FUNC()
c、typedef void (*FUNC)();
d、typedef FUNC void();
11、下列函数中,可作为虚函数的是————
a、全局函数      b、构造函数
c、静态全局函数   d、析构函数
12、对静态成员不正确的描述是——
a、静态成员不属于对象,是类的共享成员
b、要在类外定义初始化
c、调用时,要通过类或对象激活,所以静态成员函数拥有this指针
d、非静态成员函数也可以操作静态数据成员
13、在创建派生对象时,构造函数的执行对象是——
a、对象成员构造函数、基类构造函数、派生类本身的构造函数
b、派生类本身的构造函数、基类构造函数、对象成员构造函数
c、基类构造函数、派生类本身的构造函数、对象成员构造函数
d、基类构造函数、对象成员构造函数、派生类本身的构造函数
14、假设V为抽象类,下列声明哪个正确
a、V fun(int)                  b、 V *p
c、int fun(V)                 d、V Obj
15、假设已定义变量float data;
以二进制方式把data值写入输出文件流对象outfile中去,正确的是:
a、outfile.write((float *)&data, sizeof(float));
b、outfile.write((float *)&data, data);
c、outfile.write((char *)&data, sizeof(float));
d、outfile.write((char *)&data, data);
16、如下类定义:
 class Foo {
 public:
  Foo(int v):value(v) {}    //a
  ~Foo() {}                 //b
 private:
  Foo() {}       //c
  int value=0;    //d
 };
有错误的是____
17、若执行语句: Point a(2), b[3], *c[4];
则Point类的构造函数被调用几次
a、1           b、2   c、3    d、4
18、下列关于栈的叙述正确的是
a、在栈中只能插入数据    b、只能删除数据
c、栈是先进先出的线性表  d、是先进后出的线性表
19、一个队列入列顺序是1,2,3,4,则输出顺序是
a、4321   b、1234   c、1432   d、3241
20、若进栈顺序为1,2,3,4,假定进栈和出栈可以穿插进行,则可能的出栈顺
序为:
a、2413     b、3142  c、3412   d、1234
21、算法的空间复杂度指
a、算法程序的长度   
b、算法程序的指令条数
c、算法程序占的存储空间
d、算法执行过程中所需的存储空间
22、某数列有1000个各不相同的单元,有低到高排列,要对该数进行二分法检索
,最坏的情况下,需要检查多少个单元
a、1000     b、10    c、100    d、500
23、已知数组A中,每个元素A[I][J]在存储时要占3个字节,设I从0变到4,J从0
到9,分配内存从地址SA开始连续按行存储分配的。问:A[4][7]的起始地址为:
a、SA+84              b、SA+99
c、SA+120          d、SA+141
24、使用双向链表存放数据的优点是
a、提高检索速度         b、方便的插入和删除数据
c、节约存储空间         d、很快回收存储空间
25、若某链表最常用的操作是在最后一个结点之后插入一个结点并删除最后一个
结点,则采用____存储方式最省时间
a、单链表       b、双链表
c、带头节点的双循环链表
d、单循环链表
26、在理想情况下,散列表中查找元素所需比较次数为:
a、n     b、0      c、n/2     d、1
27、Ethernet属于数据链路层协议
28、普通交换机和路由器工作在
a、数据链路层和传输曾
b、链路层和网络层
c、都是网络层
d、网络层和传输层
29、以太网的MTU值为
a、500     b、1492     c、1500   d、1982
30、在一个Windows SDK 的基本应用程序框架中,有如下消息循环:
 while(GetMessage(&Msg,NULL,0,0)  {
  TranslateMessage(&Msg);
  DispatchMessage(&Msg);
 }
下面哪个消息使得该消息循环退出运行,从而终止整个应用程序的运行
a、WM_DESTROY      b、WM_QUIT
c、WM_CLOSR        d、WM_CREATE
31、进程和线程最主要的区别:
a、CPU调度方式不同     b、优先级不同
c、程序入口不同       d、进程有独立的地址空间,线程共享地址空间
32、以下哪项不适合用于进程间通讯
a、socket       b、Pipe
c、共享内存     d、全局变量

你可能感兴趣的:(c,String,网络,存储,float,CMM)