日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

嵌入式软件常见笔试面试题总结 .

發布時間:2024/1/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式软件常见笔试面试题总结 . 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1。中斷與異常區別:

異常:在產生時必須考慮與處理器的時鐘同步,實際上異常也稱為同步中斷。在處理器執行到由于編程失誤而導致的錯誤指令時,或者在執行期間出現特殊情況(如缺頁),必須靠內核處理的時候,處理器就會產生一個異常。

所謂中斷就是外部硬件產生的一個電信號,從CPU的中斷引腳進入,打斷當前CPU的運行

所謂異常就是軟件運行中發生了一些必須作出處理的事件,CPU自動產生一個陷入來打斷當前運行,轉入異常處理流程。

?

2。進程與線程的區別:

a:調度:線程作為調度與分配的基本單位,進程作為擁有資源的基本單位

b:并發性:不僅進程之間可以并發執行,同一個進程的多個線程之間也可并發執行

c:擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬于進程的資源

d:系統開銷:在創建或撤銷進程時,由于系統都要為之分配和回收資源,導致系統的開銷明顯大于創建或撤銷線程時的開銷

?

3。volatile關鍵字有什么含義

volatile說明這個變量可能會被意想不到的改變,這樣在使用之前都要去內存里重新讀取它的值,并告訴編譯器不要隨意對變量做優化

用到場合:并行設備的硬件寄存器(如狀態寄存器),一個中斷服務子程序會訪問到的非自動變量,多線程應用中被幾個任務共享的變量

?

4。static作用

a:在函數體中,一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變

b:在模塊內(但在函數體外),一個被聲明為靜態變量的變量,可以被這個模塊內的所有函數使用,但不能被模塊外的函數使用,它是一個本地的全局變量,

c:在模塊內,一個被聲明為靜態的函數只可被這一模塊內的其它函數調用,那就是這個函數被限制在聲明它模塊的本地范圍內使用

后注問題:static全局變量與普通的全局變量有何不同?static局部變量和普通局部變量有何區別?static函數與普通函數有什么區別?

答:static全局變量只初始化一次,防止在其它文件單元中被引用;static局部變量只被初始化一次,下一次依據上一次結果值;static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝

?

5。關鍵字const是什么含義?

答案一:

a:它可以定義const常量

b:const可以修飾函數的參數,返回值,甚至是函數的定義體,被const修飾的東西都受到強制保護,可以預防意外的變動,能提高程序的健壯性。

答案二:

const意味著只讀

?

如:int const *p? 指向常整型的指針;

int *const p 指向整型的常指針

int *const *p 指向常整型的常指針? 或者等同于const int * const p

?

a:關鍵字const的作用是為給讀你代碼的人傳達非常有用的信息,實際上,聲明一個參數為常量是為了告訴用戶這個參數的應用目的。如果你曾花很多時間清理其它人留下的垃圾,你就會很快學會感謝這點多于的信息。(當然,懂得用const的程序員很少會留下的垃圾讓別人來清理的)

b:通過給優化器一些附加的信息,使用關鍵字const也許能產生更緊湊的代碼

c:合理地使用關鍵字const可以使編譯器很自然的保護那些不希望被改變的參數,防止其被無意的代碼修改。簡而言之,這樣可以減少bug的出現。

?

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:用C語言實現大小端的測試

void checkcpu()

{

union{

int a;

char b;

}c;

c.a=1;

if(c.b==1)

printf("xiaoduan");

else

printf("daduan");

}

?

8:引用與指針有什么區別?

a:引用必須初始化,指針不必

b:引用初始化不能改變,指針可以被改變

c:不存在指向空值的引用,但存在指向空值的指針

?

注:用const限定引用的目的是:用這種形式的引用不能通過引用對目標變量的值進行修改

形式為const 類型標識符 &引用名=目標變量名

eg:Example(const Example &x)

?

引用的主要目的:當參數傳遞的數據量較大時,用引用比用一般變量傳遞參數的效率和空間占有率較好

?

9:寫出float,int ,bool類型與零的比較,假設變量為x

float:if(x>0.000001&&x<-0.000001)

int :if(x==0)

bool: if(x==false)

?

10:OSI七層網絡協議,TCP/IP協議

OSI:物理層-數據鏈路層-網絡層-傳輸層-會話層-表示層-應用層

TCP/IP:網絡接口層-互連網絡層-傳輸層-應用層

?

11:對于一個頻繁使用的短小函數,在C語言與C++中分別用什么實現?

C中用宏定義,C++用inline

注:inline作用:當在程序中調用一個內聯函數時,是將該函數的代碼直接插入到調用點,然后執行該段代碼,所以在調用過程中不存在程序的跳轉與返回問題,而對于普通函數的調用,程序是從主調函數點轉去執行被調函數,待被調函數執行完畢后,再返回到主調函數的調用點的下一語句繼續執行。從調用機理看,內聯函數可以加快程序代碼的執行速度和效率,減少調用開銷。但這是以增加程序代碼為代價來求得速度的。

?

12:堆與棧的區別

Heap是堆,Stack是棧;

Stack的空間由操作系統自動分配/釋放,Heap上的空間是手動分配/釋放;

C中的malloc函數分配的內存空間在堆上,C++對應的是new操作符;

程序在編譯期間對變量和函數分配內存都在棧上進行,且程序運行過程中函數調用時參數的傳遞也在棧上進行;

?

13:用宏定義寫出swap(x,y);用define聲明一個常數,用以表明1年中有多少秒;寫出宏MIN,這個宏輸入兩個參數并返回較小的一個

#define swap(x,y)/

x=x+y;/

y=x-y;/

x=x-y;

?

#define SECOND_PER_YEAR (60*60*24*365)UL

?

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

總結

以上是生活随笔為你收集整理的嵌入式软件常见笔试面试题总结 .的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。