嵌入式笔试题

1.关键字 volatile 有什么含义?给出三个不 同的例子

关键字 volatile 是防止变量被编译器优化。 被 volatile 修饰的变量,编译器不会去假设 该变量的值,当优化器每次用到该变量的值时, 都会去变量的原始地址去读取这个变量的值, 而不是使用保存在寄存器中的备份值。

例子:(1)并行设备的硬件寄存器。 (2)一个中断服务子程序中的非自动 变量。 (3)多线程应用中被几个线程任务共 享的变量。

2.一个参数既可以是const还可以是volatile 吗?解释为什么?

可以。一个例子是只读的状态寄存器。它 是 volatile 因为它可能被意想不到地改变。 它是 const 因为程序不应该试图去修改它。

3.一个指针可以是 volatile 吗?解释为什 么?

可以。尽管这并不常见。一个例子是当一 个中断服务子程序修改一个指向 buffer 的指针时。

4.static 全局变量与普通的全局变量有什么 区别?static 局部变量和普通局部变量有什 么区别?static 函数与普通函数有什么区 别?

static 全局变量与普通的全局变量有什么 区别:

static 修饰的全局变量只初使化一次, 且不能在其他文件单元中被引用;

static 局部变量和普通局部变量有什么区 别:

static 修饰的局部变量生命周期从程序开 始到程序结束,且只被初始化一次,下一次依 据上一次结果值;

static 函数与普通函数有什么区别:

static 函数在内存中只有一份,普通函数在每 个被调用中维持一份拷贝。

5.找出下面一段 ISR 的问题。

_interrupt double cpmpute_area(double radius)

{

Double area = PI * radius * radius;

Printf(“\nArea = %f”,area);

Return area;

}

答:(1)ISR 不能有参数。

        (2)ISR 不能有返回值。

        (3)ISR 应该短且有效率,在 ISR 中做浮点 运算不明智。

6.typedef 与#define 的区别。

#define 在预编译的时候做简单的字符替换处 理。

typedef 是在编译的时候进行的处理,并不是 做简单的字符替换,而是同定义一个变量一样 声明一个数据类型,然后用它去定义这种数据 类型的变量。

7.Union 与 struct 的区别。(故而常用 struct)

1.在存储多个成员信息时,编译器会自动给 struct 每个成员分配存储空间,struct 可以 存储多个成员信息,而 Union 每个成员会用同 一个存储空间,只能存储最后一个成员的信息。

2.都是由多个不同的数据类型成员组成,但在 任何同一时刻,Union 只存放了一个被先选中 的成员,而结构体的所有成员都存在。

3.对于 Union 的不同成员赋值,将会对其他成 员重写,原来成员的值就不存在了,而对于 struct 的不同成员赋值 是互不影响的。

8.引用和指针有什么区别?

1、引用必须初始化,指针不必;

2、引用初始化后不能改变,指针可以被改变;

3、不存在指向空值的引用,但存在指向空值 的指针;

9.请说出 const 与#define 相比,有何优点? (故而常用 const)

1、const 定义的是只读变量,#define 为 宏替换

2、const 不会改变变量的存储位置, #define 定义的宏存储在代码段

3、const 常量有数据类型,而宏常量没 有数据类型。

4、编译器可以对前者进行类型安全检查。 而对后者只进行字符替换,没有类型安全检查, 并且在字符替换可能会产生意料不到的错误。

10.TCP 与 UDP 的区别?

(1)TCP 是面向连接的协议,UDP 是面向无 连接的协议。

(2)TCP 对系统资源要求较多,UDP 对系统 资源要求较少。

(3)TCP 是数据流模式,UDP 是数据报模式。

(4)TCP 保证数据顺序及数据的正确性,UDP 可能会丢包。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVTE是一家具有领先技术的嵌入式解决方案提供商。在CVTE的嵌入式笔试题中,通常会涉及一些基础的嵌入式知识和技能。 首先,嵌入式系统是指集成了微处理器芯片和专用硬件的系统,这些芯片和硬件用于执行特定的功能。嵌入式系统通常用于控制和监测其他设备或系统。 在CVTE的嵌入式笔试题中,可能会涉及以下问题: 1. 嵌入式系统的特点:需要了解嵌入式系统的特点,例如实时性、稳定性、功耗低、尺寸小等。 2. 嵌入式开发工具和环境:了解嵌入式开发工具和环境,例如编译器、调试器、仿真器等。 3. 嵌入式操作系统:熟悉一些常用的嵌入式操作系统,例如Linux、RTOS(Real-Time Operating System)等。 4. 单片机和微处理器的区别:了解单片机和微处理器的区别,例如单片机通常集成了内存、IO口、定时器等外围设备。 5. 嵌入式软件开发:了解嵌入式软件开发的流程和方法,例如需求分析、软件设计、调试等。 6. 嵌入式硬件设计:了解一些基本的嵌入式硬件设计知识,例如电路设计、PCB设计、信号处理等。 7. 嵌入式通信协议:了解一些常用的嵌入式通信协议,例如UART、SPI、I2C、CAN等。 总之,CVTE的嵌入式笔试题目旨在考察应聘者对嵌入式系统的基本理解和掌握程度。准备笔试时,需要针对上述问题对相关知识进行学习和复习,以便能够准确回答和解决嵌入式开发相关的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值