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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/1/23 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式软件常见笔试面试题总结 . 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1。中斷與異常區(qū)別:

異常:在產(chǎn)生時(shí)必須考慮與處理器的時(shí)鐘同步,實(shí)際上異常也稱為同步中斷。在處理器執(zhí)行到由于編程失誤而導(dǎo)致的錯(cuò)誤指令時(shí),或者在執(zhí)行期間出現(xiàn)特殊情況(如缺頁(yè)),必須靠?jī)?nèi)核處理的時(shí)候,處理器就會(huì)產(chǎn)生一個(gè)異常。

所謂中斷就是外部硬件產(chǎn)生的一個(gè)電信號(hào),從CPU的中斷引腳進(jìn)入,打斷當(dāng)前CPU的運(yùn)行

所謂異常就是軟件運(yùn)行中發(fā)生了一些必須作出處理的事件,CPU自動(dòng)產(chǎn)生一個(gè)陷入來(lái)打斷當(dāng)前運(yùn)行,轉(zhuǎn)入異常處理流程。

?

2。進(jìn)程與線程的區(qū)別:

a:調(diào)度:線程作為調(diào)度與分配的基本單位,進(jìn)程作為擁有資源的基本單位

b:并發(fā)性:不僅進(jìn)程之間可以并發(fā)執(zhí)行,同一個(gè)進(jìn)程的多個(gè)線程之間也可并發(fā)執(zhí)行

c:擁有資源:進(jìn)程是擁有資源的一個(gè)獨(dú)立單位,線程不擁有系統(tǒng)資源,但可以訪問(wèn)隸屬于進(jìn)程的資源

d:系統(tǒng)開(kāi)銷:在創(chuàng)建或撤銷進(jìn)程時(shí),由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的開(kāi)銷明顯大于創(chuàng)建或撤銷線程時(shí)的開(kāi)銷

?

3。volatile關(guān)鍵字有什么含義

volatile說(shuō)明這個(gè)變量可能會(huì)被意想不到的改變,這樣在使用之前都要去內(nèi)存里重新讀取它的值,并告訴編譯器不要隨意對(duì)變量做優(yōu)化

用到場(chǎng)合:并行設(shè)備的硬件寄存器(如狀態(tài)寄存器),一個(gè)中斷服務(wù)子程序會(huì)訪問(wèn)到的非自動(dòng)變量,多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量

?

4。static作用

a:在函數(shù)體中,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過(guò)程中維持其值不變

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

c:在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,那就是這個(gè)函數(shù)被限制在聲明它模塊的本地范圍內(nèi)使用

后注問(wèn)題:static全局變量與普通的全局變量有何不同?static局部變量和普通局部變量有何區(qū)別?static函數(shù)與普通函數(shù)有什么區(qū)別?

答:static全局變量只初始化一次,防止在其它文件單元中被引用;static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝

?

5。關(guān)鍵字const是什么含義?

答案一:

a:它可以定義const常量

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

答案二:

const意味著只讀

?

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

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

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

?

a:關(guān)鍵字const的作用是為給讀你代碼的人傳達(dá)非常有用的信息,實(shí)際上,聲明一個(gè)參數(shù)為常量是為了告訴用戶這個(gè)參數(shù)的應(yīng)用目的。如果你曾花很多時(shí)間清理其它人留下的垃圾,你就會(huì)很快學(xué)會(huì)感謝這點(diǎn)多于的信息。(當(dāng)然,懂得用const的程序員很少會(huì)留下的垃圾讓別人來(lái)清理的)

b:通過(guò)給優(yōu)化器一些附加的信息,使用關(guān)鍵字const也許能產(chǎn)生更緊湊的代碼

c:合理地使用關(guān)鍵字const可以使編譯器很自然的保護(hù)那些不希望被改變的參數(shù),防止其被無(wú)意的代碼修改。簡(jiǎn)而言之,這樣可以減少bug的出現(xiàn)。

?

6:對(duì)變量或寄存器進(jìn)行位操作,給定一個(gè)整型變量a,寫兩段代碼,第一個(gè)設(shè)置a的bit3,第二個(gè)清除a的bit3。在以上兩個(gè)操作中,要保持其他位不變。

代碼如下:

#define BIT3 (0x1<<3)

static int a;

void set_bit3(void)

{

a|=BIT3;

}

void clear_bit3(void)

{

a&=~BIT3;

}

?

7:用C語(yǔ)言實(shí)現(xiàn)大小端的測(cè)試

void checkcpu()

{

union{

int a;

char b;

}c;

c.a=1;

if(c.b==1)

printf("xiaoduan");

else

printf("daduan");

}

?

8:引用與指針有什么區(qū)別?

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

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

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

?

注:用const限定引用的目的是:用這種形式的引用不能通過(guò)引用對(duì)目標(biāo)變量的值進(jìn)行修改

形式為const 類型標(biāo)識(shí)符 &引用名=目標(biāo)變量名

eg:Example(const Example &x)

?

引用的主要目的:當(dāng)參數(shù)傳遞的數(shù)據(jù)量較大時(shí),用引用比用一般變量傳遞參數(shù)的效率和空間占有率較好

?

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

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

int :if(x==0)

bool: if(x==false)

?

10:OSI七層網(wǎng)絡(luò)協(xié)議,TCP/IP協(xié)議

OSI:物理層-數(shù)據(jù)鏈路層-網(wǎng)絡(luò)層-傳輸層-會(huì)話層-表示層-應(yīng)用層

TCP/IP:網(wǎng)絡(luò)接口層-互連網(wǎng)絡(luò)層-傳輸層-應(yīng)用層

?

11:對(duì)于一個(gè)頻繁使用的短小函數(shù),在C語(yǔ)言與C++中分別用什么實(shí)現(xiàn)?

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

注:inline作用:當(dāng)在程序中調(diào)用一個(gè)內(nèi)聯(lián)函數(shù)時(shí),是將該函數(shù)的代碼直接插入到調(diào)用點(diǎn),然后執(zhí)行該段代碼,所以在調(diào)用過(guò)程中不存在程序的跳轉(zhuǎn)與返回問(wèn)題,而對(duì)于普通函數(shù)的調(diào)用,程序是從主調(diào)函數(shù)點(diǎn)轉(zhuǎn)去執(zhí)行被調(diào)函數(shù),待被調(diào)函數(shù)執(zhí)行完畢后,再返回到主調(diào)函數(shù)的調(diào)用點(diǎn)的下一語(yǔ)句繼續(xù)執(zhí)行。從調(diào)用機(jī)理看,內(nèi)聯(lián)函數(shù)可以加快程序代碼的執(zhí)行速度和效率,減少調(diào)用開(kāi)銷。但這是以增加程序代碼為代價(jià)來(lái)求得速度的。

?

12:堆與棧的區(qū)別

Heap是堆,Stack是棧;

Stack的空間由操作系統(tǒng)自動(dòng)分配/釋放,Heap上的空間是手動(dòng)分配/釋放;

C中的malloc函數(shù)分配的內(nèi)存空間在堆上,C++對(duì)應(yīng)的是new操作符;

程序在編譯期間對(duì)變量和函數(shù)分配內(nèi)存都在棧上進(jìn)行,且程序運(yùn)行過(guò)程中函數(shù)調(diào)用時(shí)參數(shù)的傳遞也在棧上進(jìn)行;

?

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

#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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。