今天我來分享一下一些嵌入式筆試題,這些是我在拓盛電子面試的時候做的,都是比較經典的,可以收集看看,看看自己會不會,為面試做準備。
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驅動的基本結構