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

嵌入式软件工程师笔试题华为集团公司文件内部编码:(TTT-UUTT-MMYB-URTTY-ITTLTY-(一)1什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。
在这种情况下,可以将所有包含文件预编译为一个预编译头。
2char*constpcharconst*pconstchar*p上述三个有什么区别答案:char*constp;//常量指针,p的值不可以修改charconst*p;//指向常量的指针,指向的常量值不可以改constchar*p;//和charconst*p3charstr1[]="abc";charstr2[]="abc";constcharstr3[]="abc";constcharstr4[]="abc";constchar*str5="abc";constchar*str6="abc";char*str7="abc";char*str8="abc";cout<<(str1==str2)<<endl;cout<<(str3==str4)<<endl;cout<<(str5==str6)<<endl;out<<(str7==str8)<<endl;结果是:0011str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
4以下代码中的两个sizeof用法有问题吗?[C易]voidUpperCase(charstr[])//将str中的小写字母转换成大写字母{for(size_ti=0;i<sizeof(str)/sizeof(str[0]);++i)if('a'<=str[i]&&str[i]<='z')str[i]-=('a'-'A');}charstr[]="aBcDe";cout<<"str字符长度为:"<<sizeof(str)/sizeof(str[0])<<endl; UpperCase(str);cout<<str<<endl;答案:函数内的sizeof有问题。
嵌入式试题及答案

嵌入式试题及答案一、单项选择题(每题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. 简述嵌入式系统的实时性要求。
嵌入式考试题

嵌入式考试题
一、选择题
1. 下列哪种不是嵌入式系统的特点?
A. 实时性
B. 高可靠性
C. 批量生产
D. 低功耗
2. 嵌入式系统中常用的处理器是?
A. Intel i7
B. ARM Cortex
C. AMD Ryzen
D. NVIDIA GeForce
3. 下列哪种不是嵌入式系统常用的操作系统?
A. Linux
B. Android
C. Windows
D. FreeRTOS
4. 嵌入式系统中常用的编程语言是?
A. Java
B. C++
C. Python
D. HTML
5. 以下哪种外设不能算作嵌入式系统的外设?
A. LCD显示屏
B. 小键盘
C. 摄像头
D. 鼠标
二、简答题
1. 什么是嵌入式系统?举例说明。
2. 嵌入式系统的设计流程包括哪些步骤?简要描述。
3. 什么是实时系统?嵌入式系统中为什么需要实时性?
4. 解释嵌入式系统中的中断处理机制。
5. 介绍一种常用的嵌入式系统开发工具及其功能。
三、计算题
1. 假设嵌入式系统中有一个定时器中断,中断间隔为10ms,如果在中断服务程序中运行一个函数需要5ms,问系统能否满足实时性要求?
2. 假设一个嵌入式系统的主频为50MHz,要求其通过串口发送一个100字节的数据包,波特率为9600bps,计算发送该数据包需要多长时间?
3. 假设一个嵌入式系统的Flash存储器容量为512MB,每个数据包大小为1KB,存储器可擦写次数为10000次,计算该存储器的寿命能够支持多少次数据包的写入操作?
以上为嵌入式考试题,请根据题目要求完成题目。
嵌入式笔试题及答案

嵌入式笔试题及答案一、单选题(每题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. 嵌入式系统总是需要操作系统的支持。
嵌入式笔试题

嵌入式笔试题在当今科技快速发展的背景下,嵌入式系统成为人们日常生活中不可或缺的一部分。
嵌入式系统广泛应用于智能手机、可穿戴设备、汽车电子、家用电器等各个领域。
为了提高嵌入式系统的工程能力,以下是一些嵌入式系统相关的笔试题目,帮助大家巩固相关知识。
一、单项选择题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秒钟,然后重复该过程。
附加题:请将上述应用程序在实际的硬件平台上进行调试和运行。
嵌入式考试试题及答案

一、填空题(请将答案填入题后括号中):共10小题,每小题2分,满分20分。
1、一般而言,嵌入式系统的构架可以分为4个部分:分别是(处理器)、存储器、输入/输出和软件,一般软件亦分为操作系统相关和(应用软件)两个主要部分。
2、根据嵌入式系统使用的微处理器,可以将嵌入式系统分为嵌入式微控制器, (嵌入式微处理器),(嵌入式DSP处理器)以及片上系统。
3、操作系统是联接硬件与应用程序的系统程序,其基本功能有(进程管理)、进程间通信、(内存管理)、I/O资源管理。
4、从嵌入式操作系统特点可以将嵌入式操作系统分为(实时操作系统)和分时操作系统,其中实时系统亦可分为(硬实时操作系统)和软实时系统。
5、内核负责管理各个任务,或者为每个任务分配CPU时间,并且负责任务之间的(通信),内核的基本服务是(任务切换)。
6、嵌入式开发一般采用(宿主机/目标机)方式,其中宿主机一般是指( PC机/台式机)。
7、哈佛体系结构数据空间和地址空间(分开),ARM7TDMI 采用(冯诺依曼体系)的内核架构。
二、选择题(请将答案填入题后括号中):共10小题,每小题2分,满分20分。
1、要使CPU能够正常工作,下列哪个条件不是处理器必须满足的。
( D )(A) 处理器的编译器能够产生可重入代码(B)在程序中可以找开或者关闭中断(C) 处理器支持中断,并且能产生定时中断(D)有大量的存储空间 2、下面哪种操作系统最方便移植到嵌入式设备中。
( D )(A) DOS(B)UNIX(C) Windows xp (D)LINUX在CPU中,__(3)__可用于传送和暂存用户数据,为ALU 执行算术逻辑运算提供工作区。
(3)A. 程序计数器 B. 累加寄存器 C. 程序状态寄存器 D. 地址寄存器●关于在I/O 设备与主机间交换数据的叙述,“__(4)__”是错误的。
(4)A. 中断方式下,CPU 需要执行程序来实现数据传送任务 B. 中断方式和DMA 方式下,CPU 与I/O 设备都可同步工作C. 中断方式和DMA 方式中,快速I/O 设备更适合采用中断方式传递数据D. 若同时接到DMA 请求和中断请求, CPU 优先响应DMA 请求●关于校验方法,“__(5)__ ”是正确的。
嵌入式面试笔试题
1、在嵌入式系统中,以下哪个组件负责执行存储在内存中的指令?A. 微处理器(答案)B. 内存芯片C. 输入设备D. 输出设备2、嵌入式系统中,Bootloader的主要功能是什么?A. 加载并启动操作系统(答案)B. 提供用户界面C. 管理文件系统D. 执行应用程序3、以下哪种总线类型在嵌入式系统中常用于连接低速外设?A. PCIB. USB 3.0C. I2C(答案)D. HDMI4、在嵌入式Linux系统中,交叉编译的目的是什么?A. 在目标平台上直接编译代码B. 在一个平台上编译代码,以在另一个不同架构的平台上运行(答案)C. 提高编译速度D. 减少编译产生的二进制文件大小5、以下哪个协议常用于嵌入式设备之间的低功耗无线通信?A. Bluetooth LE(答案)B. EthernetC. HDMID. USB6、在嵌入式软件开发中,中断服务程序(ISR)的主要作用是?A. 处理外部事件或异常情况,快速响应并执行特定任务(答案)B. 管理内存分配C. 控制设备电源状态D. 实现多任务并发执行7、以下哪种存储器类型在嵌入式系统中通常用作高速缓存?A. SRAM(答案,静态随机访问存储器,常用于高速缓存)B. EEPROMC. SD卡D. 硬盘8、在嵌入式系统设计中,使用看门狗定时器的主要目的是?A. 防止程序跑飞或死循环,提高系统可靠性(答案)B. 实现精确定时功能C. 控制设备开关机D. 测量系统功耗9、以下哪个工具在嵌入式开发中常用于调试和分析程序?A. 逻辑分析仪(答案)B. 示波器C. 万用表D. 频谱分析仪10、在嵌入式Linux内核配置中,以下哪个选项通常用于裁剪内核功能,以减少内存占用和提高性能?A. make menuconfig(答案,用于配置内核选项,进行裁剪)B. make cleanC. make allD. make install。
嵌入式软件开发岗位招聘笔试题及解答(某大型国企)
招聘嵌入式软件开发岗位笔试题及解答(某大型国企)(答案在后面)一、单项选择题(本大题有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(精简指令集计算机)架构。
嵌入式工程师笔试试卷及答案
嵌入式工程师笔试试卷及答案在嵌入式系统领域,嵌入式工程师是一种非常重要的职业。
他们需要掌握硬件和软件技能,以及在资源受限的环境下进行开发的技能。
本试卷旨在测试嵌入式工程师的专业知识和技能。
第一部分:选择题这一部分包括5个选择题,每个问题有4个选项,只有一个选项是正确的。
这部分的目的是测试对嵌入式系统的基础知识的掌握。
下列哪个不是嵌入式系统的特点?A. 硬件资源受限B. 实时性要求高C. 软件开发成本低D. 系统可靠性要求高答案:C下列哪个不是嵌入式系统中常用的总线标准?A. USBB. I2CC. RS232D. HDMI答案:D下列哪个不是C语言的关键字?A. switchB. caseC. classD. break答案:C下列哪个不是常用的编译器?A. GCCB. KeilC. IARD. Visual Studio答案:D下列哪个不是常用的调试工具?A. JTAGB. GDBC. SVND. Trace32答案:C第二部分:简答题这一部分包括2个简答题,每个问题需要回答2-3个句子。
这部分的目的是测试对嵌入式系统的基本原理和通信协议的理解。
什么是中断?中断的作用是什么?答:中断是指在CPU运行程序的过程中,由于某些事件的发生,需要立即暂停当前程序的执行,转而去执行另一段代码的一种机制。
中断的作用是提高CPU 的利用率,增强系统的实时性和可靠性,实现CPU与外设的异步通信。
请简述I2C总线的工作原理。
答:I2C总线是一种串行通信协议,通过两根线SCL和SDA实现设备间的通信。
SCL线是时钟线,由主设备控制;SDA线是数据线,用于主设备和从设备之间的数据传输。
在传输数据时,主设备先发送起始信号,然后发送从设备地址和读/写标志,接着发送数据或者请求数据,最后发送停止信号。
从设备在接收到起始信号后,会根据地址来判断是否需要响应主设备的请求。
第三部分:编程题这一部分包括2个编程题,需要在规定的环境下编写代码。
嵌入式软件工程师笔试题华为
嵌入式软件工程师笔试题华为IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】(一)1什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。
在这种情况下,可以将所有包含文件预编译为一个预编译头。
2char*constpcharconst*pconstchar*p上述三个有什么区别答案:char*constp;7请问以下代码有什么问题:int?main(){chara;char*str=&a;strcpy(str,"hello");printf(str);return0;}答案:没有为str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。
虽然可以正确输出结果,但因为越界进行内存读写而导致程序崩溃。
8Char*s="AAA";printf("%s",s);s[0]='B';printf("%s",s);有什么错?答案:"AAA"是字符串常量。
s是指针,指向这个字符串常量,所以声明s的时候就有问题。
cosntchar*s="AAA";然后又因为是常量,所以对是s[0]的赋值操作是不合法的。
9写一个“标准”宏,这个宏输入两个参数并返回较小的一个。
答案:.#defineMin(X,Y)((X)>(Y)(Y):(X))b=a^b;a=a^b;ora^=b^=a;17c和c++中的struct有什么不同?答案:c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。
c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private18.#include<>?#include<>?voidgetmemory(char*p){p=(char*)malloc(100);strcpy(p,"helloworld");}intmain(){char*str=NULL;getmemory(str);printf("%s/n",str);free(str);return0;}答案:程序崩溃,getmemory中的malloc不能返回动态内存,free()对str操作很危险19charszstr[10];产生什么结果为什么答案:长度不一样,会造成非法的OS20列举几种进程的同步机制,并比较其优缺点答案:原子操作信号量机制自旋锁管程,会合,分布式系统21.进程之间通信的途径答案:共享存储系统消息传递系统管道:以文件系统为基础22.进程死锁的原因答案:资源竞争及进程推进顺序非法23.死锁的4个必要条件答案:互斥、请求保持、不可剥夺、环路24.死锁的处理答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁25.操作系统中进程调度策略有哪几种答案:FCFS(先来先服务),优先级,时间片轮转,多级反馈26.类的静态成员和非静态成员有何区别?答案:类的静态成员每个类只有一个,非静态成员每个对象一个27.纯虚函数如何定义使用时应注意什么答案:virtualvoidf()=0;是接口,子类必须要实现28.数组和链表的区别答案:数组:数据顺序存储,固定大小;链表:数据可以随机存储,大小可动态改变的七层模型是什么?tcp/udp是属于哪一层tcp/udp有何优缺点答案:应用层表示层会话层传输层网络层链路层物理层;tcp/udp属于传输层;TCP服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(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 <sizeof(str)/sizeof(str[0]); ++i )if( 'a' <=str[i] && str[i] <='z' )str[i] -= ('a'-'A' ); }char str[] = "aBcDe";cout < < "str字符长度为: " < < sizeof(str)/sizeof(str[0]) < < endl;UpperCase( str ); cout < < str < < endl;答案:函数内的sizeof有问题。
根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。
函数外的str是一个静态定义的数组,因此其大小为6,因为还有'\0',函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。
(5)一个32位的机器,该机器的指针是多少位答案:指针是多少位只要看地址总线的位数就行了。
80386以后的机子都是32的数据总线。
所以指针的位数就是4个字节了。
6。
main(){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf("%d,%d",*(a+1),*(ptr-1)); }答案:2。
5*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5 &a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int) int *ptr=(int *)(&a+1); 则ptr实际是&(a[5]),也就是a+5 原因如下: &a是数组指针,其类型为 int (*)[5]; 而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同 a是长度为5的int数组指针,所以要加 5*sizeof(int) 所以ptr实际是a[5] 但是prt与(&a+1)类型是不一样的(这点很重要) 所以prt-1只会减去sizeof(int*) a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].7。
请问以下代码有什么问题:int main(){ char a; char *str=&a;strcpy(str,"hello");printf(str);return 0; } 答案:没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。
虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。
8。
char* s="AAA"; printf("%s",s); s[0]='B'; printf("%s",s); 有什么错?答案:"AAA"是字符串常量。
s是指针,指向这个字符串常量,所以声明s的时候就有问题。
cosnt char* s="AAA"; 然后又因为是常量,所以对是s[0]的赋值操作是不合法的。
9。
写一个“标准”宏,这个宏输入两个参数并返回较小的一个。
答案:.#define Min(X, Y) ((X)>(Y)?(Y):(X)) //结尾没有‘;’10。
嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。
答案:while(1){}或者for(;;)11。
关键字static的作用是什么?答案:定义静态变量12。
关键字const有什么含意?答案:表示常量不可以修改的变量。
13。
关键字volatile有什么含意?并举出三个不同的例子?答案:提示编译器对象的值可能在编译器未监测到的情况下改变。
14。
int (*s[10])(int) 表示的是什么啊?答案:int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。
15。
有以下表达式: int a=248; b=4;int const c=21;const int *d=&a; int *const e=&b;int const *f const =&a; 请问下列表达式哪些会被编译器禁止?为什么?答案:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f; *c 这是个什么东东,禁止 *d 说了是const, 禁止 e = &a 说了是const 禁止 const *f const =&a; 禁止16交换两个变量的值,不使用第三个变量。
即a=3,b=5,交换之后a=5,b=3; 答案:有两种解法, 一种用算术算法, 一种用^(异或) a = a + b; b = a - b; a = a - b; or a = a^b;// 只能对int,char.. b = a^b; a = a^b; or a ^= b ^= a;17.c和c++中的struct有什么不同?答案:c和c++中struct的主要区别是c中的struct 不可以含有成员函数,而c++中的struct可以。
c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private18.#include <stdio.h> #include <stdlib.h> void getmemory(char *p) { p=(char *) malloc(100); strcpy(p,"hello world"); } int main( ) { char*str=NULL; getmemory(str); printf("%s/n",str); free(str); return 0; } 答案:程序崩溃,getmemory中的malloc 不能返回动态内存, free()对str操作很危险19.char szstr[10]; strcpy(szstr,"0123456789"); 产生什么结果?为什么?答案: 长度不一样,会造成非法的OS20.列举几种进程的同步机制,并比较其优缺点。
答案: 原子操作 信号量机制 自旋锁 管程,会合,分布式系统21.进程之间通信的途径答案:共享存储系统消息传递系统管道:以文件系统为基础22.进程死锁的原因答案:资源竞争及进程推进顺序非法23.死锁的4个必要条件答案:互斥、请求保持、不可剥夺、环路24.死锁的处理答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁25. 操作系统中进程调度策略有哪几种?答案:FCFS(先来先服务),优先级,时间片轮转,多级反馈26.类的静态成员和非静态成员有何区别?答案:类的静态成员每个类只有一个,非静态成员每个对象一个27.纯虚函数如何定义?使用时应注意什么?答案:virtual void f()=0; 是接口,子类必须要实现28.数组和链表的区别答案:数组:数据顺序存储,固定大小连表:数据可以随机存储,大小可动态改变29.ISO的七层模型是什么?tcp/udp是属于哪一层?tcp/udp有何优缺点?答案:应用层表示层会话层运输层网络层物理链路层物理层 tcp /udp属于运输层 TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。
与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。
由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。
tcp: 提供稳定的传输服务,有流量控制,缺点是包头大,冗余性不好 udp: 不提供稳定的服务,包头小,开销小30:(void *)ptr 和 (*(void**))ptr的结果是否相同?其中ptr为同一个指针答案:.(void *)ptr 和 (*(void**))ptr值是相同的31:int main() { int x=3; printf("%d",x); return 1; } 问函数既然不会被其它函数调用,为什么要返回1?答案:mian中,c标准认为0表示成功,非0表示错误。