嵌入式笔试刷题(第13天)

1. 表达式 (^A)||(^B) 等效表达式

逻辑表达式中,^ 是按位异或。假设 ^A 表示“非A”是错误的,正确语法是逻辑非 !A,但此题应理解为异或。

表达式 (^A)||(^B) 不太符合常规写法,合理理解为:

若表达式是 !A || !B,等价于 !(A && B)(德摩根定律)

✅ 所以答案应是:A. ^(A && B)

2. 宏展开与副作用

#define MAX(a,b) ((a)>(b)? (a) : (b))

int x=5, y=8, z=10;
z = MAX(x++, y++);

宏展开:

z = ((x++) > (y++) ? (x++) : (y++));

  • 如果 x=5, y=8,则 x++ = 5, y++ = 8 → 5 > 8 → false → 执行 y++,y=9, z=8
  • 实际上两次 y++ 被执行,y=10

最终:x=6, y=10, z=10

✅ 正确答案:D. x=6, y=10, z=10

3. 数组越界访问

int a[5], i;
for(i=1; i<=5; i++) {
    a[i] = 0;
}

数组下标范围应是 0~4,这里 a[5] 越界但循环执行了 5次,即 i=1i=5

✅ 正确答案:A. 6(包括数组下标非法的1次)

4. 带位字段的结构体大小

struct MStar {
    char STB:1;
    cha

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式笔试专栏 文章被收录于专栏

本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。

全部评论
点赞 回复 分享
发布于 04-25 21:41 山西
😄😄😄😄
点赞 回复 分享
发布于 04-25 16:24 上海
接好运
点赞 回复 分享
发布于 04-15 15:10 黑龙江

相关推荐

如果你不知道如何准备面试内容,那你一定要先经历一次面试。说实话,我第一次拿到面试机会是在23年底,那是我在BOSS上找的实习,我一开始也不清楚如何准备,我只得去反复从招聘内容里面复习相关的内容,但最终还是复习的不到位,没有了解到相关内容而没通过面试。也是从这次开始,我从处女面的内容中知道了我所缺乏的知识,也因此我可以针对性的再去补偿相关方面的内容。因此,对于不知道如何准备面试的同学,我建议三点:第一:一定要去经历一轮面试,不管是什么内容的面试,这可以让你实打实的了解到面试的内容以及流程,在经历这第一轮处女面之后,你就从面试中自己的缺点出发,不断的补充短板,从而达到一个近似均衡的六边形战士!第二:可以提前去牛客、某乎或者小某书上了解是否有相关的面试经验帖子,这一般是有最大帮助的,对于大厂的面经一般都不会少;如果你是小厂的面试,在找不到相关面经的前提下,你可以去公司官网了解一下公司的信息,包括但不限于公司的产品、理念以及在行业中的发展情况。了解公司的产品可以猜测到一些可能会问到的问题:比如:xx公司是做xx整机设备的,那么就极有可能问到相关材料特性、零部件选型以及对于这方面的前景的看法等相关的问题;理念和发展情况一般在人事面中可能会遇到,可以简单留个印象,避免hr问你是否了解过我们公司这种问题而回答不上来。第三:如果有相关竞赛项目或者社团活动,一定要吃熟相关的环节。比如在项目中,你的机器是如何设计的,为什么这样设计?你的材料是如何选择的,你为什么要选择这个材料?为什么不选择xx材料?这都是常见问题,所以自己一定要心里提前有一套说辞。社团活动也一样,我经历的问的最多的就是:你在xx活动/项目中遇到的困难是什么,怎么解决的?对于这个问题的话我认为大家不必去考虑太复杂的回答,只要简单假设出一个突发事件,然后按部就班的解决即可,没有固定答案的,只要能回答上来即可。我对于面试前的准备一般就这三点,最终要的还是第二点,面对不同的企业需要不断的去重新了解不同企业的产品及理念,至于第三点则基本可以通用,回答过一次基本就没什么问题了。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务