高级软件工程师试题B

一、          单选题(每题1分,共70分)

  1. 以下哪个表述不正确___D___。

A.ARM是一个公司的名称

B.ARM是对一类微处理器的通称 

C.ARM是一种技术的名字

D.ARM是一款芯片的名称

  1. ( D ) 命令是在vi编辑器中执行保存退出。

A  :q

B  ZZ

C  :q!

D  :wq

  1. GCC的正确编译流程为 ( A ) 。

A 预处理-编译-汇编-链接    

B 预处理-编译-链接-汇编    

C 预处理-链接-编译-汇编    

D 编译-预处理-汇编-链接

  1. 下列命令中,删除文件的命令是:___D___。

A. ls

B. mkdir

C. tail

D. rm

  1. 嵌入式处理器指令的执行周期不包括__A____。

A.启动

B.取指令

C.指令译码

D.执行指令

  1. 将系统启动代码读入内存是___C___的主要职责。

A.内存管理

B.VFS

C.Boot Loader

D.虚拟内存

  1. 下列不属于嵌入设计处理器本身带有的基本接口是___C___。

A.串口

B.并口

C.PCIE

D.AD/DA

  1. 下列选项中,描述错误的是__D__。

A.arch为体系结构相关的代码

B.block为块设备的通用函数

C.crypto只能用于加密和散列算法

D.ipc进程件通信代码

  1. SRAM与DRAM相比,优点是___A___。

       A.SRAM比DRAM快

       B.DRAM与SRAM耗电多

       C.SRAM比DRAM存储密度高

       D.以上都是

  1. 预处理后的文件后缀名为___D___。
  2. .c
  3. .C
  4. .M
  5. .i
  1. 下列哪条指令把寄存器R0、R1的值相加后存到R2中:__C____。

A.AND R0, R1, R2

B.SUB R0, R1, R2

C.ADD R2, R1, R0

D.AND R1, R2, R0

  1. 下面描述不属于Bootloader的第二阶段的是:___A___。
    1. 硬件设备初始化
    2. 初始化本阶段要使用到的硬件设备
    3. 检测系统内存映射
    4. 为内核设置启动参数
  1. 下面关于UBOOT有点描述错误的是:___D___。
    1. 开发源码
    2. 仅支持Linux操作系统
    3. 支持多个处理器系列
    4. 较高的可靠性和稳定性
  1. 对于“ls –l|more”操作,命令解释程序运行进程ls和more使用了以下哪种通信方式___A___。
  1. 管道
  2. 消息队列
  3. 套接字
  4. 信号
  1. 下列关于Linux根文件目录,描述错误的是___C___。
  2. /bin目录下存放一般用户可以使用的基本命令
  3. /sbin目录下存放系统命令
  4. /dev目录下存放设备文件
  5. /etc目录下存放各种配置文件

16、指令“LDMIA R0!, {R1, R2, R3, R4}”的寻址方式为(  C  )。

              A. 立即寻址                                           B. 寄存器间接寻址

              C. 多寄存器寻址                                    D. 堆栈寻址

       17、下列不属于RISC计算机特点的是( C )。

              A. 流水线每周期前进一步。     B. 更多通用寄存器。

              C. 指令长度不固定,执行需要多个周期。 

              D. 独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输。

       18、USB接口移动硬盘最合适的传输类型为(  B )。

           A. 控制传输             B. 批量传输             C. 中断传输             D. 等时传输

       19、在嵌入式系统设计中,嵌入式处理器选型是在进行( C  )时完成。

              A. 需求分析             B. 系统集成              C. 体系结构设计     D. 软硬件设计

       20、无符号二进制数左移一位,则数值(  A  )。

              A. 增大一倍               B. 减小一倍                C. 增大10倍              D. 不变

21、登陆系统后首先进入下列哪一个目录?(  D    )

      A./home

      B.root的主目录

      C./root

      D.用户自己的主目录

22、用”rm -i”,系统会提示什么来让你确认  ( B  )

      A.命令行的每个选项

      B.是否真的删除

      C.是否有写的权限

      D.文件的位置

23、除非特别指定,cp假定要拷贝的文件在下面哪个目录下( B  )

      A.home目录

      B.当前目录

      C.root目录

      D.用户目录

24、Linux的创始人是芬兰Helsinki大学的学生,他是谁(  B )

      A.Andrew Tanenbaum

      B.Linus Torvalds

      C.Bill Gates

      D.Richard Stallman

25、假如你得到一个运行命令被拒绝的信息,你可以用哪个命令去修改它的权限使之可以正常运行( B  )

      A.path=

      B.chmod

      C.chgrp

      D.chown

 26、显示用户的主目录的命令是什么( A  )

      A.echo $HOME

      B.echo $USERDIR

      C.echo $ECHO

      D.echo $ENV

27、用来分离目录名和文件名的字符是什么( A  )

      A.反斜杠 (/)

      B.点号 (.)

      C.减号 (-)

      D.星号 (*) 

28、确定myfile的文件类型的命令是什么( C  )

      A.type myfile

      B.type -q myfile

      C.file myfile

      D.whatis myfile

29、按_____键能中止当前运行的命令( B  )

      A.Ctrl-D

      B.Ctrl-C

      C.Ctrl-B

      D.Ctrl-F

30、哪个符号加在命令后面可以在后台执行程序(    B     )

      A.@                         B.&

      C.#                             D.*

31、通过shell执行一个命令,必须先敲入一个__B___

      A. 参数

      B.命令

      C.操作符

      D.终端ID号

32、当登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么?(  A )

      A.PID                                       B.UID

      C.NID                                      D.CID

33、想查找system-config-network所在的目录,通过什么命令可以实现?B

      A.whereis system-config-network

      B.which system-config-network
      C.look system-config-network

      D.show system-config-network

34、通过下面哪个命令可以打印显示当前工作的目录(B)

      A.cd                               B.pwd

      C.ls                                 D.ls -l

35、本机有两块硬盘,分别放置在IDE1和IDE2的主盘上,其中挂在IDE2上的主盘有三个主分区,在Linux下IDE2上的主盘第二个主分区的名称为:C

      A.hda2

      B.hdb2

      C.hdc2

      D.hdd2

36一个C程序的执行是从(  A ) 

 A.本程序的main函数开始,到main函数结束

B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C.本程序的main函数开始,到本程序文件的最后一个函数结束

D.本程序文件的第一个函数开始,到本程序main函数结束

37在一个单链表中,若要删除由指针q所指结点的后继,则(D)

A.p= q->next; p->next= q->next    B.p = q->next; p->next =p 

C.p= q->next; q->next= p->next    D.q->next= q->next->next; q->next=q

38下列四组选项中,均不是C语言关键字的选项是( A )  

A.define    B.getc    C.include   D.while

 IF           char       scanf        go

type          printf       case        pow

39C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( C ) 

 A.必须为字母               B.必须为下划线

      C.必须为字母或下划线         D.可以是字母,数字和下划线中任一种字符

40下面四个选项中,均是不合法的浮点数的选项是  B

A)  160.    B)  123     C)一.18    D)一e3

      0.12        2e4.2     123e4          .234

     e3        .e5        0.0           1e3     

41栈结构通常采用的两种存储结构是(  A  )

  A、线性存储结构和链表存储结构   B、散列方式和索引方式  

  C、量表存储结构和数组                  D、线性存储结构和非线性存储结构

42一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(   B   )

 A、110   B、108    C、100     D、120

43若有代数式3ae/bc,则不正确的C语言表达式是( C  ) 

 A. a/b/c*e*3      B.3*a*e/b/c

 C.3*a*e/b*c       D.a*e/c/b*3

44以下不正确的叙述是( D )  

A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。

D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。

45在C语言中,要求运算数必须是整型的运算符是(  D )  

A. /   B. ++  c. !=   D.%

46若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 ( A)   

A.2·500000  B.2.7500OO  c. 3.500000  D. 0.000000。

47循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是(  A  )

     A、(rear-front+m)%m      B、rear-front+1  

     C、rear-front-1             D、rear-front

48向一个栈顶指针为Top的链栈中插入一个s所指结点时,其操作步骤是(D )

A.Top->next=s            B.s->next= Top->next; Top->next=s

C.s->next= Top; Top =s     D.s->next= Top; Top = Top->next

49若x ,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是( D  )

A.  scanf(" %d%lx,%le",&x,&y,&z);

B.  scanf("%2d * %d%lf"&x,&y,&z ); 

C.  scanf("%x %* d%o",&x,&y);

D.  scanf("%x%o%6.2f",&x,&y,&z);  

       50以下说法正确的是(  D   ) 

A.输入项可以为一实型常量,如scanf("%f",3.5);

B.只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");

C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,

如scanf("%4.2f",&f);

D.当输入数据时,必须指明变量的地址,如scanf("%f",&f);

51根据下面的程序及数据的输入方式和输出形式,程序中输入语句的正确形式应该为(  C )

      main()

{char  ch1  ,ch2  ,ch3;

 输入语句

printf("%c%c%c",ch1,ch2,ch3);}

 输入形式:  A B C

 输出形式:  A B

 A.  scanf("%c%c%c",&ch1,&ch2,&ch3);

 B.  scanf("%c,%c,%c", &ch1,&ch2, &ch3);

 C.  scanf("%c %c %c",&ch1,&ch2,&ch3);

 D.  scanf("%c%c",&ch1,&ch2,&ch3);

52下关于运算符优先顺序的描述中正确的是(   C    )      

A.关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符

B.逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符

C.赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符

D.算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符  

53判断char型变量c1是否为小写字母 正确表达式为(  D    )

           A.' a' <=cl<=' z'    B.  (cl> = a)&&(cl<=z)

           C.(' a' >=cl)||(' z' < = cl)  D.(c1>='a')&&(cl<='z')

54执行以下语句后a的值为(   C   ) 

int a,b,c;

a= b= c= 1;

++a||++b&&++c   

A.错误    B.  0      C.  2  D.  1

55下列运算符中优先级最低的是(  A    )

A.?:   B.&&     c.+     D.  !=

56以下程序的运行结果是(   C   ) 

          main()   

           {int m=5;

           if(m++> 5)  printf(" %d\n",m);

            e1se     printf("%d\n",m- - );

       }

     A.4    B.5   C.6    D.7

57以下程序的输出结果是(  C   )  

#include <stdio.h>

main()

{

    int  a=100,x =10,y=20,okl=5,ok2=0;

        if(x<y)

        if(y!=10)

    if(!okl)  a=1;

     else

        if(ok2)  a=10;

        a=-1;

        printf( "%d\n",a );

       A.  1      B.  0    C.-1    D.值不确定

58设有程序段(   C  ) 

     int  k=10;

       while  (k=0)  k= k—1;

     则下面描述中正确的是

A.  while循环执行10次      B.循环是无限循环

C.循环体语句一次也不执行   D.循环体语句执行一次

59下面程序的运行结果是      (   B  ) 

           #include  <stdio. h>

         main()    

           {int i;

for(i=1;i<=5;i++)

     switch(i%5)

{case  0:printf("* ");break;

     case  1  :printf("#");break;

     default  :printf("\n");

       case  2  :printf("&");}

           }

         A.#&&&*  B. #&   C.  #    D.#&

            &           &

            &           &*

60下面程序段(   D  )   

      for  (t=1;  t<=100;t++)

       {scanf("%d",&x);

            if(x<0)  continue;

           printf("%3d",t);}

     A. 当x<0时整个循环结束

     B. x>=0时什么也不输出

     C. printf函数永远也不执行

     D.最多允许输出100个非负整数

二、多选题(10每题330分)

1、下面代码行的空格符合规范的是( AC     )

A.*pApple = 'a

B. flag =! BIsEmpty

C. p = &cMem

D. i ++

2 、设已有定义:float x;,则以下对指针变量p进行定义且赋初值的语句中不正确的是:(   ABC   )。

A、float *p=1024;                             B、int   *p=(float)x;

C、float p=&x;                                 D、float *p=&x;

3、 设变量x,y均已正确定义并赋值,以下if语句中,在编译时能产生正确信息的是(    ABD   )。

    A、if(x++);

B、if(x>y&&y!=0);

C、if(x>0)x--   else y++;

D、if(y<0){;}   else x++;

4、以下for循环的执行次序是(   A  )

for (x=0, y=0; (y=123)&&x<4; x++)

A  执行3次  

B. 循环次数不定    

C. 执行4次   

D. 是无限次循环

5、代码文件由(    ABD    )组成

A.定义文件开头处的版权和版本声明

B. API函数的调用示例

C.全局变量的声明

D.程序的实现体(包括数据和代码)

      6、若用数组名作为函数调用时的实参,则实际上传递给形参的是(  C )

      A.数组中全部元素的值         

      B.数组的第一个元素的值

      C.数组的首地址              

      D.   数组元素的个数

      7、下面程序的输出结果是

#include <stdio.h>

int x,y ;

   f( )

   { int y, a = 25 , b=10;

     x =a + b; y = a - b;

     return;}

     main()

    {

      int a =9 , b =5;

      x = a+b; y = a-b;

     f();

     printf("d%,d%\n",x,y); }

     A. 14,4   B. 35,15    C.35,4    D. 14,15

      8、下列选项中正确的语句组是(   CD    )

A.char s[8]; s={"Beijing"}; B.char *s; s={"Beijing"};

             C.char s[8]="BeijingT"; D.char *s; s="Beijing";

9、若有定义:int *p[3];,则以下叙述中正确的是(   AD  )
A.定义了一个可指向一维数组的指针变量p
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

10、下面程序的输出结果是( C )

int x =1;

 f()

 {static int i = 2; int x = 10;

  x+=++i;

  printf("%d\n",x);}

 main()

 {

  int i;

  for (i=1;i<4;i++) {++x; f();}

  printf("%d\n",x);}

 A. 13,17,22,4   B.13,14,15,15     C.13,14,15,4     D.无答案

三、判断题10每题110

44用do-while语句构成的循环,当while后的表达式的值为零时结束循环。(  )

45、结构体和共同体可以相互欠套,都可以做为函数的参数使用。(    )

46、在C语言里允许两个同类型的结构体之间相互赋值,也可以将一组常量赋给结构体。(    )

47、在C语言里只能对外部或静态的数组进行初始化。(  )

48、在C语言里,一个共同体不是同时存放多个成员变量的,而是存放其中的一个值,但是不确定是那个值。(    )

49、%-20s的作用是告诉系统按照字符串的形式输出,占20列,向右对齐。(    )

50、赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。(   )

51、continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。(    )

52、在C语言里数组的下标都是取整数,如果是小数将不会做处理。(  )

53、若有定义:int   (*p)[4],则p是一个指向含有四个整型元素的一维数组       的指针。(   )

猜你喜欢

转载自www.cnblogs.com/qianrushi1/p/11571380.html