玩弄奶水人妻,亚洲精品国偷拍自产在线观看蜜臀,第三书包h文辣文吃奶,欧美人与性动交α欧美精品

嵌入式題庫(kù)最全的,去公司面試都會(huì)出現(xiàn)(上) 嵌入式 題庫(kù)

時(shí)間:2025-03-12 19:22:44 來(lái)源: 編輯:

現(xiàn)在嵌入式發(fā)展這么快,嵌入全的去公嵌入很多人都開(kāi)始走上嵌入式學(xué)習(xí)之路。式題司面試都式題據(jù)市場(chǎng)統(tǒng)計(jì),庫(kù)最庫(kù)一些畢業(yè)或者正在找工作的現(xiàn)上人在面試企業(yè)的時(shí)候會(huì)卡在這里,那就是嵌入全的去公嵌入面試題。很多人在面試中都表現(xiàn)得很好,式題司面試都式題但是庫(kù)最庫(kù)在回答面試問(wèn)題時(shí)卻沒(méi)有付出足夠的努力,最終被面試問(wèn)題拒絕了,現(xiàn)上這使得找工作成為了一個(gè)難題,嵌入全的去公嵌入讓他們無(wú)路可走。式題司面試都式題天賦。庫(kù)最庫(kù)而且,現(xiàn)上對(duì)于某些人來(lái)說(shuō)也是嵌入全的去公嵌入如此。綜上所述,式題司面試都式題你可以通過(guò)嵌入式訪談向一些空難受害者學(xué)習(xí)。庫(kù)最庫(kù)公司面試一般都是可以的。

(1)char * constp char const *p const char *p 以上三者有什么區(qū)別?

回答:

字符*常量p; //常量指針,p的值不能修改

字符常量* p; //指向常量的指針,所指向的常量值不能改變const char *p; //和char const *p

char * const p 是一個(gè)char 指針。指針是一個(gè)常量,不能修改。也就是說(shuō),像p=q 這樣的陳述是錯(cuò)誤的;

char const * p 和const char * p 是同一類(lèi)型的char 指針。指針指向的字符被視為常量,不允許修改。也就是說(shuō),像*p=q 這樣的語(yǔ)句是錯(cuò)誤的。

(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;

結(jié)果是: 0 0 1 1 str1,str2,str3,str4是數(shù)組變量,它們有自己的內(nèi)存空間;而str5、str6、str7、str8是指針,它們指向同一個(gè)常量區(qū)。

關(guān)于嵌入式物聯(lián)網(wǎng),確實(shí)有很多東西需要學(xué)習(xí)。不要學(xué)錯(cuò)路線和內(nèi)容,導(dǎo)致你的薪資水漲船高!

我免費(fèi)給大家分享一個(gè)數(shù)據(jù)包,差不多150G。學(xué)習(xí)內(nèi)容、面試、項(xiàng)目都比較新、全面!據(jù)估計(jì),在網(wǎng)上購(gòu)買(mǎi)某種魚(yú)至少要花費(fèi)幾十美元。

點(diǎn)此找助手0元獲取:掃碼進(jìn)群獲取資料

(3)什么是預(yù)編譯以及什么時(shí)候需要預(yù)編譯:

回答:

1. 始終使用不經(jīng)常更改的大型代碼體。

2. 程序由多個(gè)模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同的編譯選項(xiàng)。在這種情況下,所有包含文件都可以預(yù)編譯成預(yù)編譯頭。

預(yù)編譯指令表示編譯器在程序正式編譯之前執(zhí)行的操作,可以放置在程序中的任何位置。

(4)下面代碼中的兩個(gè)sizeof用法有問(wèn)題嗎?

[Cyi] void UpperCase( char str[] ) //將str 中的小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母{ for( size_t i=0; i

(5) 嵌入式系統(tǒng)中經(jīng)常使用無(wú)限循環(huán)。 C語(yǔ)言中如何編寫(xiě)無(wú)限循環(huán)?

這個(gè)問(wèn)題有多種解決方案。我的首選解決方案是:

同時(shí)(1)

{

}

一些程序員更喜歡以下解決方案:

為了(;)

{

}

這個(gè)實(shí)現(xiàn)讓我很困惑,因?yàn)檎Z(yǔ)法并不能準(zhǔn)確表達(dá)正在發(fā)生的事情。如果候選人給出

作為解決方案,我將以此為契機(jī)來(lái)探索他們是如何做到這一點(diǎn)的

基本的。如果他們的基本答案是:“我被教導(dǎo)要這樣做,但從未想過(guò)為什么。”

給我留下不好的印象。

第三種選擇是使用goto

循環(huán):

.

轉(zhuǎn)到循環(huán);

如果候選人給出了上述解決方案,則意味著他要么是一名匯編語(yǔ)言程序員(這可能是一件好事),要么他

我是一名BASIC/FORTRAN 程序員,想要進(jìn)入一個(gè)新領(lǐng)域。

常量

(6)關(guān)鍵字const是什么意思?

當(dāng)我聽(tīng)到受訪者說(shuō)“const 意味著恒定”時(shí),我就知道我正在與一個(gè)業(yè)余愛(ài)好者打交道。

去年Dan Saks在他的文章中已經(jīng)完整總結(jié)了const的所有用法,所以ESP(譯者:Embedded)

每個(gè)系統(tǒng)編程的讀者都應(yīng)該非常熟悉const 能做什么和不能做什么。如果你來(lái)自

如果不閱讀那篇文章,只要能夠知道const 意味著“只讀”就可以了。雖然這個(gè)答案并不完整

答案,但我接受它作為正確答案。 (如果想知道更詳細(xì)的答案,請(qǐng)仔細(xì)閱讀Saks

文章。 )如果候選人能夠正確回答這個(gè)問(wèn)題,我會(huì)問(wèn)他一個(gè)附加問(wèn)題:以下所有陳述

什么意思

常量整型;

int 常量a;

常量int *a;

int * 常量a;

int const * 一個(gè)常量;

前兩者作用相同,a是常整數(shù)。第三個(gè)表示a 是一個(gè)指向常量整數(shù)的指針(也

也就是說(shuō),整數(shù)不能修改,但指針可以)。第四個(gè)含義a 是指向整數(shù)的常量指針(也可以

也就是說(shuō),指針指向的整數(shù)可以修改,但指針不能修改)。最后一位表示a是1

指向常整數(shù)的常指針(即指針?biāo)赶虻恼麛?shù)不能被修改,指針也不能被修改。

可修改)。如果候選人能夠正確回答這些問(wèn)題,那么他或她就給我留下了良好的印象。順便一提

總而言之,你可能會(huì)問(wèn),即使不使用const關(guān)鍵字,仍然很容易寫(xiě)出功能正確的程序,那么

為什么我還是這么看重const這個(gè)關(guān)鍵字呢?我有以下幾個(gè)原因:

1)。關(guān)鍵字const的作用是向閱讀你代碼的人傳達(dá)非常有用的信息。其實(shí)它聲明了一個(gè)參數(shù)

它是一個(gè)常量,告訴用戶該參數(shù)的應(yīng)用目的。如果您曾經(jīng)花費(fèi)大量時(shí)間清理別人的垃圾

垃圾,你很快就會(huì)學(xué)會(huì)欣賞這些額外的信息。 (當(dāng)然,懂得使用const的程序員很少會(huì)留下垃圾

讓其他人清理垃圾。 )

2)。使用const 關(guān)鍵字可以通過(guò)為優(yōu)化器提供一些附加信息來(lái)生成更緊湊的代碼。

3)。合理使用關(guān)鍵字const可以讓編譯器自然地保護(hù)那些不想改變的參數(shù),防止它們被改變。

被無(wú)意的代碼修改。簡(jiǎn)而言之,這減少了錯(cuò)誤的發(fā)生。

易揮發(fā)的

(7) 關(guān)鍵字volatile 的含義是什么并給出三個(gè)不同的例子。

定義為volatile 的變量意味著該變量可能會(huì)被意外改變,這樣編譯器就不會(huì)

假設(shè)該變量的值。準(zhǔn)確地說(shuō),優(yōu)化器每次使用該變量時(shí)都必須仔細(xì)地重新讀取。

獲取該變量的值,而不是使用存儲(chǔ)在寄存器中的備份。以下是易失性變量的一些示例:

1)。并行設(shè)備的硬件寄存器(如狀態(tài)寄存器)

2)。將在中斷服務(wù)程序中訪問(wèn)的非自動(dòng)變量(非自動(dòng)變量)

3)。多線程應(yīng)用程序中多個(gè)任務(wù)共享的變量

不能回答這個(gè)問(wèn)題的人將不會(huì)被錄用。我認(rèn)為這是C 程序員與嵌入式系統(tǒng)程序員最大的區(qū)別

基本問(wèn)題。嵌入式系統(tǒng)程序員經(jīng)常與硬件、中斷、RTOS等打交道,所有這些都需要vo

緯度變量。不了解易失性內(nèi)容可能會(huì)導(dǎo)致災(zāi)難。

假設(shè)受訪者正確回答了這個(gè)問(wèn)題(好吧,懷疑情況確實(shí)如此),我將深入挖掘一下,看看

讓我們看看這個(gè)人是否完全理解volatility 的重要性。

1)。參數(shù)可以同時(shí)是const 和volatile 嗎?解釋為什么。

2)。指針可以是易失性的嗎?解釋為什么。

3)。以下函數(shù)有什么問(wèn)題:

int square(易失性int *ptr)

{

返回*ptr * *ptr;

}

答案如下:

1)。是的。只讀狀態(tài)寄存器就是一個(gè)例子。它是不穩(wěn)定的,因?yàn)樗赡軙?huì)發(fā)生意外的改變。

它是const,因?yàn)槌绦虿粦?yīng)該嘗試修改它。

2)。是的。雖然這種情況并不常見(jiàn)。一個(gè)例子是當(dāng)服務(wù)例程修改指向緩沖區(qū)的指針時(shí)

指針。

3)。這段代碼中有一個(gè)技巧。這段代碼的目的是返回指針*ptr所指向的值的平方。然而,通過(guò)

由于*ptr指向一個(gè)易失性參數(shù),編譯器將生成類(lèi)似以下的代碼:

int square(易失性int *ptr)

{

整數(shù)a,b;

a=*ptr;

b=*ptr;

返回a*b;

}

由于*ptr 的值可能會(huì)意外更改,因此a 和b 可能會(huì)不同。因此,此代碼可能不會(huì)返回

是您期望的平方值!正確的代碼如下:

長(zhǎng)方形(易失性int *ptr)

{

整數(shù)a;

a=*ptr;

返回a*a;

}

位操作

(8)嵌入式系統(tǒng)總是要求用戶對(duì)變量或寄存器進(jìn)行位操作。給定一個(gè)整型變量a,寫(xiě)兩段代碼

,第一個(gè)設(shè)置a 的位3,第二個(gè)清除a 的位3。上述兩個(gè)操作中,其他位保持不變。

對(duì)于這個(gè)問(wèn)題有三個(gè)基本的回答

1)。不知道如何開(kāi)始。受訪者從未做過(guò)任何嵌入式系統(tǒng)工作。

2)。使用位域。位域是被扔進(jìn)C語(yǔ)言死胡同的東西。它確保您的代碼可以在不同的編譯器中運(yùn)行。

它們之間不可移植,并且還確保您的代碼不可重用。我最近很不幸地見(jiàn)到了英飛凌

為其更復(fù)雜的通信芯片編寫(xiě)的驅(qū)動(dòng)程序使用位字段,因此對(duì)我來(lái)說(shuō)完全沒(méi)用,因?yàn)槲业某绦騿T

翻譯器以其他方式實(shí)現(xiàn)位字段。道德上:永遠(yuǎn)不要讓一個(gè)非嵌入式人員留下來(lái)

國(guó)際硬件優(yōu)勢(shì)。

3)。使用#defines 和位掩碼進(jìn)行操作。這是一種非常便攜的方法,應(yīng)該使用

方法。最佳解決方案如下:

#定義BIT3 (0x1 3)

靜態(tài)整型;

無(wú)效set_bit3(無(wú)效)

{

一個(gè)|=位3;

}

無(wú)效清除_bit3(無(wú)效)

{

a=~BIT3;

}

有些人喜歡定義一個(gè)用于設(shè)置和清除值的掩碼并定義一些描述性常量,這也是可以接受的。

我想看的幾個(gè)要點(diǎn): 常量、|=和=~ 操作的解釋。

數(shù)據(jù)聲明

(9) 利用變量a給出如下定義

a) 一個(gè)整數(shù)

b) 指向整數(shù)的指針

c) 指向指針的指針,它指向的指針是一個(gè)整數(shù)(Apointertoapointer

為整數(shù))

d) 10 個(gè)整數(shù)的數(shù)組

e) 一個(gè)由10 個(gè)整數(shù)指針組成的數(shù)組

整數(shù))

f) 指向10 個(gè)整數(shù)的數(shù)組的指針

g) 指向一個(gè)函數(shù)的指針,該函數(shù)接受一個(gè)整數(shù)參數(shù)并返回一個(gè)整數(shù)(Apointertoafu

以整數(shù)作為參數(shù)并返回整數(shù)的函數(shù))

h) 一個(gè)由10 個(gè)指針組成的數(shù)組,指向一個(gè)采用整數(shù)參數(shù)并返回整數(shù)的函數(shù)

一個(gè)由十個(gè)指針組成的數(shù)組,指向采用整數(shù)參數(shù)和r 的函數(shù)

返回一個(gè)整數(shù))

答案是:

a)整數(shù)a; //一個(gè)整數(shù)

b)整數(shù)*a; //指向整數(shù)的指針

c) int **a; //指向整數(shù)的指針

d) int a[10]; //10 個(gè)整數(shù)的數(shù)組

e) int *a[10]; //10 個(gè)整數(shù)指針的數(shù)組

f) int (*a)[10]; //指向10 個(gè)整數(shù)的數(shù)組的指針

g) int (*a)(int); //指向帶有整數(shù)參數(shù)的函數(shù)a 的指針

并返回一個(gè)整數(shù)

h) int (*a[10])(int); //一個(gè)由10 個(gè)指向采用int 的函數(shù)的指針組成的數(shù)組

eger 參數(shù)并返回一個(gè)整數(shù)

人們經(jīng)常聲稱(chēng)這里的一些問(wèn)題需要翻一本書(shū)才能回答,我同意。當(dāng)我

在寫(xiě)這篇文章時(shí),我確實(shí)檢查了書(shū)以確保語(yǔ)法正確。

但當(dāng)我接受采訪時(shí),我希望被問(wèn)到這個(gè)問(wèn)題(或類(lèi)似的問(wèn)題)。因?yàn)樵诮邮懿稍L時(shí)

有一段時(shí)間,我確信我知道這個(gè)問(wèn)題的答案。如果候選人不知道

所有的答案(或者至少是大部分的答案),那么就沒(méi)有為這次面試做準(zhǔn)備。如果面試官?zèng)]有

準(zhǔn)備這次采訪,那么他可以準(zhǔn)備什么呢?

靜止的

(10)關(guān)鍵字static的作用是什么

這個(gè)簡(jiǎn)單的問(wèn)題很少得到完整的回答。在C語(yǔ)言中,關(guān)鍵字static有三個(gè)明顯的作用:

1)。在函數(shù)體中,聲明為static 的變量在調(diào)用函數(shù)時(shí)保持其值。

2)。在模塊內(nèi)部(但在函數(shù)體外部),聲明為static 的變量可以被模塊中使用的函數(shù)訪問(wèn),

但不能被模塊外的其他函數(shù)訪問(wèn)。它是一個(gè)局部全局變量。

3)。在模塊內(nèi),聲明為靜態(tài)的函數(shù)只能由該模塊中的其他函數(shù)調(diào)用。也就是說(shuō),這個(gè)

函數(shù)僅限于聲明它的模塊的本地范圍。

大多數(shù)考生能正確回答第一部分,有些人能正確回答第二部分,很少有人能理解第二部分。

三個(gè)部分。對(duì)于顯然不了解本地化數(shù)據(jù)和代碼范圍的好處的候選人來(lái)說(shuō),這是一個(gè)嚴(yán)重的缺點(diǎn)

和重要性。

(11) 對(duì)于32位機(jī)器,該機(jī)器的指針是多少位?回答:

只需查看地址總線中的位數(shù)即可確定指針有多少位。 80386以后的機(jī)器都使用32條數(shù)據(jù)總線。所以指針的位數(shù)是4個(gè)字節(jié)。

(12) 主函數(shù)()

{

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

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

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

}

答案:2. 5 *(a+1)是a[1],*(ptr-1)是a[4],執(zhí)行結(jié)果是2,5 a+1不是首地址+1,系統(tǒng)會(huì)認(rèn)為添加一個(gè)a 數(shù)組的偏移量就是數(shù)組大小的偏移量(本例中為5 個(gè)int) int *ptr=(int *)(a+1);那么ptr其實(shí)就是(a[5]),也就是a+5 原因如下:a是一個(gè)數(shù)組指針,它的類(lèi)型是int(*)[5];而給指針加1則需要根據(jù)指針類(lèi)型加上一定的值。不同類(lèi)型的指針加1后大小增加的方式不同。 a的長(zhǎng)度為5個(gè)int數(shù)組指針,所以需要加上5*sizeof(int),所以ptr實(shí)際上是a[5],但是prt和(a+1)不是同一類(lèi)型(這一點(diǎn)很重要) ,所以prt-1只會(huì)減去sizeof (int*) a,a的地址是相同的,但含義不同。 a是數(shù)組首地址,即a[0]的地址,a是對(duì)象(數(shù)組)的首地址,a+1是數(shù)組的下一個(gè)元素。的地址,即a[1],a+1是下一個(gè)對(duì)象的地址,即a[5]。

(13)下面的代碼有什么問(wèn)題:

int main() { 字符;字符*str=a; strcpy(str,'你好'); printf(str);返回0; }

答:沒(méi)有為str分配內(nèi)存空間,會(huì)出現(xiàn)異常。問(wèn)題在于將字符串復(fù)制到字符變量指針指向的地址中。雖然可以正確輸出結(jié)果,但由于固有讀寫(xiě)越界,導(dǎo)致程序崩潰。

(14)char* s='AAA'; printf('%s',s); s[0]='B'; printf('%s',s);怎么了?

答案:“AAA”是一個(gè)字符串常量。 s是一個(gè)指針,指向這個(gè)字符串常量,所以聲明s的時(shí)候有問(wèn)題。成本char*s='AAA';并且由于它是一個(gè)常量,所以對(duì)s[0]的賦值操作是非法的。

copyright © 2023 powered by sitemap 滬ICP備2023032706號(hào)-13