嵌入式及手机开发[笔试题目]

时间:2022-09-17 19:07:26

嵌入式及手机开发[笔试题目]
千辛万苦搞来的,不过很多题目都见过了,比如《想成为嵌入式程序员应知道的0x10个基本问题》上面的

。所以有些答案就可以直接去http://blog.csdn.net/ShorminHsu/archive/2007/03/24/1539458.aspx找。
这里先放上题目,答案等后期整理出来吧。

题目:
1。用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。

2。写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。

3。预处理器标识#error的目的是什么?

4。嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?

5。写一个数据类型:一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个

整型数。

6。嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a

的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。

7。嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址

为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。

8。字符串倒序。

9。float a,b,c    问下列两个的值:
      (a+b)+c == (b+a)+c
      (a+b)+c == (a+c)+b

10。关键字static的作用是什么?
        关键字const有什么含意?

11。关键字volatile有什么含意?并给出三个不同的例子。
         1)一个参数既可以是const还可以是volatile吗?解释为什么。
         2) 一个指针可以是volatile 吗?解释为什么。
         3)下面的函数有什么错误:
 int square(volatile int *ptr)
 {
         return *ptr * *ptr;
 }

12。嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址

为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。

13。动态内存分配
下面的代码片段的输出是什么,为什么?
 char *ptr;
 if ((ptr = (char *)malloc(0)) == NULL)
     puts("Got a null pointer");
 else
      puts("Got a valid pointer");

14。Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。

例如,思考一下下面的例子:
 #define dPS struct s *
 typedef struct s * tPS;
以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)

为什么?

15。中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具

代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断

服务子程序(ISR),请评论一下这段代码的。

 __interrupt double compute_area (double radius)
 {
     double area = PI * radius * radius;
     printf("/nArea = %f", area);
     return area;
 }


16。下面的代码输出是什么,为什么?
 void foo(void)
 {
     unsigned int a = 6;
     int b = -20;
     (a+b > 6) ? puts("> 6") : puts("<= 6");
 }

17。评价下面的代码片断:
 unsigned int zero = 0;
 unsigned int compzero = 0xFFFF;
 /*1's complement of zero */

18。C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?
 int a = 5, b = 7, c;
 c = a+++b;

19。编写一个可重入的函数。

20。编写ISR需要注意哪些地方?

21。如何设计一个内存拷贝函数,考虑效率及强健性原则。

22。怎样理解"地址对齐","内存分配","处理器字节序"的意义,应用上有什么需要注意的地方吗?举例。
         如何测试一个处理器的字节序?

23。至少举两个例子从硬件和微码执行的角度说明CPU响应中断的过程。

24。如何实现任务调度?

25。如何避免优先级反转?

26。任务锁和终端锁之间的区别,应用上应该怎么去选择?

27。进程间通讯与同步的手段有哪些?举例说明。

 

以上部分答案参考 :
《想成为嵌入式程序员应知道的0x10个基本问题》
http://blog.csdn.net/ShorminHsu/archive/2007/03/24/1539458.aspx

其余待整理。