没有合适的资源?快使用搜索试试~ 我知道了~
总结的各种秋招题目,面向嵌入式,C/C++等,来源面经,往年笔试题目
资源推荐
资源详情
资源评论
1. ARM 指令和 Thumb 指令
在 ARM 的体系结构中,可以工作在三种不同的状态,一是 ARM 状态,二是 Thumb 状态及
Thumb-2 状态,三是调试状态。而 ARM 状态和 Thumb 状态可以直接通过某些指令直接切换,都
是在运行程序,只不过指令长度不一样而已。
2. 指针常量和常量指针 (高频)
1) const char * ptr; // 常量指针,指向的内容不能修改
2) char * const ptr; // 指针常量,指向的地址不能修改,但内容可以修改
3. C 语言数据类型的 size
4. 如何理解大端小端编码 (高频)
我们用的 linux 系统中内存数据表示用的是小端
比如 int i = 0x1234; 在内存中的表示为
34 12
低地址存储数据的低字节部分, 高地址存储数据的高字节部分
大端实际比较少见,低地址存储高字节部分,高地址存储低字节部分, 则在大端中的内存表示为:
12 34
5. 介绍一下嵌入式系统总线 (高频, 与 10, 15 重复)
6. C 语言编译过程中,volatile 关键字和 extern 关键字的作用?
volatile 关键字用于修饰变量,在多线程或并发编程中,它指示编译器不应对该变量进行某些优
化,以确保对变量的访问具有可见性和顺序性。
volatile 关键字告诉编译器,该变量的值可能会在意料之外的时间被修改,因此编译器不应该对该
变量的读取和写入进行优化或重排。这对于与外部设备的交互、中断处理等场景非常重要。
当使用 volatile 修饰的变量被读取或写入时,编译器会生成相应的读取和写入操作的汇编代码,而
不是从寄存器或缓存中获取或写入变量的值。
extern 关键字用于声明外部变量或函数,它告诉编译器该变量或函数的定义存在于其他文件中。当
使用 extern 关键字声明变量时,变量的实际定义可以在其他源文件中,这样可以在多个源文件中共
享同一变量的值。在链接过程中,编译器会在其他文件中查找该变量的定义。 当使用 extern 关键
字声明函数时,它表示函数的定义存在于其他源文件中,允许在当前源文件中调用该函数而不需
要提供函数的实际实现。
需要注意的是,volatile 和 extern 关键字在编译过程中的作用是不同的。volatile 关键字用于确保对
变量的访问具有可见性和顺序性,而 extern 关键字用于声明外部变量或函数的定义存在于其他文件
中,以便在多个源文件中共享变量或调用函数。
7.简述任务/线程之间的同步方式
1. 临界区(Critical section):通过对多线程的串行化来访问公共资源或一段代码,速度快,
适合控制数据访问。在任何时候只允许一个线程访问共享资源,如果有多个线程访问,那
么当有一个线程进入后,其他试图访问共享资源的线程将会被挂起,并且等到进入临界区
的线程离开,临界在被释放后,其他线程才可以抢占。
2. 互斥量(Mutex):为协调对一个共享资源的单独访问而设计。互斥量只有一个,只有拥
有互斥量的线程,才有权限去访问系统的公共资源,保证资源不会被多个线程访问。互斥
不仅能实现同一个应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全
共享。 比如 Java 中的 synchronized 关键词和各种 Lock 都是这种机制。
3. 信号量(Semphore):为控制一个具有有限数量的用户资源而设计。它允许多个线程在同
一时刻去访问同一个资源,但一般需要限制同一时刻访问此资源的最大线程数目。
4. 事件(Event):用来通知线程有一些事件已发生,从而启动后继任务的开始。
8.哈佛结构和冯诺依曼结构的区别
区别:1)存储器结构:哈佛结构采用独立的指令存储器和数据存储器,而冯诺依曼结构使用统一的
存储器空间,将指令和数据存储在同一存储器中。
2)总线设计:哈佛结构中的指令和数据使用不同的总线进行读取和写入操作,而冯诺依曼结构中的
指令和数据通过共享总线进行传输。
并行性:哈佛结构可以并行地从指令存储器和数据存储器中取出指令和数据,从而提高指令获取
和数据传输效率,而冯诺依曼结构需要按序从同一存储器中获取指令和数据。 3)硬件实现:由于
哈佛结构需要独立的指令存储器和数据存储器,实现上可能需要更多的硬件资源,而冯诺依曼结
构相对较简单。
联系:1) 数据处理:无论是哈佛结构还是冯诺依曼结构,都可以进行指令的执行和数据的处理,
实现计算功能。2) 指令执行:两种结构都需要将指令从存储器中取出并送入处理器执行。3) 存储
器:无论是哈佛结构还是冯诺依曼结构,都需要存储指令和数据,以便进行读取和写入操作。 4)
计算机体系结构:哈佛结构和冯诺依曼结构都是计算机体系结构的设计范式,用于指导计算机系
统的组织和功能划分。
总结:哈佛结构和冯诺依曼结构在存储器结构、总线设计、并行性和硬件实现等方面存在明显的
区别。然而,它们都是用于实现计算功能的计算机体系结构,都需要进行指令的执行和数据的处
理。
剩余11页未读,继续阅读
资源评论
Boofish
- 粉丝: 8
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功