嵌入式软件开发笔试题

时间:2021-02-06 14:41:07

嵌入式软件开发笔试题

 

 

2016年10月15日大唐电信天津大学校园招聘(仅供个人学习使用):

 

一、选择题

1.      执行完C程序中的下列三条语句后,指针c指向()

int a, b,*c = &a;

int *p = c;

p = &b;

 

A.     p

B.     a

C.     b

D.     c   

 

2.      若进栈序列为1,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是()

A.     1,4,3,2

B.     2,3,4,1

C.     3,1,4,2

D.     3,4,2,1

 

3.      有符号数byte ATC,要想在实际应用中将ATC视为无符号数进行递增(byte)0,(byte)1,…(byte)0x80,(byte)0x81,…(byte)0xff,下面哪一个表达式是正确的()

A.     ATC++;

B.     if(ATC >= 0) ATC++;

else ATC--;

C.     ATC = (byte)(++(ATC &0xff));

D.     ATC = (byte)((ATC &0xff)++);

 

4.      一个指向整形数组的指针的定义为()

A.     int (*ptr)[];

B.     int *ptr[];

C.     int *(ptr[]);

D.     int ptr[];

 

5.      设:

#define N 3

#define Y(n) ((N+1)*n)

则表达式 2*(N+Y(5+1))的值是()

A.     42

B.     48

C.     54

D.     出错

 

6.      C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是,它做些什么()

int a = 5, b = 7, c;

c = a+++b;

A.     a = 6, b = 7, c = 12

B.     结构不合法

C.     a = 5, b = 8, c = 13

D.     a = 5, b = 8, c = 12

 

7.      下列哪一种叙述是正确的()

A.     abstract修饰符可修饰字段,方法和类

B.     抽象方法的body部分必须用一对大括号{}包住

C.     声明抽象方法,大括号可有可无

D.     声明抽象方法,不可写出大括号

 

8.      有如下程序

#include<stdio.h>

int main()

{

           int x = 011;

           printf(“%d\n”,++x);

}

程序运行后的输出结果是()

A.     12

B.     11

C.     10

D.     9

 

二、填空题

1.      执行下列语句

String  str1 = “hello”;

String  str2 = “he” +new String(“llo”);

System.err.println(str1 == str2);

答案:__

 

2.      以下程序的结果是:

char var[10];

int test(char var[])

{

           returnsizeof(var);

}

答案:__

 

3.      在eclipse中,数据都是有符号数:

byte a = (byte)0x80;

short b = (short)0x80;

请用一句程序改变a的值,令a和b相等。

答案:__

 

4.      下面程序的输出是__

main()

{

           intarr[10], i, k = 0;

         for(i = 0; i < 10; i++)

                    arr[i]= i;

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

                    k+= arr[i] + i;

           printf(“%d\n”, k);

}

 

5.      小猴子最多能运回多少根香蕉。

一个小猴子边上有100根香蕉,它要走过50米才能到家,每次它最多搬50根香蕉,每走1米就要吃掉一根,请问它最多能把__根香蕉搬到家。

 

 

三、简答题

1.      #include <filename.h>和#include “filename.h”有什么区别?

 

2.      请简述以下两个for循环的优缺点。

(1)

for(i = 0; i < N; i++)

{

         if(condition)

                   DoSomething();

         else

                   DoOtherthing();

}

 

(2)

if(condition)

{

        for(i = 0; i < N; i++)

                   DoSomething();

}

else

{      

for(i = 0; i< N; i++)

                   DoOtherthing();

}

 

3.      在面向对象编程中,有几个访问控制修饰符,请根据访问级别由高到低分别列出,并进行说明。

 

4.      嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a的bit 3。在以上两个操作中,要保持其它位不变。

 

5.      在ARM系统中,函数调用的时候,参数是通过哪种方式传递的?

 

 

四、编程题

1.      计算一个字节(byte)里面有多少bit被置1.

 

2.      写一段程序,判断内存存储方式是大端还是小端模式。

 

3.      TLV格式是ASN.1中最早定义的编码规则,是Tag,Length和Value的缩写。一个基本的数据元就包括上面三个域。Tag唯一标识该数据元,Length是value域的长度。Value就是数据本身了。举个例子,下面是一个TLV格式的AID(应用标识符)字节串“8107A0000000031010“,其中81是tag,07是长度,A0000000031010就是AID本身的值了。一个文件(数组byte[]body)中的数据都是以基本数据元的TLV格式并列存放的(假定数据元中的Tag和length都是用一个字节表示),已知文件大小fileSize,编写函数返回指定的Tag的数据元对应的Value首字节在文件中的偏移量,如果没有找到返回-1。注:数据皆为有符号数。