搜索
查看: 734|回复: 0

[分享] 20个嵌入式工程师必学面试题(上)

[复制链接]

131

主题

256

帖子

1142

积分

金牌会员

Rank: 6Rank: 6

积分
1142
发表于 2024-2-6 14:27:04 | 显示全部楼层 |阅读模式
在嵌入式工程领域,面试过程中通常会遇到一系列核心和深入的问题,以评估应聘者的专业知识和技能。今天,我们将探讨20个嵌入式工程师面试中常见的问题,这些问题旨在探索应聘者的理论基础、实践经验以及解决问题的能力。通过这些问题,面试官能够更全面地了解应聘者的专业素养和适应岗位的能力。

在接下来的讨论中,我们将逐一分析这些问题,并提供一些建议和思考方向,以帮助应聘者更好地准备面试,展示自己的专业实力和潜力。无论您是即将参加面试的嵌入式工程师,还是对此领域感兴趣的人士,相信这些问题和讨论都会为您带来宝贵的启示和帮助。


01Q:嵌入式系统中经常要用到无限循环,如何用C编写死循环?


A:while(1){}或者for(;;)


02Q:程序的局部变量存在于哪里,全局变量存在于哪里,动态申请数据存在于哪里?


A:程序的局部变量存在于栈区;全局变量存在于静态区;动态申请数据存在于堆区。




03Q:关键字const有什么含义?


A:1)只读。2)使用关键字const也许能产生更紧凑的代码。3)使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。




04Q:请问以下代码有什么问题:
int  main() {
     char a;
     char *str=&a;
    strcpy(str,"hello");
    printf(str);
    return 0;
}


A:没有为str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。




05Q:已知一个数组table,用一个宏定义,求出数据的元素个数


A:# define NTBL (sizeof(table)/sizeof(table[0]))




06Q:写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。


A: #define MIN(A,B) ((A) <= (B) ? (A) : (B))


考点:


1) 标识#define在宏中应用的基本知识。这是很重要的。因为在  嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。


2) 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优的代码,了解这个用法是很重要的。


3) 懂得在宏中小心地把参数用括号括起来。


07Q: do……while和while有什么区别?

A:前一个循环一遍再判断,后一个判断以后再循环。




08Q:什么是预编译,何时需要预编译?


A:1、总是使用不经常改动的大型代码体。2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。


预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。



09Q: 一个32位的机器,该机器的指针是多少位?


A: 指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。




010Q:局部变量能否和全局变量重名?


A:能,局部会屏蔽全局。


局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。


对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

Archiver|手机版|小黑屋|RF技术社区

GMT+8, 2024-4-27 22:59 , Processed in 0.071324 second(s), 6 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表