| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 嵌入式面试题 -> 正文阅读 |
|
[嵌入式]嵌入式面试题 |
1.嵌入式系统中经常要用到无限循环,如何用C编写死循环 2.程序的局部变量存在于哪里,全局变量存在于哪里,动态申请数据存在于哪里。 3.关键字const有什么含义? 4.请问以下代码有什么问题: 5.已知一个数组table,用一个宏定义,求出数据的元素个数 6.写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。
7.do……while和while有什么区别? 8.什么是预编译,何时需要预编译? 9.一个32位的机器,该机器的指针是多少位? 10.局部变量能否和全局变量重名? 11.引用与指针有什么区别?
12.关键字static的作用是什么?
13.static全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别? 14.进程之间通信的途径有哪些? 15.产生死锁的原因是什么? 16.死锁的4个必要条件 17.死锁的处理方式有哪些? 18.进程和线程有什么区别?
20.TCP与UDP有啥区别? Ⅱ、经典面试题 答案:#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 要点: A.没有以分号结束; B.懂得预处理器将为你计算常数表达式的值。即60 * 60 * 24 * 365而不是31536000. C.考虑到了16位机将会溢出,巧妙运用了UL。 2.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个? 答案:#define MIN(A,B) ((A) <= (B) ? (A) : (B)) 要点: A.参数用括号括起来; B.考察能否合理运用条件运算符; 3.Heap与Stack的差别? 答案:Heap是堆,Stack是栈。 Stack的空间由系统自动分配/释放,Heap上的空间手动分配/释放。 Stack空间有限,Heap是很大的自由存储区,malloc函数分配的内存空间即在堆上。 网上经典例子: int a = 0; //全局初始化区 char *p1;//全局未初始化区 void main(void) { int b; //栈 char s[] = “abc”; //栈 char *p2; //栈 char *p3 = “123456”; //123456\0在常量区,p3在栈上 static int c =0; //全局(静态)初始化区 p1 = (char *)malloc(10); //堆 p2 = (char *)malloc(20); //堆 } 4.用变量a给出下面的定义 A.一个整型数? 答案:int a; B.一个指向整型数的指针? 答案:int *a; C.一个指向指针的的指针,它指向的指针是指向一个整型数? 答案:int **a; D.一个有10个整型数的数组? 答案:int a[10]; E.一个有10个指针的数组,该指针是指向一个整型数的? 答案:int *a[10]; F.一个指向有10个整型数数组的指针? 答案:int (*a)[10]; G.一个指向函数的指针,该函数有一个整型参数并返回一个整型数? 答案:int (*a)(int); H.一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数? 答案:int (*a[10])(int); 5.关键字static的作用是什么? A.在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变; B.在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的局变量; C.在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用; 6.关键字const有什么含意? 答案:const意味着"只读"。 如果回答"const意味着常数",面试官会觉得你只是一个业余的人。 7.下面的声明都是什么意思? const int a; int const a; const int *a; int * const a; int const * a const; 答案: A.前两个的作用是一样,a是一个常整型数; B.第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以); C.第四个意思a是一个指向整型 数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的); D.最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数 是不可修改的,同时指针也是不可修改的)。 8.关键字volatile有什么含意? 答案:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。 9.sizeof和strlen的区别? 答案:sizeof是运算符,在编译时即计算好了; 而strlen是函数,要在运行时才能计算。 10.在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务? 答案: int *p; p = (int*)0x67a9; *p = 0xaa66; 11.给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变? 答案: #define BIT3 (0x1 << 3) static int a; void set_bit3(void) { } void clear_bit3(void) { } 12.下面函数错误吗? int square(volatile int *ptr) { return *ptr * *ptr; } 答案:错误; 正确写法: long square(volatile int *ptr) { int a; a = *ptr; return a * a; } arm 1.ARM内核有四个功能模块,即______、______、______、______,可供生产厂商根据不同用户的要求来配置生产ARM芯片。 答案:T、D、M、I 2.ARM7TDMI与ARM720T的一个重要区别在于后者有______、______。 答案:存储空间管理单元(MMU)和8K Cache片内缓存(提高CPU性能) 3.ARM芯片主要封装有______、______、______、______、______、______等形式。 答案:QFP、TQFP、PQFP、LQFP、BGA、LBGA 4.ARM微处理器共有______个______位寄存器,其中______个为通用寄存器,______个为状态寄存器。 答案:37、32、31、6 5.ARM体系结构可用两种方法存储字数据,具体为_____、______。 答案:大端格式和小端格式 6.协处理器主要控制:______、______、______。 答案:片内的MMU、指令和数据缓存(IDC)、写缓冲(Write Buffer) 问答题: 1.简单描述ARM内核的四个功能模块,各自具备什么功能特点? 答:ARM内核有四个功能模块T、D、M、I,可供生产厂商根据不同用户的要求来配置生产ARM芯片。 其中T功能模块表示16位Thumb,可以在兼顾性能的同时减少代码尺寸。 M功能模块表示8位乘法器。 D功能模块表示Debug,该内核中放置了用于调试的结构,通常它为一个边界扫描链JTAG,可使CPU进入调试模式,从而可方便地进行断点设置、单步调试。 I功能模块表示EmbeddedICE Logic,用于实现断点观测及变量观测的逻辑电路部分,其中的TAP控制器可接入到边界扫描链。 2.一个ARM720T内核,基本由哪四部分组成? 答:一个ARM720T内核基本由以下四部分组成。 (1)ARM7TDMI CPU核。该CPU核支持Thumb指令集、核调试、增强的乘法器、JTAG及嵌入式ICE。它的时钟速率可编程为18MHz、36MHz、49MHz、74MHz。 (2)内存管理单元(MMU)与ARM710核兼容,并增加了对Windows CE的支持。该内存管理单元提供了地址转换和一个有64个项的转换旁路缓冲器。 (3)8KB单一指令和数据高速缓冲存储器,以及一个四路相联高速缓冲存储器控制器。 (4)写缓冲器Write Buffer。 3.通用寄存器包括R0~R15,可以分为具体哪三类? 答:通用寄存器包括R0~R15,可以分为三类: (1)未分组寄存器R0~R7; (2)分组寄存器R8~R14; (3)程序计数器PC(R15)。 4.请描述Thumb状态下的寄存器与ARM状态下的寄存器有什么关系? 答:Thumb状态下的寄存器与ARM状态下的寄存器有如下关系: (1)Thumb状态下和ARM状态下的R0~R7是相同的。 (2)Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。 (3)Thumb状态下的SP对应于ARM状态下的R13。 (4)Thumb状态下的LR对应于ARM状态下的R14。 (5)Thumb状态下的程序计数器对应于ARM状态下的R15。 5.当一个异常出现以后,ARM微处理器会执行哪几步操作? 答:当一个异常出现以后,ARM微处理器会执行以下几步操作。 (1)将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从ARM状态进入,则LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。例如:在软件中断异常SWI,指令 MOV PC,R14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。 (2)将CPSR复制到相应的SPSR中。 (3)根据异常类型,强制设置CPSR的运行模式位。 (4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。 同步和异步通信通讯协议,usart,spi,tcp,udp,蓝牙,wifi,iic,arp |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/18 23:00:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |