嵌入式软件综合试题题库

嵌入式软件综合试题题库
嵌入式软件综合试题题库

嵌入式软件综合试题题库

一、选择题

1. 不属于嵌入式系统中的进程状态的是( )

A. 运行状态

B. 就绪状态

C. 开关状态

D. 等待状态 2. 不是操作系统中调

度程序所采用的调度算法的是( )

A. 先来先服务(FCFS)

B. 先进先出(FIFO)

C. 时间片轮转调度

D. 优先级调度

3. 在操作系统中,Spooling技术是用一类物理设备模拟另一类物理设备的技

术,实现这

种技术的功能模块称做( )

A. 可林斯系统

B. 斯普林系统

C. 图灵机系统

D. 虚拟存储系统

4. 在操作系统中,除赋初值外,对信号量仅能操作的两种原语是( )

A. 存操作、取操作

B. 读操作、写操作

C.P操作、V操作

D. 输入操作、输出操作 5. 特性不符合嵌入式操作系统特

点的是( )

A. 实时性

B. 不可定制

C. 微型化

D. 易移植 6. 在并行环境中的某些任务

必须协调自己的运行速度,以保证各自的某些关键语句按照某

种事先规定的次序执行,这种现象被称为任务的( )

A. 执行

B.互斥

C.调度

D.同步 7. 关于文件系统,下列叙述中不正确的是( )

A. 负责文件的组织、存储、检索、命名、共享和保护

B. 提供描述文件抽象的程序接口

C. 文件存储在磁盘或其他不易失的存储介质上

D. 程序员需要关心文件存储分配和存储布局的细节

8. Linux系统中的设备可分为三类:字符设备、块设备和网络设备,其中不是基于文件系

统访问的设备是( )

A. 字符设备

B. 块设备

C. 网络设备

D. 字符和块设备 9. 能完全把系统软件和硬件部分隔离开来,从而提高了系统的可移植性的层是( )

A. 硬件抽象层

B. 驱动映射层

C. 硬件交互层

D. 中间层 10. 实时操作系统(RTOS)内核与应用程序之间的接口称为( )

A. 输入/输出接口

B. 文件系统

C. API

D. 图形用户接口 11. 在多任务实时系统中,任务间或者中断服务与任务间常需要交换信息,这种信息交换的两个途径是( )

A. 开/关中断和信息邮箱

B. 共享存储区和消息传递

C.邮箱机制和数据共享机制

D. 非占先式内核和占先式内核机制

12. 嵌入式系统由硬件和软件部分构成,不属于嵌入式系统软件的是( )

A. 系统内核

B. 驱动程序

C. FPGA编程软件

D. 嵌入式中间件

13. 关于硬件抽象层,以下描述中错误的是( )

A. 硬件抽象层包括操作系统内核和驱动程序

B. 硬件抽象层将操作系统与硬件平台隔开

C. 硬件抽象层是一种软件

D. 硬件抽象层有利于系统的模块化设计

14. 关于实时操作系统(RTOS)的任务调度器,以下描述中正确的是( )

A. 任务之间的公平性是最重要的调度目标

B. 大多数RTOS调度算法都是可抢占式(可剥夺式)的

C. RTOS调度器都采用了基于时间片轮转的调度算法

D. RTOS调度算法只是一种静态优先级调度算法

15. 一个任务被唤醒,意味着( )

A. 该任务重新占有了CPU

B. 它的优先级变为最大

C. 其任务移至等待队列的队首

D. 任务变为就绪状态 16. 在下列调度算法中,算法中不会出现任务“饥饿”的情形是( )

A. 时间片轮转法

B. 先来先服务法

C. 可抢占的短作业优先算法

D. 静态优先级算法 17. 在实时操作系统中,邮箱通信方式是( )

A. 直接

B. 间接

C. 低级

D. 高级 18. 在某个嵌入式操作系统中,若PV操作的信号量S的初始值为2,当前值为,1,则表示

等待信号量S的任务个数为( )

A. 0

B. 1

C. 2

D. 3 19. 在实时操作系统中,两个任务并发执行,一个任务要等待其合作伙伴来发送消息,或建

立某个条件后再向前执行,这种制约性合作关系被称为任务的( )

A. 同步

B. 互斥

C. 调度

D. 执行 20. 文件系统的主要功能是( )

A. 实现对文件的按名存取

B. 实现虚拟存储

C. 提高外存的读写速度

D. 用于保存系统文档 21. 在FAT16文件系统中,若每个簇的大小是2KB,那么它所能表示的最大磁盘分区容量为

( )

A. 2MB

B. 32MB

C. 64MB

D. 128MB

22. 在下面的叙述中,不是嵌入式图形用户接口(GUI)的主要特点( )

A. 运行时占用的系统资源少

B. 模块化结构,便于移植和定制

C. 可靠性高

D. 美丽华丽,图形算法复杂 23. 在下列CACHE替换算法中平均命中率最高的是( )

A.先入后出算法(FILO)

B.随机替换算法(RAND)

C.先入先出算法(FIFO)

D.近期最少使用算法(LRU)

24. 设某一个任务需要 8 个加工部件加工才能完成,每个加工部件加工需 2 小时,现在采

用流水线加工方式,要完成100个任务,共需( )

A. 212小时

B. 214小时

C. 216小时

D. 218小时

25. 下面关于任务上下文切换的描述中,不正确的是( )

A. 任务上下文是任务控制块(TCB)的组成部分

B. 上下文切换由一个特殊的任务完成

C. 上下文切换时间是影响RTOS 性能的重要指标

D. 上下文切换在RTOS 内部完成

26. 编译程序对高级语言源程序进行翻译时,需要在该程序的地址空间中为变量指定地址,

这种地址称为 ( )

逻辑地址 B. 物理地址 C. 接口地址 D. 线性地址 A.

27. 程序设计语言一般都提供多种循环语句,例如实现先判断循环条件再执行循环体的

while语句和先执行循环体再判断循环条件的do-while语句。关于这两种循环语句,

在不改变循环体的条件下,正确的是( )

A. while语句的功能可由do-while语句实现

B. do-while语句的功能可由while语句实现

C. 若已知循环体的次数,则只能使用while语句

D. 循环条件相同时,do-while语句的执行效率更高

28. 某文件管理系统为了记录磁盘的使用情况,在磁盘上建立了位示图(bitmap)。若系统中

字长为 16 位,磁盘上的物理块依次编号为:0、1、2、…,那么 8192 号物理块的使

用情况在位示图中的第几个字中描述( )

A. 256

B. 257

C. 512

D. 513

29. 在嵌入式系统中,采用查询方式实现输入输出的主要原因是( )

A. 速度最快

B. CPU 可以不介入

C. 实现起来比较容易

D. 在对多个事件查询工作时,能对突发事件做出实时响应

30. 某32位计算机的CACHE容量为16KB(B:字节),CACHE块的大小为16B(B:字节),

若主存与CACHE地址映像采用直接映像方式,在下列CACHE替换算法中平均命中率最高

的是( )

A.先入后出算法(FILO)

B.随机替换算法(RAND)

C.先入先出算法(FIFO)

D.近期最少使用算法(LRU)

31. 有一段C 程序如下,执行后,其运行结果为( ) int f(int a) {

auto int b = 0;

static int c = 3;

b ++; c++;

return(a+b+c);

}

main() {

int a=2,i;

for(i=0; i<3; i++) printf("%d, ",f(a));

}

A. 7,8,9,

B. 7,7,7,

C. 6,7,8,

D. 9,8,7,

32. 以下关于硬件抽象层的论述,不合适的是( )

采用硬件抽象层可以大大提高系统的移植性 A.

B. 采用硬件抽象层可以大大提高系统的运行效率

C. 采用硬件抽象层可以缩短系统的测试周期

D. 采用硬件抽象层有助于提高系统的可靠性

33. 嵌入式系统大都采用嵌入式实时操作系统 RTOS,不是对 RTOS 时间性能的评价指标的

是( )

A. 上下文切换时间

B. 最大中断延迟时间

C. 任务调度算法

D. 任务执行时间

34. 以下关于优先级继承的叙述中,错误的是( ) A. 优先级继承是用来解决优先级反转问题的技术

B. 优先级反转是用来解决优先级继承问题的技术

C. 当发生一个任务由于等待比它低优先级任务释放资源而被阻塞时,暂时提高低优先

级的优先级,使其尽快地执行,并释放高优先级所需的资源 D. 优先级继承是由RTOS 完成的

35. 下面不属于软件开发过程的主要阶段的活动是( ) A. 需求分析 B. 软件设计 C. 软件编码与调试 D. 软件合格性认证

36. 一个任务被唤醒,意味着( )

A. 该任务重新占有了CPU

B. 它的优先级变为最大

C. 其任务移至等待队列队首

D. 任务变为就绪状态

37. 下列设备文件类型中属于Linux操作系统的是( )

A、块设备

B、字符设备

C、网络设备

D、块设备、网络设备、字符设备

38. 操作系统中的“抖动”现象是指( )

A.根据一定的页面置换算法,将页面调出

B.由于选择了长期未被访问的页进行置换,导致系统更换页面

C.页面调入不久就被导出,导出不久又被调入,导致系统频繁更换页面

D.根据系统运行情况决定将哪个页面调出,而不是由页面置换算法决定更换哪个页面

39. 关于文件系统,下列叙述中不正确的是( )

A. 负责文件的组织、存储、检索、命名、共享和保护

B. 提供描述文件抽象的程序接口

C. 文件存储在磁盘或其他不易失的存储介质上

D. 程序员需要关心文件存储分配和存储布局的细节

40. Linux系统中的设备可分为三类:字符设备、块设备和网络设备,其中不是基于文件系

统访问的设备是( )

字符设备 B. 块设备 C. 网络设备 D. 字符和块设备 A.

41. 能完全把系统软件和硬件部分隔离开来,从而大大提高了系统的可移植性的是( )

A. 硬件抽象层

B. 驱动映射层

C. 硬件交互层

D. 中间层

42. 在FAT16文件系统中,若每个簇的大小是2KB,那么它所能表示的最大磁盘分区容量为

( )

A. 2MB

B. 32MB

C. 64MB

D. 128MB

43. 在下面的叙述中,不是嵌入式图形用户接口(GUI)的主要特点的是( )

A. 运行时占用的系统资源少

B. 模块化结构,便于移植和定制

C. 可靠性高

D. 美丽华丽,图形算法复杂

44. 在嵌入式系统中,采用查询方式实现输入输出的主要原因是( )

A. 速度最快

B. CPU 可以不介入

C. 实现起来比较容易

D. 在对多个事件查询工作时,能对突发事件做出实时响应

45. 在多任务实时系统中,任务间或者中断服务与任务间常需要交换信息,这种信息交换有

哪两个途径( )

A. 开/关中断和信息邮箱

B. 共享存储区和消息传递

C.邮箱机制和数据共享机制

D. 非占先式内核和占先式内核机制

46. 嵌入式系统由硬件和软件部分构成,以下不属于嵌入式系统软件的是( )

A. 系统内核

B. 驱动程序

C. FPGA编程软件

D. 嵌入式中间件

47. 有一段C 程序如下,执行后,其运行结果为( )

int f(int a) {

auto int b = 0;

static int c = 3;

b ++; c++;

return(a+b+c);

}

main() {

int a=2,i;

for(i=0; i<3; i++) printf("%d, ",f(a));

}

A. 7,8,9,

B. 7,7,7,

C. 6,7,8,

D. 9,8,7,

48. 以下关于硬件抽象层的论述,不合适的是( )

A. 采用硬件抽象层可以大大提高系统的移植性

B. 采用硬件抽象层可以大大提高系统的运行效率

C. 采用硬件抽象层可以缩短系统的测试周期

D. 采用硬件抽象层有助于提高系统的可靠性

49. 在下面的叙述中,不是嵌入式图形用户接口(GUI)的主要特点的是( )

A. 运行时占用的系统资源少

B. 模块化结构,便于移植和定制

C. 可靠性高

D. 美丽华丽,图形算法复杂

50. 使用gcc编译器生成的.o为后缀的文件是( )

A. 程序所包含的头文件

B. 预处理过的C源代码文件

C. 编译后的目标文件

D. 经过预编译后的汇编语言源代码文件

51. 操作系统中的“抖动” 现象是指( )

A.根据一定的页面置换算法,将页面调出

B.由于选择了长期未被访问的页进行置换,导致系统更换页面

C.页面调入不久就被导出,导出不久又被调入,导致系统频繁更换页面

D.根据系统运行情况决定将哪个页面调出,而不是由页面置换算法决定更换哪个页面

52. 在多任务实时系统中,任务间或者中断服务与任务间常需要交换信息,这种信息交换分

别为以下哪两个途径( )

A. 开/关中断和信息邮箱

B. 共享存储区和消息传递

C.邮箱机制和数据共享机制

D. 非占先式内核和占先式内核机制

53. 从以下关于操作系统存储管理方案1、方案2和方案3的相关描述可以看出,他们分别

对应的存储管理方案为( )

方案1:在系统进行初始化的时候就已经将主存储空间划分成大小相等或不等的块,并

且这些块的大小在此后是不可以改变的。系统将程序分配在联系的区域中。

方案2:主储存空间和程序按固定大小大单位进行分割,程序可以分配在不连续的区域

中。该方案当一个作业的程序地址空间大于主存可以使用的空间时也可以执行。

方案3:编程时必须划分程序模块和确定程序模块之间的调用关系,不存在调用关系的

模块可以占用相同的主存区。

A. 固定分区、请求分页和覆盖

B. 覆盖、请求分页和固定分区

C. 固定分区、覆盖和请求分页

D. 请求分页、覆盖和固定分区

54. 下列操作系统不属于嵌入式操作系统的是( )

A. VxWorks

B. Windows XP Home Edition

C. Nucleus

D. QNX

55. 一个任务被唤醒,意味着( )

A. 该任务重新占有了CPU

B. 它的优先级变为最大

C. 其任务移至等待队列队首

D. 任务变为就绪状态

56. 下列设备文件类型中属于Linux操作系统的是( )

A. 块设备

B. 字符设备

C. 网络设备

D. 块设备、字符设备、网络设备

二、填空题

1. 操作系统是联接硬件与应用程序的系统程序,其基本功能有进程管理、

____________________、进程间通信、I/O资源管理。

2. 从嵌入式操作系统特点可以将嵌入式操作系统分为分时操作系统和

____________________。

3. 内核负责管理各个任务,或者为每个任务分配CPU时间,并且负责任务之间的通信,内

核的基本服务是____________________。

4. 嵌入式应用软件的开发过程可以分为三个步骤:嵌入式软件生成、

____________________、嵌入式软件固化。

5. 建立一个分析模型至少需要四个基本原则____________________、描述模型、功能表达

模型、行为分解模型。

6. 在嵌入式Linux的设备驱动程序中,分配内存的函数为

____________________。 7. Linux 中常用的通信机制:____________________、有名管道、无名管道、信号量、消

息队列、共享内存、套接口。

8. 文件系统按不同的存储及管理方式分为不同的类型,不同类型的文件系统对文件大小有

不同的限制,FAT32对文件的大小限制为____________________之内。 9. 内核负责管理各个任务,或者为每个任务分配CPU时间,并且负责任务之间的通信,内

核的基本服务是____________________。

10. 按操作系统的分类可知,Linux属于分时操作系统,vxWorks属于

____________________

操作系统。

11. 软件一般分为系统软件和____________________。

12. 在实时多任务系统中,任务间通信主要有共享数据结构和消息机制等两种方式,其中常

见消息机制有____________________和消息队列等两种方法。

13. 嵌入式Linux系统的设备驱动程序不能采用printf()函数向控制台输出消息,而应采

用____________________函数向控制台输出信息。

14. Qt中采用____________________机制实现对象间通信。

15. 根据实时性来分,实时系统可以分为 ____________________、软实时系统。 16. 软件生存周期由软件定义、____________________、软件维护三个时期

组成。 17. 在嵌入式Linux系统中,采用模块方式编译驱动程序后,加载驱动程

序模块的命令为

____________________。

18. 在调试嵌入式Linux系统内核时,常常采用log方式记录内核运行状态,

此时使用的

log输出函数____________________。

19. 在Linux Shell中,可以使用ls -l命令查看文件目录(列表方式),若某

个文件的类

型及权限列为crw-rw-rw-,则该文件名为____________________设备文件名。20. 当某个进程A的父进程退出后,A将成为孤儿进程,按照Linux规范,孤儿进

程的父进

程为____________________。

21. POSIX规范规定,____________________函数可以创建一个新的线程。 22. 文件系统按不同的存储及管理方式分为不同的类型,不同类型的文件系统对文件大小有

不同的限制,FAT32对文件的大小限制为____________________之内。 23. POSIX规范中,____________________函数将挂起当前线程,直到指定的线程中止

才能

进行运行。

24. /etc/fstab 文件是 Linux 系统核心配置文件之一,系统启动后将读取该

文件,并根据

文件内容自动____________________。

25. 在嵌入式Linux系统中,内核采用____________________函数向控制台输出信息。 26. 在交叉开发中,通信连接可以是串口连接、网络连接、

____________________等。 27. 软件生存周期由____________________、软件开发、软件维护三个时期组成。 28. Make工程管理器读取的配置文件为

____________________。

29. 嵌入式Linux可以采用____________________命令挂载NFS类型磁盘。

30. BusyBox采用不同的____________________调用不同的功能模块。

31. 父进程A调用vfork() 函数创建子进程B后,进程A和进程

B____________________

同一块地址空间。

32. uCLinux的内存管理____________________虚拟内存管理技术,对内存的访问直接使用

物理地址。

33. fcntl()函数基本解决了文件共享问题,____________________函数则实

现了I/O复用,

特别在有阻塞的情况下。

34. Linux中,使用____________________命令可以创建设备文件。

35. 在Linux系统中,设备驱动程序申请内存的函数是______________,释放内存的函数是

kfree()。

36. X-Windows是基于网络 GUI 的系统,其基本结构为______________。 37. BootLoader的运行模式有______________、启动加载模式。

38. uCLinux 是______________操作系统。

39. 为加快嵌入式Linux创建进程的速度,往往采用______________函数代替fork() 函

数,减少复制进程数据的时间。

40. 卸载Linux内核中设备驱动模块的命令是______________。

41. 文件系统按不同的存储及管理方式分为不同的类型,不同类型的文件系统对文件大小有

不同的限制,FAT32对文件的大小限制为________________之内。 42. 在微机上普遍采用的发行版Linux属于____________________操作系统(填抢占式或非抢占式)。

1. 写成下列 C 语言程序的执行结果

int f(int a) {

auto int b = 0;

static int c = 3;

b ++; c++;

return(a+b+c);

}

main() {

int a=2,i;

for(i=0; i<3; i++) printf("%d, ",f(a));

}

一、选择题

57. 以下叙述中,不符合RISC指令系统特点的是( )

A.指令长度固定,指令种类少

B.寻址方式种类丰富,指令功能尽量增强

C.设置大量通用寄存器,访问存储器指令简单

D.选取使用频率较高的一些简单指令

58. 若每一条指令都可以分解为取指、分析和执行三步。已知取指时间t取指,4?t,分析

时间t分析,3?t,执行时间t执行,5?t。如果按串行方式执行完100条指令需要

( )

A. 1190?t

B. 1195?t

C. 1200?t

D. 1205?t

59. 若每一条指令都可以分解为取指、分析和执行三步。已知取指时间t取指,4?t,分析

时间t分析,3?t,执行时间t执行,5?t,如果按照流水线方式执行,执行完100

条指令需要 ( )

A. 504?t

B. 507?t

C. 508?t

D. 510?t

60. ARM处理器总共有37个寄存器,其中通用寄存器为( )

A. 31个

B. 6个

C. 5个

D. 32个

61. ARM有7种处理器模式,其中有5种异常模式,分别为( )

A. FIQ,IRQ,管理,系统,中止

B. IRQ,管理,用户,系统,中止

C. FIQ,IRQ,管理,中止,未定义

D. FIQ,IRQ,中止,未定义,系统

62. 在 CPU 的状态寄存器中,若进位标志为“0”,表示( )

A. 有进位

B. 无进位

C. 无进位或借位

D. 不一定

63. 直接转移指令的功能是将指令中的地址代码送入( )

累加器 B. 地址寄存器 C. 程序计数器 D. 存储器 A.

64. -7的反码为( )

A. 00000111

B. 10000111

C. 11111000

D. 11100001

65. 在32位ARM处理器上,假设栈顶指针寄存器sp的当前值为0x00FFFFE8,那么在执行

完指令“STMFA sp!, r2”(r2为32位寄存器)后,栈指针sp的当前值应为( )

A. 0x00FFFFE4

B. 0x00FFFFE6

C. 0x00FFFFEA

D. 0x00FFFFEC

66. 在CPU和物理内存之间进行地址转换时,能将地址从虚拟(逻辑)地址空间

映射到物理

地址空间的是( )

A.TCB

B.MMU

C.CACHE

D.DMA

67. 若内存地址区间为4000H,43FFH,每个存贮单元可存储16位二进制数,该内存区域用

4片存储器芯片构成,则构成该内存所用的存储器芯片的容量是( )

A.512×16bit

B.256×8bit

C.256×16bit

D.1024×8bit

68. 若内存按字节编址,用存储容量为32K×8比特的存储器芯片构成地址编

号A0000H到

DFFFFH的内存空间,则至少需要( )

A.4片

B.6片

C.8片

D.10片

69. 页式存储系统的逻辑地址是由页号和页内地址两部分组成,地址变换过程

如下图所示。

假定页面的大小为8K,图中所示的十进制逻辑地址9612经过地址变换后,形

成的物理

地址a应为十进制( )

A.42380

B.25996

C.9612

D.8192

70. 某存储器数据总线宽度为32bit,存取周期为250ns,则该存储器带宽为( )

A.8×106B/s

B.16×106B/s

C.16×108B/s

D.32×106B/s

71. 在嵌入式处理器中,实现CACHE的主要功能由( )

A.硬件

B.软件

C.操作系统

D.应用程序

72. 某32位计算机的CACHE容量为16KB(B:字节),CACHE块的大小为16B(B:字节),

若主存与CACHE地址映像采用直接映像方式,则主存地址为0x1234E8F8的单元装入

CACHE的地址( )

A.00010001001101

B.01000100011010

C.10100011111000

D.11010011101000

73. 某计算机的存储系统由Cache-主存系统构成,Cache的存取周期为10ns,主存的存取

周期为50ns。在CPU执行一段程序时,Cache完成存取的次数为4800次,主存完成存

取的次数为200次,则该Cache 主存系统的效率是( )

A. 0.856

B. 0.862

C. 0.958

D. 0.960 74. 在嵌入式系统的存储结构中,存取速度最快的是( )

A.内存

B.寄存器组

C.Flash

D.Cache

75. 下列存取速度最快的是( )

A. flash存储器

B. DRAM存储器

C. 高速缓存(CACHE)

D. 磁盘

76. 某计算机的存储系统由Cache主存系统构成,Cache的存取周期为10ns,主存的存取周

期为50ns。在CPU执行一段程序时,Cache完成存取的次数为4800次,主存完成存取

的次数为200次,则CPU 访问存储系统的平均访问时间是( )

A. 10 ns

B. 11.60 ns

C. 11.68 ns

D. 50 ns

77. NAND FLASH和NOR FLASH的区别正确的是( )

A. NOR的读速度比NAND稍慢一些

B. NAND的写入速度比NOR慢很多

C. NAND的擦除速度远比NOR的慢

D.大多数写入操作需要先进行擦除操作

78. 某数码相机内置 128MB 的存储空间,拍摄分辨率设定为1600×1200 像素,颜色深度

为24位,若不采用压缩存储技术,使用内部存储器最多可以存储多少张照片( )

A. 12

B. 25

C. 13

D. 23

79. 下面关于PCI总线的叙述,其中错误的是( )

A. PCI总线支持64位总线

B. PCI总线的地址总线与数据总线是分时复用的

C. PCI总线是一种独立设计的总线,它的性能不受CPU类型的影响

D. PC机中不能同时使用PCI总线和ISA总线

80. 在32位总线系统中,若时钟频率为500MHz,传送一个32位字需要5个时钟周期,则

该总线系统的数据传输速率为( )

A.200 MB/s

B.400 MB/s

C.600 MB/s

D.800 MB/s

81. 某总线有104根信号线,其中数据总线(DB)32根,若总线工作频率为

33MHz,则其理

论最大传输率为( )

A.33MB/s

B.64MB/s

C.132MB/s

D.164MB/s

82. 下面关于DMA方式的描述,不正确的是( )

A. DMA方式使外设接口可直接与内存进行高速的数据传输

B. DMA方式在外设与内存进行数据传输时不需要CPU干预

C.采用DMA方式进行数据传输时,首先需要进行现场保护

D. DMA方式执行I/O交换要有专门的硬件电路

83. 下列关于D/A变换器接口的描述,不正确的是( )

A.它是嵌入式微机系统与外部模拟控制对象的重要控制接口

B.它通常由模拟开关、权电阻电路、缓冲电路组成

C.它也可以把外界的模拟量变换成数字量

D.它输出的模拟量可以是电流,也可以是电压

84. RS-232C串行通信总线的电气特性要求总线信号采用( )

A.正逻辑

B.负逻辑

C.高电平

D.低电平

85. RS-232标准在初期可以满足人们的要求,但当人们要求以更高的速率传送到更远的距

离时,需要有新的标准。RS-449就是为此目的而设计的,它的标准规格中,RS-422标

准是平衡式的,传输一个信号用两根线,表示逻辑信号用( )

A.正负5V以上电平

B.正负3V以上电平

C.两线的电平差

D.两线的电平

嵌入式软件工程师笔试题

(一) 1什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2 char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p 3 char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; out < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 4以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母 {for( size_t i=0; i

面试题嵌入式软件开发

1. 什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。(好工程的回答,不是么~~~:)) 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2. char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,const修饰的是指针p,故p的值不可以修改 char const * p;//const修饰的是*p,为指向常量的指针,指向的常量值不可以改const char *p;//和char const *p 3. 数组变量和指针的区别? [cpp]view plaincopy 1.#include https://www.360docs.net/doc/858303186.html,ing namespace std; 3. 4.int main(int argc, char const *argv[]) 5.{ 6.char str1[] = "abc"; 7.char str2[] = "abc"; 8.const char str3[] = "abc"; 9.const char str4[] = "abc"; 10.const char *str5 = "abc"; 11.const char *str6 = "abc"; 12.char *str7 = "abc"; 13.char *str8 = "abc"; 14. 15. cout << ( str1 == str2 ) << endl; 16. cout << ( str3 == str4 ) << endl; 17. cout << ( str5 == str6 ) << endl; 18. cout << ( str7 == str8 ) << endl; 19. 20.return 0; 21.} 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。

嵌入式软件工程师应该知道的16个问题

嵌入式软件工程师应知道的0x10个基本问题(经典收藏版) C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII值。这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不是在嵌入式系统上。如果上述任何问题的答案是"是"的话,那么我知道我得认真考虑我是否应该去做这份工作。 从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。不管怎么样,看一下这人如何回答他不会的问题也是满有趣。应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。 有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮助。这些问题都是我这些年实际碰到的。其中有些题很难,但它们应该都能给你一点启迪。 这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。 预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4) 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 . 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1) 标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。

华为嵌入式面试题

华为嵌入式系统面试题 (1)什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选 项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 (2)char * const p char const * p const char *p 上述三个有 什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p (3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; cout < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的存空间;而 str5,str6,str7,str8是指针,它们指向相同的常量区域。 (4)以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将 str 中的小写字母转换成大 写字母{ for( size_t i=0; i

嵌入式软件开发人员笔试题

四川九洲电器集团有限责任公司成都技术中心 嵌入式软件开发人员笔试试题 本笔试试题分为C语言基础、算法、思维能力三部份。总分100分,描述思路和最后结果都很重要。 一、C语言基础 1. 语句实现x是否为2的若干次幂的判断。(5分) 2. 宏定义写出swap(x,y)。(5分) 3. 用变量a给出下面的定义。(16分,各两分) a) 一个整型数(An integer) b) 一个指向整型数的指针(A pointer to an integer) c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) d) 一个有10个整型数的数组(An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers) f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers) g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer) h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer )

嵌入式系统开发基础——基于ARM9微处理器C语言程序设计各章习题

第一章习题 1。嵌入某种微处理器或单片机的测试和控制系统称为嵌入式控制系统(Embedded Control System)。 在应用上大致分为两个层次,以MCS-51为代表的8位单片机和以ARM技术为基础的32位精减指令系统单片机 2。目标机上安装某种嵌入式操作系统和不安装嵌入式操作系统, 以MCS-51为代表的8位单片机不安装嵌入式操作系统。 3。32位、16位和8位 5。32位、16位 6。在大端格式中,字数据的高字节存储在低字节单元中,而字数据的低字节则存放在高地址单元中。 在小端存储格式中,低地址单元存放的是字数据的低字节,高地址单元中,存放的是数据的高字节。 第二章习题 (略) 第三章习题 1。 (1)寄存器大约有17类,每个的定义都是寄存器名字前面加一个小写”r” (2)在56个中断源中,有32个中断源提供中断控制器,其中,外部中断EINT4~EINT7通过“或”的形式提供一个中断源送至中断控制器,EINT8~EINT23也通过“或”的形式提供一个中断源送至中断控制器。 第四章习题 1,56个中断源,有32个中断源提供中断控制器 2,两种中断模式,即FIQ模式(快速模式)和IRQ模式(通用模式)。通过中断模式控制寄存器设置。 3,常用的有5个,它们是中断模式控制寄存器,控制中断模式;中断屏蔽寄存器,控制中断允许和禁止;中断源挂起寄存器,反映哪个中断源向CPU申请了中断;中断挂起寄存器,反映CPU正在响应的中断是哪个中断源申请的;中断优先级寄存器,它和中断仲裁器配合,决定中断优先级。

4,中断源挂起寄存器,反映哪个中断源向CPU申请了中断;中断挂起寄存器,反映CPU正在响应的中断是哪个中断源申请的。中断源向CPU申请了中断如果该中断源没被屏蔽并且没有和它同级或高级的中断源申请中断,才能被响应。系统中可以有多个中断源向CPU申请中断,但同一时刻CPU只能响应一个最高级的中断源中断请求。中断源挂起寄存器和中断挂起寄存器反映了中断系统不同时段的状态。 5,进入中断服务程序先清中断源挂起寄存器和中断挂起寄存器;中断结束,将该中断源屏蔽。 6,将该中断源屏蔽取消;将该中断源屏蔽。 第五章习题 1,S3C2410芯片上共有117个多功能的输人/输出引脚,它们是。 ?1个23位的输出端口(端口A); 。1个11位的输入/输出端口(端口B); 。1个16位输入/输出端口(端口C); ?1个16位输入/输出端口(端口D); ?1个16位输入/输出端口(端口E); ?1个8位输人/输出端口(端口F); ?1个16位输入/输出端口(端口G); 。1个11位的输入/输出端口(端口H)。 2,S3C2410 I/O口的控制寄存器、数据寄存器、上拉电阻允许寄存器的作用? 端口控制寄存器定义了每个引脚的功能;与I/O口进行数据操作,不管是输入还是输出,都是通过该口的数据寄存器进行的,如果该端口定义为输出端口,那么可以向GPnDA T的相应位写数据。如果该端口定义为输人端端口,那么可以从GPnDAT的相应位读出数据。 端口上拉寄存器控制每个端口组上拉电阻的使能/禁止。如果上拉寄存器某一位为0,则相应的端口上拉电阻被使能,该位做基本输入/输出使用,即第1功能;如果上拉寄存器某一位是1,则相应的端口上拉电阻被禁止,该位做第2功能使用。 5, rGPBCON=rGPBCON& 0xFFFFFC∣1; //蜂鸣器配置,PB1口接蜂鸣器,输出delay(1000); rGPBDAT & = 0xFFFFFE; //蜂鸣器响,低电平有效 rGPBDAT∣=1; // 蜂鸣器停 第六章习题 3,S3C2410 UART波特率如何确定?

华为经典嵌入式面试题集资料

(1)什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 (2)char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p (3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; cout < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 (4)以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母{ for( size_t i=0; i

嵌入式软件工程师笔试题

笔试题 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

!嵌入式系统开发资料(入门必备)

获取更多权威电子书请登录https://www.360docs.net/doc/858303186.html, ARM嵌入式系统开发综述ARM开发工程师入门宝典

获取更多权威电子书请登录https://www.360docs.net/doc/858303186.html, 前言 嵌入式系统通常是以具体应用为中心,以处理器为核心且面向实际应用的软硬件系统,其硬件是整个嵌入式系统运行的基础和平台,提供了软件运行所需的物理平台和通信接口;而嵌入式系统的软件一般包括操作系统和应用软件,它们是整个系统的控制核心,提供人机交互的信息等。所以,嵌入式系统的开发通常包括硬件和软件两部分的开发,硬件部分主要包括选择合适的MCU或者SOC 器件、存储器类型、通讯接口及I/O、电源及其他的辅助设备等;软件部分主要涉及OS porting和应用程序的开发等,与此同时,软件中断调试和实时调试、代码的优化、可移植性/可重用以及软件固化等也是嵌入式软件开发的关键。 嵌入式系统开发的每一个环节都可以独立地展开进行详细的阐述,而本文的出发点主要是为嵌入式开发的初学者者提供一个流程参考。因为对于初学者在面对一个嵌入式开发项目的时候,往往面临着诸多困难,如选择什么样的开发平台?什么样的器件类型?在进行编译时怎样实现代码优化?开发工具该如何选择和使用?在进行程序调试时应该注意那些问题以及选择什么样的嵌入式OS 等等。希望通过本文,能帮助初学者了解有关ARM嵌入式系统开发流程。

获取更多权威电子书请登录https://www.360docs.net/doc/858303186.html, 目录 前言 (2) 1 嵌入式开发平台 (4) 1.1 ARM的开发平台: (4) 1.2 器件选型 (7) 2 工具选择 (11) 3 编译和连接 (13) 3.1 RVCT的优化级别与优化方向 (16) 3.2 Multifile compilation (21) 3.3调试 (22) 4 操作系统 (23) 4.1 哪里可以得到os 软件包 (Open Source and Linux Kernel) (25) 4.2 安装镜像 (26) 4.3 交叉编译 (26) 总结 (27)

嵌入式工程师经典面试题

上个星期, 去深圳一家搞 ARM 开发的公司面试, HR 叫我做了一份卷子, 里面都是 C 编程, 心中暗喜, 因为这些题基本上都在程序员面试宝典里见过。后来回到学校, 在网上搜索,原来这些题都是嵌入式工程师的经典面试题目, 很多网站上都可以找得到。现把他贴出来, 附上网上的答案,跟大家分享,因为这些题实在太经典了。 预处理器(Preprocessor 1 . 用预处理指令 #define 声明一个常数, 用以表明 1年中有多少秒 (忽略闰年问题 #define SECONDS_PER_YEAR (60 * 60 * 24 * 365UL 我在这想看到几件事情: 1 #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等 2 懂得预处理器将为你计算常数表达式的值,因此直接写出你如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3 意识到这个表达式将使一个 16位机的整型数溢出 -因此要用到长整型符号 L, 告诉编译器这个常数是的长整型数。 4 如果你在你的表达式中用到 UL (表示无符号长整型,那么你有了一个好的起点。记住,第一印象很重要。 2 . 写一个 " 标准 " 宏 MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B ((A <= (B ? (A : (B 这个测试是为下面的目的而设的: 1 标识 #define在宏中应用的基本知识。这是很重要的。因为在嵌入 (inline操作符变为标准 C 的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。

嵌入式工程师面试题--经典

1、将一个字符串逆序 2、将一个链表逆序 3、计算一个字节里(byte)里面有多少bit被置1 4、搜索给定的字节(byte) 5、在一个字符串中找到可能的最长的子字符串 6、字符串转换为整数 7、整数转换为字符串 style="MARGIN: 0px; COLOR: rgb(102,102,102); LINE-HEIGHT: 150%" wrap="break-word"1、char *strconv(char *p) { int i,length; char temp; length = strlen(p); for(i = 0;i < length/2;i++) { temp = *(p + i);

*(p + i) = *(p + length - 1 - i); *(p +length - 1 - i) = temp; } return p; } int main() { char src[100]; char *p; scanf("%s",src); p = strconv(src); printf("%s\n",p); return 0;

style="MARGIN: 0px; COLOR: rgb(102,102,102); LINE-HEIGHT: 150%" wrap="break-word"3、int cal(int data) //calculation the number of bit in one byte { int a; int count = 0; a = data % 100; while (a != 0) { count += a % 2; a /= 2; } return count;

嵌入式软件工程师笔试题华为优选稿

嵌入式软件工程师笔试 题华为 集团公司文件内部编码:(TTT-UUTT-MMYB-URTTY-ITTLTY-

(一)1什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2char*constpcharconst*pconstchar*p上述三个有什么区别 答案: char*constp;//常量指针,p的值不可以修改 charconst*p;//指向常量的指针,指向的常量值不可以改 constchar*p;//和charconst*p 3 charstr1[]="abc"; charstr2[]="abc"; constcharstr3[]="abc"; constcharstr4[]="abc"; constchar*str5="abc"; constchar*str6="abc"; char*str7="abc"; char*str8="abc";

cout<<(str1==str2)<

收集的一些嵌入式软件开发工程师面试题

收集的一些嵌入式软件开发工程师面试题 1.什么是平衡二叉树编写一个删除平衡二叉树的程序 2.写一个程序,求有向有权图两点之间的最小权 3.根据你的理解,写出Cstring类的构造函数和析构函数 4.使用C语言实现对ini文件的访问,使程序可以对int,double,字符串类进行读写。 5.n×n个方格(n为任意整数),定义若两个格有公共边则称两个格相邻。现将个格中的N个格子图黑,使每个格子都与黑格子相邻。试编程,使N最小。 1.static变量和static 函数各有什么特点 3.描述一下嵌入式基于ROM的运行方式基于ram的运行方式有什么区别。 4.task 有几种状态 5.task 有几种通讯方式 6.C函数允许重入吗 7.嵌入式操作系统和通用操作系统有什么差别 一面,技术面 (1)VxWorks、uc/OS、Palm嵌入式系统操作系统的区别 (2)做嵌入式软件开发和普通桌面软件开发有什么区别 (3)c语言问题,union和struct 的区别

(4)sizeof(一大堆变量),如果用这个函数分配内存的大小一定与定义相同吗 (5)解释什么是优先级反转。 Can structures be passed to the functions by value Why cannot arrays be passed by values to functions Advantages and disadvantages of using macro and inline functions What happens when recursion functions are declared inline Scope of static variables Difference between object oriented and object based languages Multiple inheritance objects contain howmany multiply inherited ancestor What are the 4 different types of inheritance relationship How would you find out the no of instance of a class Is java a pure object oriented language Why Order of constructor and destructor call in case of multiple inheritance Can u have inline virtual functions in a class When you inherit a class using private keyword which members of base class are visible to the derived class

经典嵌入式面试题

经典嵌入式面试题 C语言测试就是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者与被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也就是相当有趣的。 从被面试者的角度来讲,您能了解许多关于出题者或监考者的情况。这个测试只就是出题者为显示其对ANSI标准细节的知识而不就是技术技巧而设计不?这个愚蠢的问题不?如要您答出某个字符的ASCII值。这些问题着重考察您的系统调用与内存分配策略方面的能力不?这标志着出题者也许花时间在微机上而不上在嵌入式系统上。如果上述任何问题的答案就是"就是"的话,那么我知道我得认真考虑我就是否应该去做这份工作。 从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,您能了解应试者C语言的水平。不管怎么样,瞧一下这人如何回答她不会的问题也就是满有趣。应试者就是以好的直觉做出明智的选择,还就是只就是瞎蒙呢?当应试者在某个问题上卡住时就是找借口呢,还就是表现出对问题的真正的好奇心,把这瞧成学习的机会呢?我发现这些信息与她们的测试成绩一样有用。 有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮住。这些问题都就是我这些

年实际碰到的。其中有些题很难,但它们应该都能给您一点启迪。 这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。为了让您能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为您所用,请自行按您的意思分配分数。 预处理器(Preprocessor) 1 、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想瞧到几件事情: ?; #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) ?; 懂得预处理器将为您计算常数表达式的值,因此,直接写出您就是如何计算一年中有多少秒而不就是计算出实际的值,就是更清晰而没有代价的。 ?; 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数就是的长整型数。 ?; 如果您在您的表达式中用到UL(表示无符号长整型),那么您有了一个好的起点。记住,第一印象很重要。 2 、写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。#define MIN(A,B) ( (A) <= (B) ? (A) : (B) )

嵌入式底层软件开发方法

嵌入式底层软件开发方法 自从20世纪70年代单片机出现以来,嵌入式系统已获得了较为深入的研究, 提出了一些嵌入式软件的开发方法,但嵌入式系统仍处于发展阶段,嵌入式系统 已经显示出广阔的应用前景。 1.嵌入式系统的定义 嵌入式系统又称为嵌入式计算机系统,是指嵌入到对象体系中的专用计算机系统。对象系统则是指嵌入式系统所嵌入的宿主系统,嵌入性、专用性与计算机系统 是嵌入式系统的三个基本要素。嵌入式系统通常被描述为:以应用为中心,以计 算机技术为基础,软硬件可剪裁,适应于应用系统对功能、可靠性、成本、体积和 功耗有严格要求的专业计算机系统。 2.嵌入式系统的发展历程 嵌入式系统是在硬件和软件交替发展的支撑下逐渐趋于稳定和成熟的,它有着 悠久的历史。从20世纪70年代单片机的出现到现在各种嵌入式微处理器、微控制 器的大规模应用,嵌入式系统己经有了30多年的发展历史。纵观嵌入式技术的发展,大致经历了以下几个发展阶段。 (1)无操作系统阶段:主要是以功能简单的专用计算机或单片机为核心的可编 程控制器形式存在的系统,具有监测、伺服、设备指示等功能,一般没有操作系统 的支持,通过汇编语言编程对系统进行直接控制。主要特点是:系统结构和功能都 相对单一,处理效率较低,存储容量较小,几乎没有用户接口,比较适合于各类专 用领域。 (2)以嵌入式处理器和嵌入式操作系统为标志的嵌入式系统:主要特点是出现 了高可靠、低功耗的嵌入式处理器,嵌入式操作系统能运行于各种不同类型的微处 理器上,兼容性好;操作系统内核精小、效率高,并且具有高度的模块化和扩展性;片上系统(System On Chip,SOC)使得嵌入系统越来越小,具有大量的应用程序接口,开发应用程序简单,应用软件丰富。 3.嵌入式系统的构成及其特点 1)嵌入式系统的组成 嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件 系统等组成,具有专用性、可嵌入性、实时性、可移植性和分布式等特点。其中, 嵌入式微处理器是嵌入式硬件系统的核心部分,它担负着控制、协调系统工作的重 要任务,通常具有实时多任务处理能力、中断处理能力、存储器保护能力和低功耗 能力;支撑硬件主要包括存储介质、通信部件和显示部件等;支撑硬件的驱动程 序、操作系统、应用软件等一起构成嵌入式软件。

嵌入式C语言面试题汇总(超经典)

第一部分:基本概念及其它问答题 1、关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 2、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 3、.h头文件中的ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 4、#include 与#include “file.h”的区别? 答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 5、描述实时系统的基本特性 答:在特定时间内完成特定的任务,实时性与可靠性。 6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 7、什么是平衡二叉树? 答:左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。 8、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用

完整word版嵌入式软件工程师笔试题 华为

(一)1什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。在这种所有模块都使用一组标准的包含文件和相同的编译选项。2、程序由多个模块 组成,情况下,可以将所有包含文件预编译为一个预编译头。 const char *p 上述三个有什么区别?2 char * const p char const * p 答案:p的值不可以修改char * const p; //常量指针,和char const *p const char *p ;//char const * p;//指向常量的指针,指向的常量值不可以改 3 char str1[] = abc; char str2[] = abc; const char str3[] = abc; const char str4[] = abc; const char *str5 = abc; const char *str6 = abc; char *str7 = abc; char *str8 = abc; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; out < < ( str7 == str8 ) < < endl; 0 0 1 1 结果是:是指针,它们指str5,str6,str7,str8str1,str2,str3,str4是数组变量,它们有各自的内 存空间;而向相同的常量区域。 以下代码中的两个sizeof用法有问题吗?4 ] [C易中的小写字母转换成大写字母// 将str void UpperCase( char str[] ) { for( size_t i=0; i

相关文档
最新文档