久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 入門指導 > 嵌(qian)入式題庫最全的,去公司(si)面試都(dou)會(hui)出(chu)現(xian)

嵌入式題庫(ku)最全(quan)的(de),去公司面(mian)試都(dou)會出現 時間:2018-07-16      來(lai)源:未知

現在(zai)嵌(qian)入(ru)(ru)式發展這(zhe)么快,很(hen)多(duo)人開始踏上嵌(qian)入(ru)(ru)式學習之路(lu),據(ju)市場統計,一般畢(bi)業或者找工(gong)(gong)作的(de)(de)(de)一些人,在(zai)面(mian)(mian)試(shi)公(gong)司的(de)(de)(de)時候,都(dou)會在(zai)這(zhe)個地(di)方卡殼,那就是(shi)(shi)面(mian)(mian)試(shi)題,很(hen)多(duo)人都(dou)是(shi)(shi)面(mian)(mian)試(shi)的(de)(de)(de)很(hen)好,但是(shi)(shi)在(zai)做面(mian)(mian)試(shi)題的(de)(de)(de)時候,手下的(de)(de)(de)功夫不夠深,最(zui)后被面(mian)(mian)試(shi)題而刷(shua)了(le)下來,使得找工(gong)(gong)作變(bian)成了(le)難題,空(kong)有(you)一身的(de)(de)(de)才華了(le),而且這(zhe)也是(shi)(shi)對一些嵌(qian)入(ru)(ru)式面(mian)(mian)試(shi)的(de)(de)(de)一些空(kong)難戶(hu)而總結,可(ke)以學學哦,去(qu)公(gong)司面(mian)(mian)試(shi)一般都(dou)是(shi)(shi)會有(you)的(de)(de)(de)。

(1)char * constp char const * p const char *p 上述(shu)三(san)個有什么區(qu)別?

答案:

char * const p; //常量指針,p的值(zhi)不可以修(xiu)改

char const * p;//指(zhi)向常量(liang)的(de)指(zhi)針,指(zhi)向的(de)常量(liang)值不可以改 const char *p; //和char const *p

char * const p是(shi)一個(ge)char型指針(zhen)(zhen),指針(zhen)(zhen)是(shi)常量,不允(yun)許修(xiu)改(gai),即類似p=q的(de)語句是(shi)錯(cuo)誤的(de);

char const * p和const char * p是(shi)同(tong)一種char型(xing)指(zhi)針,指(zhi)針指(zhi)向的(de)字符被看作(zuo)是(shi)常量,不允許(xu)修(xiu)改(gai),即類似*p = q的(de)語句(ju)是(shi)錯誤的(de)。

(2)char str1[] = "abc"; charstr2[] = "abc"; const char str3[] = "abc"; const charstr4[] = "abc"; const char *str5 = "abc"; const char *str6= "abc"; char *str7 = "abc"; char *str8 = "abc";cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 )< < endl; cout < < ( str5 == str6 ) < < endl; cout < <( str7 == str8 ) < < endl;

結果是(shi)(shi):0 0 1 1str1,str2,str3,str4是(shi)(shi)數組變量(liang),它們有各自的內(nei)存空間;而(er)str5,str6,str7,str8是(shi)(shi)指針(zhen),它們指向相同的常量(liang)區域。

(3)什(shen)么是(shi)預編譯(yi),何時需要預編譯(yi):

答案:

1、總是使用不經(jing)常改動的大(da)型代碼體。

2、程序由多個(ge)模(mo)塊組(zu)成(cheng),所有模(mo)塊都使用一組(zu)標(biao)準的(de)包(bao)含文(wen)件(jian)和(he)相同的(de)編(bian)譯(yi)選項(xiang)。在(zai)這種情況下,可(ke)以(yi)將所有包(bao)含文(wen)件(jian)預(yu)編(bian)譯(yi)為(wei)一個(ge)預(yu)編(bian)譯(yi)頭。

預編(bian)譯指令指示(shi)了(le)在程序(xu)正(zheng)式編(bian)譯前就由編(bian)譯器進行的(de)操作(zuo),可以放在程序(xu)中的(de)任何(he)位置。

(4)以(yi)下代碼(ma)中的兩個sizeof用法(fa)有問題嗎?

[C易] void UpperCase( char str[] ) // 將 str 中的小寫字母轉換成大寫字母{ for( size_t i=0; i

(5)嵌入式(shi)系統中經(jing)常要用到無(wu)限循環,你(ni)怎么樣用C編寫(xie)死循環呢(ni)?

這個(ge)問題用幾個(ge)解決(jue)方案(an)。我首選的方案(an)是:

while(1)

{

}

一些(xie)程(cheng)序員更喜歡如(ru)下方案(an):

for(;;)

{

}

這個實現方(fang)式讓我為(wei)難(nan),因為(wei)這個語法沒有確切表達到(dao)底怎么回事。如果(guo)一個應試者給出

這個作為方案,我(wo)將用這個作為一個機(ji)會(hui)去探究他們這樣做的

基本(ben)(ben)原理(li)。如果他們的基本(ben)(ben)答案(an)是:“我被(bei)教著這樣做,但(dan)從沒有想到過為什么。”這會

給我留下一個壞印象。

第三(san)個方案是用 goto

Loop:

...

goto Loop;

應(ying)試(shi)者(zhe)如給出(chu)上面(mian)的方案,這說明(ming)或者(zhe)他(ta)(ta)是一(yi)個匯編語言程(cheng)序員(這也許是好(hao)事(shi))或者(zhe)他(ta)(ta)

是一個想(xiang)進入(ru)新(xin)領域的(de)BASIC/FORTRAN程(cheng)序員。

Const

(6)關鍵(jian)字(zi)const是(shi)什么含(han)意?

我(wo)只(zhi)要一(yi)聽到被面(mian)試(shi)者說:“const意(yi)味著常數”,我(wo)就知(zhi)道我(wo)正在和(he)一(yi)個業余者打(da)交道。

去年Dan Saks已經在(zai)他的文章里完全概括(kuo)了(le)const的所有用法(fa),因此ESP(譯者:Embedded

Systems Programming)的每一位讀者應該(gai)非常熟悉const能做(zuo)什(shen)么和不能做(zuo)什(shen)么.如果(guo)你從

沒有讀到(dao)那篇文章,只要能說出const意味(wei)著(zhu)&ldquo;只讀”就可以(yi)了。盡(jin)管這個答案不是完全的

答(da)案,但我接受它作為一個正確的答(da)案。(如果你想知道更詳細(xi)的答(da)案,仔(zi)細(xi)讀(du)一下Saks

的文章吧。)如果應(ying)試(shi)者(zhe)能(neng)正確回(hui)答(da)這個問題,我(wo)將問他(ta)一個附加的問題:下面的聲明都

是什么意思?

const int a;

int const a;

const int *a;

int * const a;

int const * a const;

前兩個(ge)的(de)作用是一樣(yang),a是一個(ge)常整型(xing)數(shu)。第(di)三個(ge)意味(wei)著(zhu)a是一個(ge)指(zhi)向(xiang)常整型(xing)數(shu)的(de)指(zhi)針(也

就是(shi),整型(xing)數(shu)是(shi)不可修改的,但指(zhi)(zhi)針可以)。第四個意(yi)思a是(shi)一個指(zhi)(zhi)向(xiang)整型(xing)數(shu)的常指(zhi)(zhi)針(也

就是說,指(zhi)針指(zhi)向的整型(xing)數是可以修改的,但指(zhi)針是不可修改的)。最后一個意味著(zhu)a是一

個指向常整型數(shu)的常指針(也就是說(shuo),指針指向的整型數(shu)是不可修改的,同時指針也是不

 可修改的)。如果應試(shi)者能正確回答這些問(wen)題,那么他就(jiu)給(gei)我留下了一個好(hao)印象。順帶提

一句,也(ye)許(xu)你可能會問,即使不用關鍵字const,也(ye)還(huan)是能很(hen)容易寫(xie)出功(gong)能正(zheng)確的程序(xu),那

么我為(wei)什么還要(yao)如此看重關鍵(jian)字const呢?我也(ye)如下的幾下理(li)由:

1). 關(guan)鍵字const的(de)作用是為給讀你代碼的(de)人傳達(da)非常有用的(de)信息,實(shi)際上,聲明(ming)一個參(can)數

為常量是為了告訴了用戶這個(ge)參數的應用目(mu)的。如果你曾花很(hen)多時間清理其(qi)它人留下的垃(la)

圾,你(ni)就(jiu)會(hui)(hui)很快學會(hui)(hui)感謝這點多余的(de)(de)信息。(當然(ran),懂得用(yong)const的(de)(de)程序(xu)員很少會(hui)(hui)留下的(de)(de)垃

圾讓(rang)別人來清(qing)理的。)

2). 通過給優化(hua)器一些附加的信(xin)息(xi),使用關(guan)鍵字const也許能產生更緊湊的代碼。

3). 合理地(di)使用關(guan)鍵字const可(ke)以使編(bian)譯器(qi)很(hen)自然地(di)保護那(nei)些不希望被改變(bian)的參數(shu),防止其

被無意的(de)代(dai)碼修改(gai)。簡而(er)言之,這樣可(ke)以減少bug的(de)出(chu)現。

Volatile

(7)關(guan)鍵字volatile有(you)什么含意 并給出(chu)三個不同的例子。

 一(yi)個(ge)定(ding)義為(wei)volatile的變量(liang)是說(shuo)這變量(liang)可能會被意想不到地改變,這樣,編譯(yi)器就不會去

假設這(zhe)個變量的值了。精確(que)地說就是(shi),優化器在用(yong)到這(zhe)個變量時必(bi)須(xu)每(mei)次都小心地重新讀

取這(zhe)個變量的(de)值,而不是(shi)(shi)使用保存(cun)(cun)在寄(ji)存(cun)(cun)器里的(de)備份。下面是(shi)(shi)volatile變量的(de)幾個例子:

1). 并行設(she)備的硬件寄(ji)存器(qi)(如:狀態寄(ji)存器(qi))

2). 一個中(zhong)斷服務子(zi)程(cheng)序中(zhong)會(hui)訪問到的非自動變(bian)量(liang)(Non-automatic variables)

3). 多線(xian)程(cheng)應(ying)用中被(bei)幾個任(ren)務共享的變量

回答(da)不出這個問題的人是不會被雇傭的。我認為這是區分C程序員和(he)嵌入式系統(tong)程序員的最

基本的問題。嵌入式(shi)系統程序員(yuan)經常(chang)同硬件、中斷(duan)、RTOS等等打交道,所用這些都要(yao)求vo

latile變量。不懂得(de)volatile內容將(jiang)會帶來(lai)災(zai)難。

假設被(bei)面試者正確地(di)回答了(le)這是問(wen)題(嗯(ng),懷疑這否會是這樣),我(wo)將稍微深(shen)究一下,看

一下這家伙是(shi)不是(shi)直正懂得volatile完全(quan)的重要(yao)性。

1). 一個參(can)數既可以(yi)是(shi)const還可以(yi)是(shi)volatile嗎(ma)?解釋為(wei)什么。

2). 一(yi)個指針可(ke)以是volatile 嗎(ma)?解釋為(wei)什么(me)。

3). 下(xia)面的函(han)數(shu)有什么錯誤:

int square(volatile int *ptr)

{

return *ptr * *ptr;

}

下面是答(da)案(an):

1). 是的(de)。一個例子(zi)是只讀的(de)狀態寄存器。它是volatile因(yin)為它可能被意想不到地改(gai)變。

它(ta)是const因為(wei)程序不(bu)應(ying)該試圖去修改它(ta)。

2). 是的。盡管這并(bing)不很常見。一(yi)個例子是當一(yi)個中服務子程(cheng)序修該一(yi)個指向一(yi)個buffer

的指針時。

3). 這(zhe)段(duan)代(dai)(dai)碼(ma)(ma)的(de)有個惡(e)作(zuo)劇。這(zhe)段(duan)代(dai)(dai)碼(ma)(ma)的(de)目的(de)是用來返指針*ptr指向值的(de)平方,但是,由

于*ptr指向一個(ge)volatile型(xing)參(can)數,編(bian)譯器將(jiang)產(chan)生(sheng)類似下面的代碼:

int square(volatile int *ptr)

{

int a,b;

a = *ptr;

b = *ptr;

return a * b;

}

由于*ptr的值可能被(bei)意想不(bu)(bu)到地(di)該變,因此a和b可能是不(bu)(bu)同的。結果,這段(duan)代碼可能返(fan)不(bu)(bu)

是你所(suo)期(qi)望的(de)平方值!正確的(de)代碼如下(xia):

long square(volatile int *ptr)

{

int a;

a = *ptr;

return a * a;

}

位操作(Bit manipulation)

(8)嵌入式系統總是要(yao)用(yong)戶對變量或寄存器進行位操作(zuo)。給定一個整型變量a,寫兩(liang)段代(dai)碼

,第(di)一個(ge)設(she)置(zhi)a的bit 3,第(di)二個(ge)清(qing)除a 的bit 3。在以(yi)上兩個(ge)操(cao)作中(zhong),要(yao)保持其它位不變。

對這個問題有(you)三種基本的反應

1). 不知道如(ru)何下手(shou)。該被面者(zhe)從沒做過(guo)任何嵌入式(shi)系統的工作。

2). 用bit fields。Bit fields是被扔到C語言(yan)死角的(de)東西,它保證你(ni)的(de)代碼在(zai)不同(tong)編譯器

之間是不可(ke)移植的,同時也保證了(le)的你的代(dai)碼是不可(ke)重用(yong)的。我最近不幸看(kan)到Infineon為(wei)

其較復雜的通信芯片(pian)寫的驅(qu)動程序,它用到了(le)bit fields因此完全對我(wo)無用,因為我(wo)的編

譯器用其它的方式來實現(xian)bit fields的。從道德講:永遠不要讓一個非嵌(qian)入(ru)式的家伙粘實

際硬件的邊。

3). 用 #defines 和 bit masks 操作。這是(shi)(shi)一個有極高可移(yi)植(zhi)性的方(fang)法,是(shi)(shi)應(ying)該被用到的

方(fang)法(fa)。最佳的(de)解決方(fang)案(an)如下:

#define BIT3 (0x1 < <3)

static int a;

void set_bit3(void)

{

a |= BIT3;

}

void clear_bit3(void)

{

a &= ~BIT3;

}

一(yi)些(xie)人喜歡為設(she)置和清除值(zhi)而定(ding)義一(yi)個(ge)掩碼同時定(ding)義一(yi)些(xie)說明常數(shu),這也是可以接受的。

我希望看到(dao)幾個要點:說明常(chang)數、|=和(he)&=~操作。

數(shu)據聲(sheng)明(Data declarations)

(9)用變量a給出下(xia)面的定義

a) 一個(ge)整型數(shu)(An integer)

b) 一個指(zhi)向整型數的指(zhi)針(A pointer to an integer)

c) 一個指(zhi)向指(zhi)針的的指(zhi)針,它指(zhi)向的指(zhi)針是(shi)指(zhi)向一個整型數(A pointer to a pointer

to an integer)

d) 一個(ge)有10個(ge)整型數的數組(An array of 10 integers)

e) 一(yi)個(ge)有10個(ge)指(zhi)針的數(shu)組(zu),該指(zhi)針是指(zhi)向一(yi)個(ge)整(zheng)型數(shu)的(An array of 10 pointers to

integers)

f) 一個指向有(you)10個整型數數組(zu)的指針(A pointer to an array of 10 integers)

g) 一個指(zhi)向(xiang)函數(shu)(shu)的(de)指(zhi)針,該函數(shu)(shu)有(you)一個整型參(can)數(shu)(shu)并返回(hui)一個整型數(shu)(shu)(A pointer to a fu

nction that takes an integer as an argument and returns an integer)

h) 一個(ge)有10個(ge)指(zhi)針(zhen)的(de)數(shu)組(zu),該指(zhi)針(zhen)指(zhi)向一個(ge)函數(shu),該函數(shu)有一個(ge)整型參數(shu)并(bing)返回一個(ge)整型

數( An array of ten pointers to functions that take an integer argument and r

eturn an integer )

答案是:

a) int a; // An integer

b) int *a; // A pointer to an integer

c) int **a; // A pointer to a pointer to an integer

d) int a[10]; // An array of 10 integers

e) int *a[10]; // An array of 10 pointers to integers

f) int (*a)[10]; // A pointer to an array of 10 integers

g) int (*a)(int); // A pointer to a function a that takes an integer argument

and returns an integer

h) int (*a[10])(int); // An array of 10 pointers to functions that take an int

eger argument and return an integer

人們經常聲稱這里有幾個問(wen)(wen)題是那種(zhong)要翻(fan)一下書才能回(hui)答的(de)問(wen)(wen)題,我同意這種(zhong)說法。當我

寫這篇文章時,為了(le)確定(ding)語法(fa)的(de)(de)正確性,我的(de)(de)確查了(le)一下書。

但是當我(wo)被(bei)面(mian)試的(de)時候(hou),我(wo)期(qi)望被(bei)問到這(zhe)個問題(或者相近(jin)的(de)問題)。因為在被(bei)面(mian)試的(de)這(zhe)

段時(shi)間(jian)里,我(wo)確定我(wo)知道這(zhe)個(ge)問(wen)題的答案。應試者如果不知道

所(suo)有(you)(you)的答案(an)(或至少大部(bu)分答案(an)),那么也就沒有(you)(you)為這次面(mian)試做準備,如(ru)果該(gai)面(mian)試者沒有(you)(you)

為這次面試做準備(bei),那么他又能為什(shen)么出準備(bei)呢?

Static

(10) 關鍵字static的作用是什(shen)么?

這個簡單的問題很少有人能回答(da)完(wan)全。在C語言中,關鍵字static有三個明顯(xian)的作用(yong):

1). 在函數(shu)體,一個被聲明(ming)為靜態的變量在這一函數(shu)被調(diao)用過程中維持其值(zhi)不變。

2). 在(zai)模(mo)塊內(但在(zai)函數體外),一個被(bei)聲明為靜態的變量可以被(bei)模(mo)塊內所用函數訪問,

但不能被模(mo)塊外其(qi)它(ta)函數訪問。它(ta)是(shi)一個本地的全局變量。

3). 在模塊(kuai)(kuai)內(nei)(nei),一個被聲明為(wei)靜(jing)態的函數只可被這(zhe)一模塊(kuai)(kuai)內(nei)(nei)的其它函數調用(yong)。那就是(shi),這(zhe)

個(ge)函數被限制在聲明它的模塊的本地范圍內使用。

大多數應試(shi)者能正確回答(da)(da)第一部(bu)(bu)分,一部(bu)(bu)分能正確回答(da)(da)第二(er)部(bu)(bu)分,同是很少(shao)的人能懂得第

三(san)部(bu)分(fen)。這是(shi)一個應試(shi)者的嚴重的缺(que)點,因為(wei)他(ta)顯然(ran)不懂得本地化數(shu)據和代碼范圍(wei)的好處

和重要性。

(11)一個32位的(de)機器(qi),該機器(qi)的(de)指針(zhen)是多(duo)少位答案:

指針(zhen)是多少位只要看(kan)地(di)址總線的(de)位數就行了。80386以后的(de)機子都是32的(de)數據總線。所以指針(zhen)的(de)位數就是4個字節了。

(12) main()

{

inta[5]={1,2,3,4,5};

int *ptr=(int*)(&a+1);

printf("%d,%d",*(a+1),*(ptr-1));

}

答(da)案:2。5 *(a+1)就(jiu)是(shi)(shi)(shi)(shi)(shi)(shi)a[1],*(ptr-1)就(jiu)是(shi)(shi)(shi)(shi)(shi)(shi)a[4],執行結果是(shi)(shi)(shi)(shi)(shi)(shi)2,5 &a+1不(bu)(bu)是(shi)(shi)(shi)(shi)(shi)(shi)首地(di)址(zhi)+1,系統會(hui)認為(wei)加一(yi)個a數(shu)組(zu)(zu)的(de)(de)(de)偏移(yi),是(shi)(shi)(shi)(shi)(shi)(shi)偏移(yi)了(le)一(yi)個數(shu)組(zu)(zu)的(de)(de)(de)大小(本例(li)是(shi)(shi)(shi)(shi)(shi)(shi)5個int) int *ptr=(int *)(&a+1); 則ptr實(shi)際是(shi)(shi)(shi)(shi)(shi)(shi)&(a[5]),也(ye)就(jiu)是(shi)(shi)(shi)(shi)(shi)(shi)a+5 原因如下(xia)(xia)(xia): &a是(shi)(shi)(shi)(shi)(shi)(shi)數(shu)組(zu)(zu)指(zhi)針,其類型(xing)為(wei) int (*)[5]; 而指(zhi)針加1要根據(ju)指(zhi)針類型(xing)加上一(yi)定的(de)(de)(de)值,不(bu)(bu)同類型(xing)的(de)(de)(de)指(zhi)針+1之后增(zeng)加的(de)(de)(de)大小不(bu)(bu)同 a是(shi)(shi)(shi)(shi)(shi)(shi)長度為(wei)5的(de)(de)(de)int數(shu)組(zu)(zu)指(zhi)針,所(suo)以要加5*sizeof(int) 所(suo)以ptr實(shi)際是(shi)(shi)(shi)(shi)(shi)(shi)a[5] 但是(shi)(shi)(shi)(shi)(shi)(shi)prt與(yu)(&a+1)類型(xing)是(shi)(shi)(shi)(shi)(shi)(shi)不(bu)(bu)一(yi)樣的(de)(de)(de)(這點很(hen)重(zhong)要) 所(suo)以prt-1只會(hui)減(jian)去sizeof(int*) a,&a的(de)(de)(de)地(di)址(zhi)是(shi)(shi)(shi)(shi)(shi)(shi)一(yi)樣的(de)(de)(de),但意思(si)不(bu)(bu)一(yi)樣,a是(shi)(shi)(shi)(shi)(shi)(shi)數(shu)組(zu)(zu)首地(di)址(zhi),也(ye)就(jiu)是(shi)(shi)(shi)(shi)(shi)(shi)a[0]的(de)(de)(de)地(di)址(zhi),&a是(shi)(shi)(shi)(shi)(shi)(shi)對象(數(shu)組(zu)(zu))首地(di)址(zhi),a+1是(shi)(shi)(shi)(shi)(shi)(shi)數(shu)組(zu)(zu)下(xia)(xia)(xia)一(yi)元(yuan)素的(de)(de)(de)地(di)址(zhi),即a[1],&a+1是(shi)(shi)(shi)(shi)(shi)(shi)下(xia)(xia)(xia)一(yi)個對象的(de)(de)(de)地(di)址(zhi),即a[5].

(13)請問以下代碼有(you)什么問題:

int main() { chara; char *str=&a; strcpy(str,"hello"); printf(str); return 0; }

答案:沒有(you)為str分配內(nei)存(cun)空間,將會發生異(yi)常(chang)問題出在將一個(ge)字符串復(fu)制進一個(ge)字符變量指針(zhen)所指地址(zhi)。雖然可以正確輸出結果,但因為越界(jie)進行內(nei)在讀寫而導致程(cheng)序崩潰。

(14)char* s="AAA"; printf("%s",s); s[0]='B'; printf("%s",s);有什么錯(cuo)?

答案:"AAA"是(shi)字(zi)符串常量。s是(shi)指針,指向這個字(zi)符串常量,所(suo)以(yi)聲明s的時(shi)候就有問題。 cosnt char*s="AAA"; 然后又因為是(shi)常量,所(suo)以(yi)對是(shi)s[0]的賦(fu)值(zhi)操作(zuo)是(shi)不合法的。

(15)寫一(yi)個(ge)“標準”宏,這個(ge)宏輸入(ru)兩個(ge)參數并(bing)返回較(jiao)小(xiao)的一(yi)個(ge)。

答案:.#defineMin(X, Y) ((X)>(Y)?(Y):(X)) //結尾沒有‘;’

(16)嵌入式系統中經常要用到無限(xian)循環,你怎么用C編寫死循環。

答案:while(1){}或(huo)者for(;;)

(17)關鍵(jian)字static的作用是(shi)什么?

答案:定(ding)義靜態變量

(18)關鍵(jian)字const有(you)什(shen)么含意?

答案:表示常量(liang)(liang)不可以(yi)修(xiu)改的變(bian)量(liang)(liang)。

(19)關(guan)鍵字(zi)volatile有什么含意?并舉出(chu)三(san)個不同的例子(zi)?

答案(an):提(ti)示編譯器對象的值可能在編譯器未監測(ce)到的情況(kuang)下改變(bian)。

(20)int (*s[10])(int) 表示的是什么啊(a)?

答案:int(*s[10])(int) 函數(shu)指(zhi)針(zhen)數(shu)組,每個指(zhi)針(zhen)指(zhi)向一個int func(int param)的函數(shu)。

(21)有以下表達(da)式: int a=248; b=4;int const c=21;const int *d=&a; int *conste=&b;int const *f const =&amp;a; 請問下列(lie)表達(da)式哪(na)些會被(bei)編譯(yi)器(qi)禁止?為什(shen)么?

答案(an):*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f; *c 這是(shi)個什么東東,禁止 *d 說(shuo)了是(shi)const, 禁止 e = &a 說(shuo)了是(shi)const 禁止 const *fconst =&a; 禁止

(22)交(jiao)換兩個變(bian)量的值(zhi),不使用第(di)三(san)個變(bian)量。即a=3,b=5,交(jiao)換之后a=5,b=3;

答(da)案(an):有兩種(zhong)解法, 一種(zhong)用算術算法, 一種(zhong)用^(異或) a = a + b; b = a - b; a = a - b; or a = a^b;// 只能對int,char.. b = a^b; a = a^b; or a^= b ^= a;

(23)c和c++中的(de)struct有什么(me)不(bu)同?

答案(an):c和(he)c++中struct的(de)主要區別是c中的(de)struct不(bu)可(ke)以(yi)含有(you)成員(yuan)函數,而c++中的(de)struct可(ke)以(yi)。c++中struct和(he)class的(de)主要區別在于默(mo)(mo)認(ren)的(de)存(cun)取權限(xian)不(bu)同,struct默(mo)(mo)認(ren)為(wei)public,而class默(mo)(mo)認(ren)為(wei)private

(24)#include

#include

void getmemory(char *p)

{

p=(char *)malloc(100);

strcpy(p,"helloworld");

}

int main( )

{

char*str=NULL;

getmemory(str);

printf("%s/n",str);

free(str); return 0;

}

答(da)案(an):程(cheng)序崩潰,getmemory中的malloc 不能返回動態內(nei)存, free()對(dui)str操作很危(wei)險

(25)charszstr[10]; strcpy(szstr,"0123456789"); 產(chan)生什么(me)結果?為什么(me)?

答案: 長(chang)度不一樣,會造成非法的(de)OS

(26)列舉幾種進(jin)程的同步機(ji)制,并比較其優缺點。答(da)案: 原子操作(zuo) 信號量機(ji)制 自旋鎖 管程,會合,分布式系統(tong)

(27)進(jin)程之(zhi)間通信的(de)途徑

答案:共享存儲系統(tong)(tong)消息(xi)傳遞系統(tong)(tong)管道:以文件系統(tong)(tong)為基礎

(28)進程死鎖的原(yuan)因

答案:資源競爭及(ji)進程推進順序非法

(29)死鎖的4個(ge)必要條(tiao)件(jian)

答案:互斥(chi)、請求(qiu)保(bao)持、不可(ke)剝奪、環路

(30)死鎖的處理

答(da)案:鴕(tuo)鳥(niao)策略(lve)、預防策略(lve)、避免策略(lve)、檢測與(yu)解(jie)除死鎖

(31)操(cao)作系統中進程調度策略有(you)哪幾(ji)種(zhong)?

答案:FCFS(先(xian)來先(xian)服務),優先(xian)級,時間片輪轉,多級反饋(kui)

(32)類的靜(jing)態成員和非靜(jing)態成員有何區別?

答案:類(lei)的靜態成員(yuan)每(mei)(mei)個(ge)類(lei)只有一個(ge),非靜態成員(yuan)每(mei)(mei)個(ge)對象一個(ge)

(33)純虛函數如何定(ding)義?使(shi)用(yong)時(shi)應注(zhu)意什么?

答案:virtualvoid f()=0; 是接口,子(zi)類(lei)必須要(yao)實現

(24)數組和鏈表的區別

答案:數組:數據(ju)順序存儲(chu),固定(ding)大(da)小連表:數據(ju)可以隨機(ji)存儲(chu),大(da)小可動態改(gai)變

這些(xie)都是(shi)你在面試中,會(hui)(hui)遇到的(de)一(yi)些(xie)面試問題(ti)(ti),趕緊好(hao)好(hao)積累起來,那樣對(dui)(dui)你以后(hou)的(de)嵌入式(shi)學習或者(zhe)嵌入式(shi)面試都會(hui)(hui)是(shi)巨(ju)大的(de)財富(fu),嵌入式(shi)題(ti)(ti)庫這里沒有(you)最好(hao),只有(you)更(geng)好(hao),好(hao)好(hao)掌握這些(xie)嵌入式(shi)題(ti)(ti)庫,那對(dui)(dui)于嵌入式(shi)來說面試so easy。

相關推薦:嵌(qian)入式其他綜合面試題

上一篇:arm程序匯編指令總結,讓你更高效的學習

下一篇:嵌入式驅動程序設計的小竅門,業界大牛總結

熱點文章推薦
華清學員就業(ye)榜單
高薪學員經驗(yan)分享
熱點新聞(wen)推薦
前臺專線:010-82525158 企(qi)業培訓洽談專線:010-82525379 院校合作洽(qia)談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部