嵌入式常见经典笔试题
嵌入式试题及答案
![嵌入式试题及答案](https://img.taocdn.com/s3/m/8b5df74c15791711cc7931b765ce0508763275f8.png)
嵌入式试题及答案一、单项选择题(每题2分,共20分)1. 嵌入式系统是指:A. 具有特定功能的计算机系统B. 只运行单一任务的计算机系统C. 可以运行多个操作系统的计算机系统D. 以上都不是2. 下列哪项不是嵌入式系统的典型特征?A. 实时性B. 可扩展性C. 资源受限D. 专用性3. 嵌入式系统中,通常使用哪种类型的处理器?A. 通用处理器B. 精简指令集处理器(RISC)C. 复杂指令集处理器(CISC)D. 以上都是4. 在嵌入式系统中,操作系统的作用是什么?A. 管理计算机硬件资源B. 提供用户界面C. 执行所有程序D. 以上都不是5. 以下哪个不是嵌入式操作系统?A. LinuxB. WindowsC. VxWorksD. QNX6. 嵌入式系统的硬件设计通常需要考虑哪些因素?A. 成本B. 功耗C. 尺寸D. 所有以上7. 以下哪个是嵌入式系统的通信接口?A. USBB. HDMIC. VGAD. 所有以上8. 嵌入式系统中的中断处理机制主要用于:A. 程序调试B. 系统启动C. 任务调度D. 错误检测9. 以下哪个不是嵌入式系统的应用领域?A. 工业控制B. 消费电子C. 桌面计算D. 汽车电子10. 嵌入式系统的开发流程通常包括哪些阶段?A. 需求分析B. 系统设计C. 编码与测试D. 所有以上答案:1. A2. B3. B4. A5. B6. D7. D8. C9. C10. D二、多项选择题(每题3分,共15分)11. 嵌入式系统设计时需要考虑的非功能性需求包括:A. 性能B. 可靠性C. 安全性D. 可维护性12. 以下哪些是嵌入式系统开发中的编程语言?A. CB. C++C. JavaD. Python13. 在嵌入式系统中,哪些因素会影响系统的功耗?A. 处理器的运行频率B. 内存的使用量C. 外设的使用D. 所有以上14. 嵌入式系统的软件架构通常包括:A. 硬件抽象层B. 操作系统内核C. 设备驱动程序D. 应用程序15. 以下哪些是嵌入式系统的调试工具?A. 逻辑分析仪B. 仿真器C. 调试器D. 编译器答案:11. ABCD12. ABC13. D14. ABCD15. ABC三、简答题(每题5分,共10分)16. 简述嵌入式系统的实时性要求。
嵌入式经典笔试题目
![嵌入式经典笔试题目](https://img.taocdn.com/s3/m/269dec0c4a7302768e99396e.png)
1将一个字符串逆序2、将一个链表逆序3、计算一个字节里(byte)里面有多少bit被置14、搜索给定的字节(byte)5、在一个字符串中找到可能的最长的子字符串6、字符串转换为整数7、整数转换为字符串答案:1、方法1:int main(){char* src = "hello,world";int len = strlen(src);char* dest = (char*)malloc(len+1);//要为\0分配一个空间char* d = dest;char* s = &src[len-1];//指向最后一个字符while( len-- != 0 )*d++=*s--;*d = 0;//尾部要加\0printf("%s\n",dest);free(dest);// 使用完,应当释放空间,以免造成内存汇泄露return 0;}方法2:#include#includemain(){char str[]="hello,world";int len=strlen(str);char t;for(int i=0; i {t=str[i];str[i]=str[len-i-1]; str[len-i-1]=t;}printf("%s",str);return 0;}2、链表题:一个链表的结点结构struct Node{int data ;Node *next ;};typedef struct Node Node ;(1)已知链表的头结点head,写一个函数把这个链表逆序 ( Intel)Node * ReverseList(Node *head) //链表逆序{if ( head == NULL || head->next == NULL )return head;Node *p1 = head ;Node *p2 = p1->next ;Node *p3 = p2->next ;p1->next = NULL ;while ( p3 != NULL ){p2->next = p1 ;p1 = p2 ;p2 = p3 ;p3 = p3->next ;}p2->next = p1 ;head = p2 ;return head ;}(2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。
嵌入式系统试题及答案
![嵌入式系统试题及答案](https://img.taocdn.com/s3/m/18fbf52c777f5acfa1c7aa00b52acfc788eb9f01.png)
嵌入式系统试题及答案一、单项选择题(每题2分,共20分)1. 嵌入式系统的特点是()。
A. 体积小、成本低、功能强B. 体积大、成本高、功能弱C. 体积小、成本低、功能弱D. 体积大、成本高、功能强答案:A2. 以下哪个不是嵌入式系统的组成部分?()A. 嵌入式微处理器B. 嵌入式操作系统C. 通用操作系统D. 嵌入式软件答案:C3. 嵌入式系统通常用于()。
A. 个人计算机B. 服务器C. 家用电器D. 网络设备答案:C4. 在嵌入式系统中,以下哪个不是常用的编程语言?()A. C语言B. C++C. JavaD. Python答案:D5. 嵌入式系统的开发流程不包括以下哪个步骤?()A. 需求分析B. 系统设计C. 系统测试D. 系统销售答案:D6. 以下哪个是嵌入式系统的硬件平台?()A. 单片机B. 个人电脑C. 服务器D. 工作站答案:A7. 嵌入式系统的实时性要求通常()。
A. 非常高B. 一般C. 非常低D. 可有可无答案:A8. 以下哪个不是嵌入式系统的开发工具?()A. 编译器B. 调试器C. 编辑器D. 游戏机答案:D9. 嵌入式系统通常不用于以下哪个领域?()A. 汽车电子B. 移动通信C. 航空航天D. 办公自动化答案:D10. 以下哪个是嵌入式系统的软件平台?()A. 操作系统B. 数据库系统C. 网络服务器D. 办公软件答案:A二、多项选择题(每题3分,共15分)1. 嵌入式系统的开发需要考虑以下哪些因素?()A. 系统稳定性B. 系统安全性C. 系统可扩展性D. 系统成本答案:ABCD2. 嵌入式系统的硬件设计通常包括以下哪些部分?()A. 微处理器B. 存储器C. 电源管理D. 显示设备答案:ABCD3. 嵌入式系统的软件设计通常包括以下哪些部分?()A. 操作系统B. 应用程序C. 驱动程序D. 用户界面答案:ABCD4. 以下哪些是嵌入式系统的开发工具?()A. 交叉编译器B. 版本控制系统C. 性能分析工具D. 游戏机答案:ABC5. 嵌入式系统在以下哪些领域有广泛应用?()A. 工业控制B. 消费电子C. 医疗设备D. 办公自动化答案:ABC三、判断题(每题2分,共10分)1. 嵌入式系统与通用计算机系统没有区别。
嵌入式笔试题目
![嵌入式笔试题目](https://img.taocdn.com/s3/m/1a046a29e418964bcf84b9d528ea81c759f52e1b.png)
1、在嵌入式系统中,以下哪个组件负责执行程序指令?
A. 内存
B. 中央处理器(CPU)
C. 输入/输出设备
D. 存储设备(答案:B)
2、以下哪种类型的存储器在掉电后会丢失数据?
A. SRAM
B. DRAM
C. Flash ROM
D. EEPROM(答案:B)
3、在嵌入式系统设计中,I2C总线主要用于什么类型的通信?
A. 高速数据传输
B. 低速串行通信
C. 并行数据传输
D. 高频信号处理(答案:B)
4、下列哪个协议是用于网络通信,特别是嵌入式设备与互联网之间的通信?
A. SPI
B. I2C
C. TCP/IP
D. UART(答案:C)
5、在嵌入式Linux系统中,Bootloader的主要作用是?
A. 加载并启动操作系统内核
B. 提供图形用户界面
C. 管理系统文件
D. 执行应用程序(答案:A)
6、以下哪种编程语言常用于嵌入式系统的底层开发?
A. Python
B. Java
C. C/C++
D. JavaScript(答案:C)
7、在嵌入式系统中,中断的作用是什么?
A. 提高系统处理速度
B. 使系统进入低功耗模式
C. 允许CPU在处理其他任务时响应外部事件
D. 增加系统内存(答案:C)
8、下列哪项技术不是用于降低嵌入式系统功耗的?
A. 睡眠模式
B. 动态电压和频率调整(DVFS)
C. 增加处理器核心数量
D. 定时唤醒机制(答案:C)。
嵌入式笔试题及答案
![嵌入式笔试题及答案](https://img.taocdn.com/s3/m/c5136227a36925c52cc58bd63186bceb18e8ed56.png)
嵌入式笔试题及答案一、单选题(每题2分,共20分)1. 嵌入式系统通常指的是:A. 通用计算机系统B. 专用计算机系统C. 便携式计算机系统D. 网络计算机系统答案:B2. 下列哪个不是嵌入式系统的特点:A. 实时性B. 资源受限C. 可扩展性D. 专用性答案:C3. 在嵌入式系统中,通常使用哪种类型的处理器:A. 通用处理器B. 微处理器C. 数字信号处理器D. 图形处理器答案:B4. 嵌入式系统的开发流程不包括以下哪一项:A. 需求分析B. 系统设计C. 硬件选择D. 软件编程答案:C5. 以下哪个不是嵌入式操作系统的功能:A. 任务调度B. 内存管理C. 文件系统D. 网络通信答案:D6. 在嵌入式系统中,中断服务程序的作用是:A. 执行系统初始化B. 处理系统异常C. 响应外部事件D. 执行系统监控答案:C7. 以下哪个不是嵌入式系统的硬件组成部分:A. 微处理器B. 存储器C. 输入/输出设备D. 操作系统答案:D8. 嵌入式系统中的外设驱动程序的主要功能是:A. 控制外设的电源B. 实现系统与外设的通信C. 管理外设的内存D. 处理外设的错误答案:B9. 在嵌入式系统中,以下哪个不是常用的编程语言:A. C语言B. C++C. JavaD. Assembly答案:C10. 以下哪个不是嵌入式系统的开发工具:A. 编译器B. 调试器C. 仿真器D. 网络浏览器答案:D二、多选题(每题3分,共15分)11. 嵌入式系统的开发需要考虑以下哪些因素:A. 系统性能B. 成本控制C. 功耗管理D. 软件兼容性答案:A, B, C12. 嵌入式系统的软件包括以下哪些部分:A. 引导程序B. 操作系统C. 应用程序D. 驱动程序答案:A, B, C, D13. 嵌入式系统的硬件设计包括以下哪些内容:A. 微处理器选择B. 存储器设计C. 外设接口D. 电源管理答案:A, B, C, D14. 嵌入式系统的调试方法包括:A. 单元测试B. 集成测试C. 系统测试D. 性能测试答案:A, B, C, D15. 嵌入式系统的实时性要求包括:A. 确定性B. 可预测性C. 可重复性D. 可扩展性答案:A, B三、判断题(每题1分,共10分)16. 嵌入式系统总是需要操作系统的支持。
嵌入式笔试题
![嵌入式笔试题](https://img.taocdn.com/s3/m/71d12d743868011ca300a6c30c2259010302f376.png)
嵌入式笔试题在当今科技快速发展的背景下,嵌入式系统成为人们日常生活中不可或缺的一部分。
嵌入式系统广泛应用于智能手机、可穿戴设备、汽车电子、家用电器等各个领域。
为了提高嵌入式系统的工程能力,以下是一些嵌入式系统相关的笔试题目,帮助大家巩固相关知识。
一、单项选择题1. 软件开发中,以下那种语言属于编译型语言?A. PythonB. C++C. JavaScriptD. Ruby2. 嵌入式系统可以分为硬件和软件两部分。
以下哪一项属于嵌入式系统的软件部分?A. CPUB. RAMC. 操作系统D. 电源3. 在嵌入式系统中,以下哪一种通信协议被广泛应用于设备间的数据传输?A. HTTPB. FTPC. USBD. DNS4. 嵌入式系统中最常用的开发语言是什么?A. CB. PythonC. JavaD. Ruby5. 在嵌入式系统的开发过程中,以下哪个阶段主要涉及硬件设计?A. 需求分析B. 软件开发C. 硬件设计D. 测试与验证二、填空题1. 嵌入式系统是一种______________的计算机系统。
2. 嵌入式系统通常由______、__________和________组成。
3. 常用的嵌入式操作系统有____________、_________、__________等。
4. 在嵌入式系统中,CPU的作用是______________。
5. 嵌入式系统的节能设计可以通过_______________实现。
三、简答题1. 请简要解释什么是中断?2. 嵌入式系统中的RTOS是什么意思?简述其作用。
3. 请简要解释什么是嵌入式系统的实时性要求?4. 嵌入式系统的可靠性是指什么?如何提高嵌入式系统的可靠性?5. 嵌入式系统的性能指标有哪些?请列举并解释。
四、编程题请使用C语言编写一个简单的嵌入式系统应用程序,在LCD显示屏上循环显示数字1到9,每个数字显示1秒钟,然后重复该过程。
附加题:请将上述应用程序在实际的硬件平台上进行调试和运行。
嵌入式软件开发岗位招聘笔试题及解答(某大型国企)
![嵌入式软件开发岗位招聘笔试题及解答(某大型国企)](https://img.taocdn.com/s3/m/adab399fc9d376eeaeaad1f34693daef5ff71350.png)
招聘嵌入式软件开发岗位笔试题及解答(某大型国企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、在C语言中,volatile关键字的主要作用是什么?A. 使变量成为全局变量B. 告诉编译器该变量可能会被外部因素改变,从而阻止优化C. 使变量成为常量D. 加快变量访问速度2、关于ARM架构处理器,以下哪个描述是正确的?A. ARM架构处理器仅支持32位指令集B. 所有的ARM处理器都支持Thumb-2技术C. ARM处理器采用的是RISC设计理念D. ARM处理器不能运行Linux操作系统3、嵌入式软件开发岗位笔试题及解答(某大型国企)一、单项选择题(每题2分,共20分)3、以下哪个不是嵌入式系统设计中常用的实时操作系统(RTOS)?A. VxWorksB. LinuxC. FreeRTOSD. Windows CE4、在嵌入式软件开发中,以下哪个概念不是用于描述硬件和软件之间接口的标准?A. 总线协议B. 寄存器映射C. 驱动程序D. API5、在ARM架构中,哪个寄存器通常被用作链接寄存器来保存子程序返回地址?A. R0B. R13 (SP)C. R14 (LR)D. R15 (PC)6、关于嵌入式系统的实时性,下列说法正确的是:A. 实时系统必须保证所有任务都能在指定的时间内完成B. 实时系统仅关注任务的平均响应时间C. 软实时系统对响应时间的要求比硬实时系统更加严格D. 实时系统中,任务的优先级可以根据任务的紧迫程度动态调整7、以下哪个协议不属于嵌入式系统中常用的网络通信协议?A. TCP/IPB. CAN(Controller Area Network)C. BluetoothD. SPI(Serial Peripheral Interface)8、在嵌入式软件开发中,以下哪个概念通常用来描述硬件和软件之间的接口?A. 驱动程序B. 硬件抽象层(HAL)C. 用户界面(UI)D. 操作系统内核9、在嵌入式系统开发过程中,以下哪种编程语言通常被认为最适合用于硬件抽象层(HAL)的开发?A. JavaB. C++C. CD. Python 10、以下关于ARM架构的描述,哪一项是正确的?A. ARM架构是一种RISC(精简指令集计算机)架构。
嵌入式软件开发岗位招聘笔试题与参考答案(某大型央企)2025年
![嵌入式软件开发岗位招聘笔试题与参考答案(某大型央企)2025年](https://img.taocdn.com/s3/m/17473907b94ae45c3b3567ec102de2bd9605dee8.png)
2025年招聘嵌入式软件开发岗位笔试题与参考答案(某大型央企)一、单项选择题(本大题有10小题,每小题2分,共20分)1、在嵌入式系统中,以下哪一项不是RTOS(实时操作系统)的主要特性?A. 任务调度B. 中断处理C. 文件管理D. 内存管理答案:C解析: RTOS的主要特性包括任务调度、中断处理和内存管理等,这些特性确保了系统的实时性和可靠性。
文件管理虽然也是操作系统的一部分,但它通常不是RTOS的重点,尤其是在资源受限的嵌入式环境中,RTOS更关注于快速响应和处理实时任务。
2、关于嵌入式C语言编程,下列说法正确的是:A. 在嵌入式系统中,所有的变量都应尽量定义为全局变量以方便使用B. 嵌入式C程序中,函数参数传递时总是采用值传递方式C. 对于嵌入式应用,应该避免使用浮点运算,因为它们消耗较多的CPU时间和资源D. 编写嵌入式代码时,不需要考虑代码的可移植性答案:C解析:浮点运算相较于整数运算确实需要更多的CPU时间和资源,在资源有限的嵌入式环境中,尽量减少或优化浮点运算可以提高效率和性能。
选项A不正确,因为过度使用全局变量会增加代码复杂度并可能导致难以调试的问题;选项B不准确,因为在某些情况下,指针传递也是常用的方式,尤其是对于大尺寸的数据结构;选项D也不正确,考虑到不同硬件平台之间的差异,编写具有可移植性的代码是嵌入式开发中的一个重要方面。
3、在嵌入式软件开发中,以下哪个选项不是一种常用的实时操作系统(RTOS)?A. VxWorksB. FreeRTOSC. AndroidD. QNX答案:C解析:Android是一种操作系统,主要用于移动设备,如智能手机和平板电脑。
而VxWorks、FreeRTOS和QNX都是实时操作系统,常用于嵌入式系统中,用于处理实时任务和事件。
4、以下哪个选项不是嵌入式软件开发中常用的编程语言?A. CB. C++C. PythonD. Assembly答案:C解析:C和C++是嵌入式开发中最常用的编程语言,因为它们提供了对硬件的直接访问和良好的性能。
嵌入式软件开发岗位招聘笔试题及解答(某大型国企)2025年
![嵌入式软件开发岗位招聘笔试题及解答(某大型国企)2025年](https://img.taocdn.com/s3/m/45eddbb477eeaeaad1f34693daef5ef7ba0d1226.png)
2025年招聘嵌入式软件开发岗位笔试题及解答(某大型国企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、在嵌入式软件开发中,以下哪个不是常见的硬件接口?A. SPI接口B. USB接口C. UART接口D. I2C接口2、嵌入式系统中,下列哪种编程语言最适合用于开发实时操作系统?A. JavaB. PythonC. C++D. JavaScript3、嵌入式系统中,以下关于ARM架构描述错误的是:A. ARM架构低功耗、高性能B. ARM架构主要用于移动计算和嵌入式领域C. ARM架构不支持多媒体和DSP功能D. ARM架构具有灵活的技术授权模式4、在嵌入式软件开发中,关于实时操作系统的描述错误的是:A. 实时操作系统具有高度的响应性和确定性B. 实时操作系统主要应用于实时性要求不高的场景C. 实时操作系统可以确保任务的及时完成和响应需求D. 实时操作系统常用于工业控制、医疗设备等领域5、在嵌入式软件开发中,以下哪种编程语言因其高性能和对低级硬件的控制能力而被广泛使用?A. PythonB. JavaC. CD. JavaScript6、嵌入式系统的核心特点是:A. 计算机视觉B. 无线通信C. 实时响应D. 数据存储7、在嵌入式软件开发中,以下哪个选项是实时操作系统的特点?A. 具有固定的时间表B. 可以根据需要动态调整任务优先级C. 仅适用于单处理器系统D. 不支持多任务处理8、在嵌入式系统中,通常使用哪种类型的存储器?A. 硬盘驱动器C. 光盘D. 闪存9、嵌入式软件开发中,关于内存管理的说法错误的是:A. 动态内存分配是指在程序运行时动态地分配或释放内存。
B. 静态内存分配在程序开始运行时进行,并在程序结束时释放。
C. 内存泄漏是指分配给程序的内存没有得到及时回收,导致内存占用持续增长。
D. 为了避免内存溢出,应该尽可能多地分配内存空间。
10、关于嵌入式系统的说法,错误的是:A. 嵌入式系统通常运行在特定硬件平台上,并对硬件环境有较强依赖性。
嵌入式考试题目及答案
![嵌入式考试题目及答案](https://img.taocdn.com/s3/m/0de46747ae45b307e87101f69e3143323968f5a3.png)
嵌入式考试题目及答案一、单选题(每题2分,共20分)1. 嵌入式系统是指()。
A. 嵌入到其他系统中的专用计算机系统B. 嵌入到其他系统中的通用计算机系统C. 嵌入到其他系统中的操作系统D. 嵌入到其他系统中的硬件系统答案:A2. 以下哪个不是嵌入式系统的典型应用领域?()A. 消费电子B. 工业控制C. 航空航天D. 个人电脑答案:D3. 在嵌入式系统中,以下哪个不是常用的处理器类型?()A. 微控制器(MCU)B. 数字信号处理器(DSP)C. 微处理器(MPU)D. 网络处理器(NP)答案:D4. 以下哪个不是嵌入式系统的开发工具?()A. 编译器B. 调试器C. 仿真器D. 打印机答案:D5. 在嵌入式系统中,以下哪个不是操作系统的功能?()A. 任务调度B. 内存管理C. 文件系统D. 网络通信答案:D6. 以下哪个不是嵌入式系统的硬件组成?()A. 处理器B. 存储器C. 输入/输出设备D. 显示器答案:D7. 在嵌入式系统中,以下哪个不是软件组成?()A. 操作系统B. 应用程序C. 驱动程序D. 打印机驱动答案:D8. 以下哪个不是嵌入式系统的开发流程?()A. 需求分析B. 系统设计C. 编码D. 测试答案:D9. 在嵌入式系统中,以下哪个不是调试技术?()A. 断点B. 单步执行C. 代码覆盖率分析D. 性能优化答案:D10. 以下哪个不是嵌入式系统的可靠性要求?()A. 容错性B. 可预测性C. 可维护性D. 可扩展性答案:D二、多选题(每题3分,共15分)11. 嵌入式系统的特点是()。
A. 实时性B. 专用性C. 可扩展性D. 低功耗答案:ABD12. 嵌入式系统的开发工具包括()。
A. 编译器B. 调试器C. 仿真器D. 打印机答案:ABC13. 嵌入式系统的硬件组成包括()。
A. 处理器B. 存储器C. 输入/输出设备D. 显示器答案:ABC14. 嵌入式系统的软件组成包括()。
嵌入式考试题目和答案
![嵌入式考试题目和答案](https://img.taocdn.com/s3/m/3cd65de903d276a20029bd64783e0912a3167c1c.png)
嵌入式考试题目和答案****一、选择题(每题2分,共20分)1. 以下哪个不是嵌入式系统的典型特征?A. 实时性B. 交互性C. 资源受限D. 专用性**答案:B**2. 在嵌入式系统中,以下哪个不是常用的处理器?A. ARMB. MIPSC. x86D. RISC-V**答案:C**3. 嵌入式操作系统中,哪个不是任务调度的基本策略?A. 先来先服务(FCFS)B. 轮询调度(Round Robin)C. 优先级调度D. 随机调度**答案:D**4. 在嵌入式系统中,以下哪个不是常用的存储介质?A. EEPROMB. FlashC. RAMD. CD-ROM**答案:D**5. 以下哪个不是嵌入式系统开发中常用的编程语言?A. CB. C++C. JavaD. Python**答案:D**6. 以下哪个不是嵌入式系统中常用的通信接口?A. UARTB. I2CC. USBD. VGA**答案:D**7. 在嵌入式系统中,以下哪个不是常用的电源管理技术?A. 睡眠模式B. 动态电压调节C. 软件重启D. 电源门控**答案:C**8. 以下哪个不是嵌入式系统的调试工具?A. JTAGB. SWDC. RS-232D. GDB**答案:C**9. 在嵌入式系统中,以下哪个不是常用的操作系统?A. LinuxB. VxWorksC. AndroidD. Windows**答案:D**10. 以下哪个不是嵌入式系统设计中的考虑因素?A. 功耗B. 成本C. 性能D. 外观**答案:D**二、填空题(每题2分,共20分)1. 嵌入式系统通常由______、______、______三部分组成。
**答案:硬件、软件、固件**2. 在嵌入式系统中,______是指系统在规定时间内完成其功能的能力。
**答案:实时性**3. 嵌入式系统的______是指系统在有限的资源下运行的能力。
**答案:资源受限**4. 嵌入式系统的______是指系统在特定应用领域内的高度专业化。
嵌入式工程师笔试题目
![嵌入式工程师笔试题目](https://img.taocdn.com/s3/m/45210c2abb4cf7ec4bfed004.png)
嵌入式工程师笔试题目嵌入式工程师笔试题目嵌入式工程师是指具有C/C++语言、汇编语言等基础,熟悉模拟电子技术等硬件知识,了解处理器体系结构,做嵌入式系统设计和开发,包括硬件系统的建立和相关软件开发、移植、调试等工作的人,下面就是整理的嵌入式工程师笔试题目,请看:嵌入式工程师笔试题目【1】1、一根金条长31厘米,如果把它切成数段,使其中的一段或几段能够接成长为1到31中任何整数的金条,请问要切几次?A.4B.5C.6D.7参考答案:A2、运行在多核处理器上的Linux环境中,若临界区非常短,且不允许线程上下文切换的情况下,使用下列哪种机制满足上述需求并且性能最好?A.SpinLockB.MutexC.SemaphoreD.Condition variable参考答案:A3、以下程序输出的结果是()#includeint main(){int x=10,y=10;printf("%d %d",x--,--y);}A.10 10B.9 9C.9 10D.10 9参考答案:D4、下面所述步骤中,不是创建进程所必须的步骤是?A.由调度程序为进程分配CPUB.建立一个进程控制块C.为进程分配内存D.将进程控制块链入就绪队列参考答案:A5、下面描述中,表达正确的有()A.公有继承是基类中的public成员在派生类中仍是public的B.公有继承是基类中的'private成员在派生类中仍是private的C.公有继承是基类中的protected成员在派生类中仍是protected的D.私有继承是基类中的public成员在派生类中仍是private的参考答案:ACD6、int listen(SOCKET s, int backlog);该函数中第二个参数的含义是?A.是否打开log信息B.是否打开后台log信息C.后台等待连接队列的最大限制值D.后台等待连接队列的最小限制值参考答案:C7、Java程序中的类名称必须与存放该类的文件名相同。
嵌入式linux c开发常见笔试题目
![嵌入式linux c开发常见笔试题目](https://img.taocdn.com/s3/m/f7795c838ad63186bceb19e8b8f67c1cfbd6ee52.png)
嵌入式linux c开发常见笔试题目嵌入式Linux C开发是一个广泛应用于各种嵌入式设备的技术领域,也是许多企业在招聘时重点考察的技能。
在笔试中,考察的内容通常包括C语言基础、嵌入式系统知识、Linux系统编程等方面。
以下是一些常见的嵌入式Linux C开发笔试题目,供大家参考。
1. C语言基础在嵌入式Linux C开发中,对C语言的熟练掌握是非常重要的。
下面是一些与C语言基础相关的题目:1.1 请写出C语言中的数据类型,并解释其含义。
1.2 请解释C语言中的指针,并写出指针的声明、赋值和使用的例子。
1.3 请解释C语言中的结构体,并写出结构体的定义和使用的例子。
2. 嵌入式系统知识嵌入式系统是指在限定的资源和空间中运行的计算机系统,对于嵌入式Linux C开发来说,对嵌入式系统的了解是必不可少的。
下面是一些与嵌入式系统知识相关的题目:2.1 请解释嵌入式系统的特点,并举例说明。
2.2 请简要解释Linux内核的作用,并说明为什么在嵌入式系统中常使用Linux内核。
2.3 请解释交叉编译的概念,并说明为什么在嵌入式Linux C开发中常使用交叉编译。
3. Linux系统编程Linux系统编程是指在Linux系统上进行程序开发和调试的技术。
对于嵌入式Linux C开发者来说,熟悉Linux系统编程是必备的技能。
下面是一些与Linux系统编程相关的题目:3.1 请解释Linux系统中的进程和线程,并说明它们的区别和联系。
3.2 请解释Linux文件系统的层次结构,并说明每个层次的作用。
3.3 请解释Linux中的系统调用,并举例说明几个常用的系统调用。
4. 嵌入式Linux应用开发嵌入式Linux应用开发是指在嵌入式Linux系统上进行应用程序开发的技术。
下面是一些与嵌入式Linux应用开发相关的题目:4.1 请编写一个在嵌入式Linux系统上运行的Hello World程序。
4.2 请解释Linux设备驱动程序的概念,并说明为什么在嵌入式Linux应用开发中常涉及到设备驱动程序。
嵌入式考试题目及答案
![嵌入式考试题目及答案](https://img.taocdn.com/s3/m/1595244aabea998fcc22bcd126fff705cc175ce0.png)
嵌入式考试题目及答案一、单项选择题(每题2分,共20分)1. 嵌入式系统的特点是()。
A. 体积小、功耗低、可靠性高B. 体积大、功耗高、可靠性低C. 体积小、功耗高、可靠性低D. 体积大、功耗低、可靠性高答案:A2. 以下哪个不是嵌入式操作系统的特点?()A. 实时性B. 多任务C. 可扩展性D. 复杂性答案:D3. 嵌入式系统的硬件核心是()。
A. 微处理器B. 微控制器C. 存储器D. 输入输出设备答案:B4. 在嵌入式系统中,以下哪个不是常用的总线标准?()A. I2CB. SPIC. USBD. Ethernet答案:D5. 嵌入式系统的软件开发不包括以下哪个阶段?()A. 需求分析B. 系统设计C. 编码D. 硬件设计答案:D6. 以下哪个不是嵌入式系统的开发工具?()A. 编译器B. 调试器C. 仿真器D. 路由器答案:D7. 嵌入式系统中,以下哪个不是常用的编程语言?()A. C语言B. C++C. JavaD. Python答案:D8. 在嵌入式系统中,以下哪个不是常用的存储介质?()A. EEPROMB. FlashC. RAMD. 硬盘答案:D9. 嵌入式系统的功耗优化不包括以下哪个方面?()A. 硬件优化B. 软件优化C. 系统优化D. 外观优化答案:D10. 以下哪个不是嵌入式系统的可靠性测试?()A. 抗干扰测试B. 温度测试C. 湿度测试D. 色彩测试答案:D二、多项选择题(每题3分,共15分)1. 嵌入式系统的开发流程包括()。
A. 需求分析B. 系统设计C. 编码D. 测试E. 维护答案:ABCDE2. 嵌入式系统的硬件设计需要考虑的因素包括()。
A. 性能B. 成本C. 功耗D. 体积E. 可靠性答案:ABCDE3. 嵌入式系统的软件设计需要考虑的因素包括()。
A. 实时性B. 可移植性C. 可维护性D. 可扩展性E. 稳定性答案:ABCDE4. 嵌入式系统的测试包括()。
常见嵌入式笔试题
![常见嵌入式笔试题](https://img.taocdn.com/s3/m/60d5d717b52acfc789ebc92f.png)
常见嵌入式笔试题(一)
1)将一个字符串逆序
代码:
#include<stdio.h>
#include<string.h>
void s_back(char * a )
char *ptr;
if ((ptr = (char *)malloc(0)) == NULL)
puts("Got a null pointer");
else
puts("Got a valid pointer");
这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是“Got a valid pointer”。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。
__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf(" Area = %f", area);
return area;
中断(Interrupts)
11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。
嵌入式笔试题及答案
![嵌入式笔试题及答案](https://img.taocdn.com/s3/m/6c9729474b7302768e9951e79b89680203d86bfb.png)
嵌入式笔试题及答案一、选择题(每题2分,共40分)1. 下面哪个不是嵌入式系统的特点?A. 实时性强B. 资源受限C. 包含网络通信功能D. 电源自主供电答案:C2. 嵌入式系统的一个主要应用领域是:A. 医疗设备B. 大型工业控制C. 智能手机D. 电子游戏答案:A3. 在嵌入式系统开发中,通常使用哪种编程语言?A. PythonB. JavaC. C/C++D. JavaScript答案:C4. 嵌入式系统的主要硬件组成部分是:A. 处理器、内存、外设B. 显示屏、键盘、鼠标C. 摄像头、扬声器、麦克风D. 电源、机箱、风扇答案:A5. 在嵌入式系统开发中,以下哪个是常用的实时操作系统?A. WindowsB. LinuxC. AndroidD. RTOS答案:D...二、编程题(共60分)请使用C语言完成以下题目:1. 编写一个函数,判断一个数是否为素数。
函数原型为: int isPrime(int n);答案:```c#include <stdio.h>int isPrime(int n) {int i;for (i = 2; i <= n/2; i++) {if (n % i == 0) {return 0; // 不是素数}}return 1; // 是素数}int main() {int n;printf("请输入一个整数:");scanf("%d", &n);if (isPrime(n)) {printf("%d是素数\n", n);} else {printf("%d不是素数\n", n);}return 0;}```2. 编写一个函数,计算n的阶乘。
函数原型为: int factorial(int n);答案:```c#include <stdio.h>int factorial(int n) {if (n == 0) {return 1;} else {return n * factorial(n - 1);}}int main() {int n;printf("请输入一个整数:");scanf("%d", &n);printf("%d的阶乘为:%d\n", n, factorial(n));return 0;}```...三、简答题(每题10分,共30分)1. 简述嵌入式系统的优缺点。
嵌入式软件开发岗位招聘笔试题及解答(某大型国企)
![嵌入式软件开发岗位招聘笔试题及解答(某大型国企)](https://img.taocdn.com/s3/m/bb64dc42a200a6c30c22590102020740be1ecd3a.png)
招聘嵌入式软件开发岗位笔试题及解答(某大型国企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、嵌入式软件开发中,以下哪个组件负责处理输入/输出操作?A、内核(Kernel)B、驱动程序(Driver)C、应用程序(Application)D、操作系统(Operating System)2、以下哪个编程语言通常用于嵌入式系统的开发?A、JavaB、C/C++C、PythonD、JavaScript3、以下关于嵌入式系统开发的特点,描述错误的是:A. 嵌入式系统通常具有实时性要求高B. 嵌入式系统通常具有功耗限制C. 嵌入式系统通常具有资源受限的特点D. 嵌入式系统不需要进行软件测试4、以下关于Cortex-M微控制器内核,描述错误的是:A. Cortex-M内核是ARM公司推出的微控制器内核系列B. Cortex-M内核具有低功耗和高性能的特点C. Cortex-M内核不支持中断嵌套D. Cortex-M内核广泛应用于嵌入式系统5、题干:嵌入式软件开发中,以下哪种通信协议主要用于短距离、低功耗的设备间通信?A. USBB. TCP/IPC. CAND. NFC6、题干:在嵌入式系统中,以下哪个组件通常负责处理硬件中断?A. 运行时库B. 操作系统内核C. 应用程序D. 硬件抽象层7、嵌入式软件开发中,以下哪个不是常见的嵌入式操作系统?A)VxWorksB)FreeRTOSC)LinuxD)Windows8、在嵌入式软件开发中,以下哪种编程语言最适合用于硬件抽象层(HAL)的开发?A)C++B)PythonC)JavaD)Assembly9、以下哪个选项不是嵌入式系统常见的实时操作系统(RTOS)?A. VxWorksB. LinuxC. FreeRTOSD. Windows XP 10、在嵌入式软件开发中,以下哪种编程语言不是通常用于编写嵌入式应用的?A. CB. C++C. PythonD. Assembly二、多项选择题(本大题有10小题,每小题4分,共40分)1、以下哪些是嵌入式系统开发中常用的编程语言?A. C语言B. C++C. PythonD. JavaE. Assembly语言2、在嵌入式系统设计中,以下哪些是典型的硬件资源?A. 微控制器(MCU)B. 数字信号处理器(DSP)C. 传感器D. 显示屏E. 通信接口3、以下哪些技术或编程语言通常用于嵌入式软件开发?A. C语言B. PythonC. JavaD. ARM汇编语言E. Verilog4、以下哪些是嵌入式系统开发中常见的开发流程步骤?A. 需求分析B. 硬件选型与设计C. 软件设计D. 编码与调试E. 系统集成与测试5、以下哪些技术或工具是嵌入式软件开发中常用的?()A、C/C++B、Linux操作系统C、Keil MDKD、IAR EWARME、QtF、MATLAB/Simulink6、以下哪些是嵌入式系统设计中常见的硬件接口?()A、SPI(串行外设接口)B、I2C(串行总线上传输接口)C、UART(通用异步收发传输器)D、USB(通用串行总线)E、PCI(外围组件互联)F、CAN(控制器局域网)7、以下哪些技术或工具通常用于嵌入式软件开发?()A. C语言B. PythonC. VHDLD. ARM Cortex-M3E. SQLite8、在嵌入式软件开发过程中,以下哪些步骤是常见的?()A. 需求分析B. 硬件选型C. 设计架构D. 编码实现E. 系统集成测试9、以下哪些技术或工具是嵌入式软件开发中常用的?()A. C/C++B. ARM Cortex-M系列处理器架构C. Linux操作系统D. SQLite数据库E. Keil uVision集成开发环境 10、以下哪些是嵌入式系统开发过程中的关键阶段?()A. 需求分析B. 硬件选型与设计C. 软件设计D. 编码实现E. 测试与调试三、判断题(本大题有10小题,每小题2分,共20分)1、嵌入式软件开发岗位中,C语言是唯一可用的编程语言。
嵌入式软件工程师笔试题
![嵌入式软件工程师笔试题](https://img.taocdn.com/s3/m/e0996e990408763231126edb6f1aff00bed570d4.png)
嵌入式软件工程师笔试题一、选择题(每题2分,共20分)1. 在C语言中,下列哪个关键字用于定义结构体?A. ifB. switchC. structD. for2. 在嵌入式系统中,通常用于实现实时多任务操作的机制是:A. 线程B. 进程C. 中断D. 信号量3. 下列哪种存储器属于非易失性存储器?A. RAMB. ROMC. EEPROMD. SDRAM4. 在ARM架构中,用于存储程序计数器(PC)的寄存器是:A. R0B. R1C. R15D. SP5. 以下哪种通信协议不属于工业通信协议?A. ModbusB. CANC. HTTPD. Profibus6. 在嵌入式Linux开发中,设备树(Device Tree)的主要作用是:A. 描述硬件信息B. 配置内核参数C. 管理文件系统D. 运行应用程序7. 以下哪个是实时操作系统(RTOS)的特点?A. 支持多任务B. 支持多线程C. 支持图形界面D. 支持网络通信8. 在C语言中,用于动态分配内存的函数是:A. mallocB. freeC. callocD. realloc9. 以下哪种传感器通常用于测量物体的速度?A. 加速度传感器B. 陀螺仪C. 霍尔传感器D. 光电传感器10. 在嵌入式系统中,串行通信接口UART的主要作用是:A. 连接显示器B. 连接键盘C. 连接鼠标D. 连接串行设备二、填空题(每题2分,共20分)11. 在C语言中,使用关键字________可以定义一个指向函数的指针。
12. 在嵌入式系统中,________是一种常用的低功耗无线通信技术。
13. 为了在嵌入式设备中实现网络功能,通常需要使用________协议栈。
14. 在嵌入式Linux系统中,使用________命令可以查看当前系统的进程信息。
15. 一个典型的嵌入式系统通常包括硬件平台、________、外设和应用程序。
16. 在ARM架构中,异常处理程序通常存储在向量表的________部分。
嵌入式笔试题及答案
![嵌入式笔试题及答案](https://img.taocdn.com/s3/m/828c710659fafab069dc5022aaea998fcc2240ab.png)
嵌入式笔试题及答案一、选择题1. 在嵌入式系统中,以下哪个不是实时操作系统的特点?A. 多任务B. 可预测性C. 多用户D. 资源管理答案:C2. 以下哪个协议不是嵌入式系统中常用的通信协议?A. UARTB. I2CC. TCP/IPD. USB答案:C3. 在嵌入式系统中,以下哪个不是常用的存储设备?A. EEPROMB. SRAMC. ROMD. HDD答案:D二、填空题1. 嵌入式系统的______是指系统在规定的时间内完成对事件的处理的能力。
答案:实时性2. 在嵌入式系统中,______是一种常用的低功耗通信方式,适用于短距离通信。
答案:SPI3. 在嵌入式系统中,______是一种常用的非易失性存储器,断电后数据不会丢失。
答案:Flash三、简答题1. 简述嵌入式系统与通用计算机系统的主要区别。
答案:嵌入式系统与通用计算机系统的主要区别在于:嵌入式系统通常具有专用性,为特定任务设计,体积小,功耗低,成本敏感,并且往往需要实时响应;而通用计算机系统则功能更为全面,适用于多种任务,对实时性要求不高,体积和功耗相对较大。
2. 描述嵌入式系统中中断的概念及其作用。
答案:在嵌入式系统中,中断是指当某个外部或内部事件发生时,系统暂停当前任务,转而处理该事件的过程。
中断的作用是允许系统快速响应外部事件,提高系统的实时性和效率。
四、编程题1. 编写一个简单的C语言函数,实现对一个整数数组的排序。
```c#include <stdio.h>void sortArray(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}int main() {int arr[] = {64, 34, 25, 12, 22, 11, 90};int n = sizeof(arr) / sizeof(arr[0]);sortArray(arr, n);for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}```2. 编写一个嵌入式C语言程序,实现对一个LED灯的控制,使其每隔一秒闪烁一次。
嵌入式笔试题
![嵌入式笔试题](https://img.taocdn.com/s3/m/093c85723868011ca300a6c30c2259010202f31f.png)
嵌入式笔试题嵌入式笔试题第一部分:选择题(每题2分,共10题)1. 以下哪个不是嵌入式系统常用的操作系统?a) Windowsb) Linuxc) FreeRTOSd) VxWorks2. 嵌入式系统中常用的接口类型是?a) Ethernetb) USBc) GSMd) I2C3. 以下选项中,哪个不是嵌入式系统的特点?a) 多任务处理b) 实时处理c) 大内存容量d) 低功耗4. 嵌入式系统的开发过程中,通常使用的编程语言是:a) C/C++b) Javac) Pythond) HTML5. 下列选项中,哪种存储器类型适合用于嵌入式系统?a) 硬盘b) 四层堆栈存储器c) U盘d) 光盘6. 下面哪个选项不是典型的嵌入式系统应用场景?a) 智能手机b) 电视机c) 电饭煲d) 卫星导航系统7. 嵌入式系统中常用的传感器类型是?a) 加速度传感器b) 摄像头c) 雷达d) 扬声器8. 嵌入式系统的调试和测试通常使用的工具是:a) 逻辑分析仪b) 电池测试仪c) 声卡测试仪d) 滤波器9. 嵌入式系统的时钟频率通常是多少?a) 1GHzb) 10MHzc) 100KHzd) 1KHz10. 以下选项中,哪个不是嵌入式系统的开发平台?a) Arduinob) Raspberry Pic) Androidd) STM32第二部分:填空题(每题5分,共5题)1. 嵌入式系统最常用的通信总线是____________。
2. 嵌入式系统中的内存分为____________和____________两类。
3. ____________是一种常用的实时操作系统。
4. I2C总线是一种____________传输协议。
5. 嵌入式系统的主频表示____________。
第三部分:问答题1. 什么是嵌入式系统?请简要描述其特点和应用场景。
嵌入式系统是一种特殊的计算机系统,它被嵌入在其他设备或系统中,用于控制和操作设备的具体功能,而不是提供通用计算能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
预处理器(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更优化的代码,了解这个用法是很重要的。
3) 懂得在宏中小心地把参数用括号括起来4) 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p++, b);3. 预处理器标识#error的目的是什么?如果你不知道答案,请看参考文献1。
这问题对区分一个正常的伙计和一个书呆子是很有用的。
只有书呆子才会读C语言课本的附录去找出象这种问题的答案。
当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。
死循环(Infinite loops)4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。
我首选的方案是:while(1){}一些程序员更喜欢如下方案:for(;;){}这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。
如果一个应试者给出这个作为方案,我将用这个作为一个机会去探究他们这样做的基本原理。
如果他们的基本答案是:"我被教着这样做,但从没有想到过为什么。
"这会给我留下一个坏印象。
第三个方案是用 gotoLoop:...goto Loop;应试者如给出上面的方案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他是一个想进入新领域的BASIC/FORTRAN程序员。
数据声明(Data declarations)5. 用变量a给出下面的定义a) 一个整型数(An integer)b)一个指向整型数的指针( A pointer to an integer)c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)rd)一个有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 )答案是:a) int a; // An integerb) int *a; // A pointer to an integerc) int **a; // A pointer to a pointer to an integerd) int a[10]; // An array of 10 integerse) int *a[10]; // An array of 10 pointers to integersf) int (*a)[10]; // A pointer to an array of 10 integersg) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integerh) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer人们经常声称这里有几个问题是那种要翻一下书才能回答的问题,我同意这种说法。
当我写这篇文章时,为了确定语法的正确性,我的确查了一下书。
但是当我被面试的时候,我期望被问到这个问题(或者相近的问题)。
因为在被面试的这段时间里,我确定我知道这个问题的答案。
应试者如果不知道所有的答案(或至少大部分答案),那么也就没有为这次面试做准备,如果该面试者没有为这次面试做准备,那么他又能为什么出准备呢?Static6. 关键字static的作用是什么?这个简单的问题很少有人能回答完全。
在C语言中,关键字static有三个明显的作用:1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用。
大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。
这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。
Const7.关键字const有什么含意?我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道。
去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const 能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着"只读"就可以了。
尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。
(如果你想知道更详细的答案,仔细读一下Saks的文章吧。
)如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?const int a;int const a;const int *a;int * const a;int const * a const;/******/前两个的作用是一样,a是一个常整型数。
第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。
第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。
最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。
如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。
顺带提一句,也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。
如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。
(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。
)2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。
简而言之,这样可以减少bug的出现。
Volatile8. 关键字volatile有什么含意?并给出三个不同的例子。
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器)2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3) 多线程应用中被几个任务共享的变量回答不出这个问题的人是不会被雇佣的。
我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。
搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volatile变量。
不懂得volatile的内容将会带来灾难。
假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。
1)一个参数既可以是const还可以是volatile吗?解释为什么。
2); 一个指针可以是volatile 吗?解释为什么。
3); 下面的函数有什么错误:int square(volatile int *ptr){return *ptr * *ptr;}下面是答案:1)是的。
一个例子是只读的状态寄存器。
它是volatile因为它可能被意想不到地改变。
它是const因为程序不应该试图去修改它。
2); 是的。
尽管这并不很常见。
一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。
3) 这段代码有点变态。
这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:int square(volatile int *ptr){int a,b;a = *ptr;b = *ptr;return a * b;}由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。