嵌入式大厂面经 5(持续更新中!)

1. include <> 和 include "" 的区别

搜索路径不同

  • <>: 只在标准库目录搜索
  • "": 先在当前目录搜索,未找到再搜索标准库目录

使用场景

// 系统标准头文件
#include <stdio.h>
#include <stdlib.h>

// 自定义头文件
#include "myheader.h"
#include "config.h"


2. 全局变量和局部变量的区别

主要区别

  1. 作用域全局变量:整个程序局部变量:声明它的函数或代码块内
  2. 生命周期全局变量:程序运行期间一直存在局部变量:函数或代码块执行期间
  3. 存储位置全局变量:数据段局部变量:栈区

示例代码:

int globalVar = 10;  // 全局变量

void function1(void) {
    int localVar = 20;  // 局部变量
    printf("Local: %d, Global: %d\n", localVar, globalVar);
}

void function2(void) {
    int localVar = 30;  // 不同的局部变量
    globalVar = 40;     // 可以修改全局变量
    printf("Local: %d, Global: %d\n", localVar, globalVar);
}


3. #define 和 typedef 的区别

主要区别

  1. 处理时机#define:预处理阶段的文本替换typedef:编译阶段的类型定义
  2. 作用范围#define:可以定义常量、表达式、函数等typedef:只能定义类型别名
  3. 编译检查#define:简单的文本替换,不做类型检查typedef:会进行类型检查

示例代码:

// #define 示例
#define MAX_SIZE 100
#define SQUARE(x) ((x) * (x))
#define PTR_INT int*

// typedef 示例
typedef unsigned long ulong;
typedef struct Point {
    int x;
    int y;
} Point;
typedef int* IntPtr;

void testDefineTypedef(void) {
    // #define 使用
    int array[MAX_SIZE];
    int result = SQUARE(5);
    PTR_INT p1, p2;  // p1是指针,p2是int
    
    // typedef 使用
    ulong value = 1000UL;
    Point pt = {1, 2};
    IntPtr p3, p4;  // p3和p4都是指针
}


使用建议

  1. 对于常量定义,使用 #define
  2. 对于复杂类型定义,使用 typedef
  3. 对于函数指针等复杂声明,typedef 更清晰
  4. #define 用于条件编译和宏定义

这些概念在C语言中都非常基础和重要,正确理解和使用它们可以帮助我们写出更好的代码。

更多内容全在下方专栏

全网最受欢迎的嵌入式笔试专栏

笔试专栏包含全部最新的笔试必考考点,非常适合在找工作面经薄弱的同学

3000+订阅还会涨价,提前订阅提前享受,持续更新中。

专栏链接:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

#满分简历要如何准备?##嵌入式笔面经分享#
全部评论

相关推荐

牛客759499338号:这很逆天吗?只是看一下你的作品评估一下简历真实性和水平而已
点赞 评论 收藏
分享
&nbsp;先说提前实习,已经是两个月前的事情了。下面说的一些信息不能包含隐私信息,所有一些点就会比较正式和笼统和XX,大概分为,一.你学校学的跟嵌入式跟公司用的有什么不一样。&nbsp;&nbsp;二.生活上&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一、001,工具链上,很多公司都会让公司配置的发的那种电脑禁止联网,因为有一些工具比如说keil,pads,matlab对这种盈利的如果有非法的那种数据传输到网上会起诉的,这种就即使是社区版的就没有用了。一般就是本地断网,资料在一个服务器上,上网的在另一个服务器上,通过内网连接不同服务器。好多说其他软件,比如说加密软件公司也&nbsp;要买,所以想带资料出去,noway。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;002,你在学校里做的基本就是application应用层的(楼主只是本科生,只知道做过这些),比如说小车,机甲大师,飞控,智能家居。具体到公司就有可能会负责其他东西的了。这时候就会要根据行业,公司,岗位具体而分的了。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;说的有点空,我只拿我例子,比如说一个没用到过的芯片,他可能只有寄存器手册,但是公司跑的case是公司的老工程师写的,keil上可能没有任何注释或有一点关键的英文注释,这时候你就要返回参考手册查每个位怎么配寄存器,这个寄存器。这个时候就是说,你学stm32什么HAL&nbsp;&nbsp;LL&nbsp;&nbsp;标准库,区分的没有意义,他们只是库函数,了解一个然后触类旁通,深入还要寄存器编写。&nbsp;&nbsp;当然最重要的是C语言基础,看了下CORETX-M3权威指南,一页一页读,感到了有点不同。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还有些,con寄存器,离date寄存器资料中好远,资料又没写关联,默认你会,配了半天,串口打印的数据就没动过……真没办法,又要厚着脸皮问老工程师问出来的,有时候老工程师也很烦,所以我自己也经常总结,和找资料,看有没有过去的例子,做不出才问&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;002_V2,既上。上次我拿XX卡做相关功能,XX的physical和cmd文档以及流程文档真的是全英文又陌生词汇,你要知道一部分资料在内网,我还没办法用翻译,楼主英语过了四级,六级没过,啃得挺吃力的,还要一边看一边用logic查波形,看懂了一部分。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二、嵌入式研发部很累,要认清这个现实,我是在用命赚钱,(wlb和小康以上的请自动略过这段话)我的工时见图1。实习,一周加了四天到4.5天,有时候周六也要去,算做大小周吧。这个还没算早上早到的和中间休息晚上休息的时间。其实,压力是很大的,我肯定是认同自己能力的,因为我自己是面了这么多也挑了好几个的。但是解决bug和debug能力肯定比不上那些老工程师,这个我只能用时间堆,写日志,周报,总结和列表一些重要的问题问mentor。加班后,离的近的就晚上9点,远的就十点。远的早上还要早起,加班后真的就如一条死狗一样躺在床上&nbsp;……20250524记----------------------------------------分割线-----------------------------------------------------------------------更新:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;谈一些比较具体的事,比如说XX卡,他在2.0的时候,初始时CLK如果用PLL好像是20MHZ,然后在LOGIC采样,如果用100MHZ,采样率为20MBPS,那么采样时间为5秒,本来CLK应该是占空比0.5的矩形20M。我确定HOST&nbsp;与SLAVE的通信已开始,配置好电压数据和厂商信息,但是为什么CLK有的占空比为0.3和0.6呢,所以我先复位,再开始单步调试,调试进入WORK状态了,初始的时钟跟WORK的时钟不一样,暂时没测出。后面是想这真的是杂波吗?然后被MT指导,是采样率不够,要先开始1G采样数,拿20M采样率,采样50S,等DEBUG运行再先确认初始成功,再复位,重新运行到断点查看波形。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;谈总体上的事,假设是一个大的任务,你做的是一个很小项目的一部分,如果是一个很完善的产品或小产品,就有可能被丢给你完全自己解决。如果说这个任务被分配到这个部分的这个小组,LEADER会将工作分到10左右年工程师手上,再带5到10年和1到3年的,有时,他做的指标可能是市场部做的,也有可能是其他部门做的,你做好后指标对不对,需求搞没搞清楚又会跟其他部门对接,拿软件也好,发邮件也好,确实有时候信息就是沟通的不完全,需求不完全就是你上个指标完成了,突然他会让你加入新的指标,DDL在那突然加入新的指标,是真的做不了一点,我的建议起始就是再三确认需求假设有模糊的地方和工作留痕。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还应该记录并警告一下自己,真的就有时看了一上午和一下午代码,找问题,回去真的很累。可是你想要赚钱,公司不会原地等待你,技术没有进步就是会被替代,你要学习。此贴终结,可能试用期过后,假设过了还会有个帖子,没过就继续找工作去了。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务