嵌入式软件工程师面试常见笔试题

时间:2013-07-12 11:41来源:凌阳教育 作者:larran 点击:
   本为列出了嵌入式软件工程师求职面试时常见的笔试题:
 
    一:选择题
    1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是
    A.(a+b)*c/2
    B.(1/2)*(a+b)*c
    C.(a+b)*c*1/2
    D.c/2*(a+b)
参考答案:B,因为a,b,c三个变量都是浮点数,所以在B答案中其结果是0,因为在计算1/2是就是0,如果改成1/2.0就正确了。
 
    2:为了向二进制文件尾部增加数据,打开文件的方式应采用
    A.″ab″
    B.″rb+″
    C.″wb″
    D.″wb+″
参考答案:D
 
    3:下述程序执行后的输出结果是
    #include
    main()
    {
    int x='f';
    printf("%c\n",'a'+(x-'a'+1));
    }
    A.g
    B.h
    C.i
    D.j
参考答案:A
 
    4:C语言中,下列运算符优先级最高的是
    A.!
    B.%
    C.>>
    D.= =
参考答案:A
 
    5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。
    A.*a
    B.a [ 0 ]
    C.a
    D.a++
    参考答案:D
    6:执行语句“ k=7>>1; ”后,变量 k 的当前值是
    A.15
    B.31
    C.3
    D.1
参考答案:C
 
    7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型
    A.void
    B.char
    C.float
    D.int
参考答案:D
 
    8:若main()函数带参数,参数个数最多是
    A.0
    B.1
    C.2
    D.3
参考答案:C 只知道有定义形式main(int argc,char* argv[]))
 
    9:若有宏定义:#define MOD(x,y) x%y
    则执行以下语句后的输出结果是
    int a=13,b=94;
    printf(″%d\n″,MOD(b,a+4));
    A.5
    B.7
    C.9
    D.11
参考答案:B
 
    10:下列各个错误中,哪一个不属于编译错误
    A.改变 x 原值 3 为 5 ,写作“ x==5 ;”
    B.花括号不配对
    C.复合语句中的最后一条语句后未加分号
    D.变量有引用、无定义
参考答案:A
 
    11:下列程序段运行后, x 的值是( )
    a=1;b=2;x=0;
    if(!( -- a))x -- ;
    if(!b)x=7;else ++x;
    A.0
    B.3
    C.6
    D.7
参考答案:A
 
    12:设
    #define N 3
    #define Y(n) ((N+1)*n)
    则表达式2*(N+Y(5+1))的值是
    A.42
    B.48
    C.54
    D.出错
参考答案:B Y(5+1) 传递过去的应该是6,而不是简单的把5+1给替换掉
 
    13:若定义了char ch[]={″abc\0def″},*p=ch;则执行printf(″%c″,*p+4);语句的输出结果是
    A.def
    B.d
    C.e
    D.0
参考答案:C
 
    14:下列转义字符中错误的是
    A.′\000′
    B.′\14′
    C.′\x111′
    D.′\2′
参考答案:C error C2022: '273' : too big for character
 
    15:算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为
    A.算术运算、赋值运算、关系运算
    B.算术运算、关系运算、赋值运算
    C.关系运算、赋值运算、算术运算
    D.关系运算、算术运算、赋值运算
参考答案:B
 
    16:设#define N 3
    #define Y(n) ((N+1)*n)
    则表达式2*(N+Y(5+1))的值是
    A.42
    B.48
    C.54
    D.出错
参考答案:B
 
    17:表达式 strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一个
    A.非零整数
    B.浮点数
    C.0
    D.字符
参考答案: A
 
    18:设struct
    { short a;
    char b;
    float c;
    }cs;
    则sizeof(cs)的值是
    A.4
    B.5
    C.6
    D.7
参考答案: D 字节对齐的话应该是8
 
    19:若变量已正确定义,表达式( j=3 , j++ )的值是
    A.3
    B.4
    C.5
    D.0
参考答案:A
 
    20:C 语言中运算对象必须是整型的运算符是
    A.%
    B./
    C.!
    D.**
    参考答案:A
简答题
 
    21:打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,...
    例子:当N =5,打印出下面的图形:
    X X X X X
    X Y Y Y X
    X Y 0 Y X
    X Y Y Y X
    X X X X X
22:谈谈COM的线程模型。然后讨论进程内/外组件的差别。
 
    23:多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?
    参考答案:
    虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.
而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是实现多态的关键.
 
    24:#include
    void main()
    { int c;
    while ((c=getchar())!= ′\ n ′ )
    switch(c - ′ 2 ′ )
    { case 0:
    case 1:putchar(c+4);break;
    case 2:putchar(c+4);break;
    case 3:putchar(c+3);break;
    default:putchar(c+2);break;
    }
    printf( ″\ n ″ );
    }
    运行时输入: 2473 ,输出结果:
参考答案:6897 VC++6.0测试过
 
    25:用两个栈实现一个队列的功能?
    参考答案:
    设2个栈为A,B, 一开始均为空.入队:
    将新元素push入栈A;出队:
    (1)判断栈B是否为空;
    (2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;
(3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的平摊复杂度都还是O(1),
 
    26:写一语句实现x是否为2的若干次幂的判断。
参考答案:!(X)&(X-1)
 
    27:解二次方程:a*x*x+b*x+c
    int Quadratic( double a,double b,double c,double& x1,double& x2);
返回值:解的个数
 
    28:如何判别一个数是unsigned。
    参考答案;
#define issignal(x) ((x>=0 && ~x>=0) ? 1:0) //为1是无符号 为0有符号
 
    29:执行下述程序的输出结果是  ABCDEFCDEFEF  。
    #include
    char b[]="ABCDEF";
    main()
    {
    char *bp;
    for (bp=b;*bp;bp+=2)
    printf("%s",bp);
    printf("\n");
}
 
    30:已知一个数组table,用一个宏定义,求出数据的元素个数。
    参考答案:#define NTBL
    #define NTBL (sizeof(table)/sizeof(table[0]))
 
 
分享到:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

凌阳教育【凌阳科技旗下教育品牌】——专业的嵌入式、linux高端运维、人工智能Python培训机构,“按班公布学员就业去向”的诚信机构

关注我们:

咨询电话:134-6659-6362或010-62981113(转2617) 服务监督电话:010-62981113-2800

京ICP备09010168号  京公网安备11010802010586号

北京总部:北京市海淀区上地信息产业基地中黎科技园1号楼3层A段

Copyright © 2019 SunplusEdu Inc. All Rights Reserved