嵌入式工程师面试题汇总(应届、转行)

面试题汇总

一 . C基础

  1. gcc编译器编译的完整流程,分别有什么作用?

    答:预处理、编译、汇编、链接。预处理:头文件的展开/宏的替换/去掉注释/条件编译。编译:检查语法,生成汇编。汇编:汇编代码转换成机器码。链接:链接到一起生成可执行文件。

  2. 什么是回调函数?

    答: 回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码。

  3. 地址能否使用printf函数中的 %u形式打印?

    答:不能。

    无论是不是unsigned,内存中存储的char类型的值都是一样的,都是0xFF。

    printf("%u") 输出时,对char类型的变量会类型提升为int型。

    因为 char 是带符号数字类型,所以会进行符号拓展。a 从 0xFF 拓展为 0xFFFFFFFF (4294967295)。
    unsigned char 则会进行零拓展,b 从 0xFF 拓展为 0x000000FF (255)。

  4. 结构体与共用体的区别

    答:结构体 联合体,又称共用体。编程的时候需要使几种不同类型的变量存放到同一段内存单元中,而衍生出来的一种类型。也就是说,联合体中每次只能存其中的一个变量,这个变量在联合体变量中存入新的成员就失效了!!!用法与结构体一致,但是多用于结构体内部。

    注意:

    (1)在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。

    (2)对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的

  5. static、const、volatile关键字有什么作用?

    答:static:限定作用,延长生命周期。const:防止变量被修改。volatile:防止编译器过度优化,告诉编译器,每次取值都去内存中取。volatile主要用于中断函数子程序访问的非自动变量、多线程共享的全局变量、并行设备的寄存器。

  6. 声明变量和定义变量的区别

    答:

  7. 赋值与赋初值有什么不同?

  8. 局部变量和全局变量能否重命名

  9. 如何引用一个已经定义过的外部变量

  10. 全局变量和局部变量的存储方式有什么区别?

  11. const 与 # define 相比有何优点?

  12. 数组与指针的区别是什么?

  13. 为什么作为函数形参的数组和指针可以互换?

  14. 形参和实参有什么区别?

  15. 指针、数组和地址之间的关系是的什么?

  16. void指针就是空指针吗?他有什么作用?

  17. 与内存息息相关的重要概念有哪些?(野指针、栈(stack)、堆(heap)、静态区)

  18. #include<> 和 #include”” 有什么区别?

  19. x=x+1 , x+=1 , x++ 哪个效率高?

  20. 为无符号类型变量赋值时,数据类型应怎样转换?

  21. cpu执行程序的流程?

    答:开辟一段0-4g的内存空间,开辟一个进程,把代码加载到寄存器中…

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值