今天我来分享一下一些嵌入式笔试题,这些是我在拓盛电子面试的时候做的,都是比较经典的,可以收集看看,看看自己会不会,为面试做准备。
1. 写出函数执行的结果:
void join(int x) //递归运算
{
x++;
if(x>=7)return;
join(x);
printf("%d",x); //注意别漏掉这个打印信息!
}
int mian()
{
int x = 3,y = 0;
join(x);
printf("OK\n");
while(--x)
{
for(y = 0;y<4;y++)
{
printf("x = %d,y = %d\n",x,y);
if(y>=1)break;
else continue;
}
}
printf("over!");
}
2. 分析电路 根据输入波形画出输出波形,并解释
3.
4. 写出嵌入式中经常使用的死循环有几种
5. volatile 的含义,写出3中使用方式
6. 给定一整型变量a写两段代码:第一个设置a的bit3,第二个清除a的bit3
#define BIT3 (0x1<<3)
static int a;
void set_bit3(void)
{
a |= BIT3;
}
void clear_bit3(void)
{
a &= ~BIT3;
}
7. 某工程中要设置一个绝对地址为0x67a9整形变量值为0xaa66,编译器是纯ANSI编译器。
8. 使用__interrupt定义一个ISR,评论代码有什么不妥
__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf(" Area = %f", area);
return area;
}
1). ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。
2). ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。
3). 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。
4). 与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。
不能传参数 不能有返回值 不能有打印语句 不应该使用浮点运算
9. 利用heap动态使用内存的过程,碎片如何形成?
10. 信号量最常用的两个功能
11. ulinux 和linux的区别
12. NorFlash和NandFlash 的基本区别
13. Linux移植ARM的基本步骤和完成的任务
14. Linux图形系统有哪些?
15. Linux驱动的基本结构
Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5,京公海网安备11010802025203号