經(jīng)典嵌入式面試題_第1頁
經(jīng)典嵌入式面試題_第2頁
經(jīng)典嵌入式面試題_第3頁
經(jīng)典嵌入式面試題_第4頁
經(jīng)典嵌入式面試題_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

-.z.經(jīng)典嵌入式面試題

C語言測試是招聘嵌入式系統(tǒng)程序員過程中必須而且有效的方法。這些年,我既參加也組織了許多這種測試,在這過程中我意識到這些測試能為帶面試者和被面試者提供許多有用信息,此外,撇開面試的壓力不談,這種測試也是相當(dāng)有趣的。

從被面試者的角度來講,你能了解許多關(guān)于出題者或監(jiān)考者的情況。這個測試只是出題者為顯示其對ANSI標(biāo)準(zhǔn)細(xì)節(jié)的知識而不是技術(shù)技巧而設(shè)計(jì)嗎?這個愚蠢的問題嗎?如要你答出*個字符的ASCII值。這些問題著重考察你的系統(tǒng)調(diào)用和內(nèi)存分配策略方面的能力嗎?這標(biāo)志著出題者也許花時間在微機(jī)上而不上在嵌入式系統(tǒng)上。如果上述任何問題的答案是"是"的話,則我知道我得認(rèn)真考慮我是否應(yīng)該去做這份工作。從面試者的角度來講,一個測試也許能從多方面提醒應(yīng)試者的素質(zhì):最根本的,你能了解應(yīng)試者C語言的水平。不管怎么樣,看一下這人如何答復(fù)他不會的問題也是滿有趣。應(yīng)試者是以好的直覺做出明智的選擇,還是只是瞎蒙呢?當(dāng)應(yīng)試者在*個問題上卡住時是找借口呢,還是表現(xiàn)出對問題的真正的好奇心,把這看成學(xué)習(xí)的時機(jī)呢?我發(fā)現(xiàn)這些信息與他們的測試成績一樣有用。有了這些想法,我決定出一些真正針對嵌入式系統(tǒng)的考題,希望這些令人頭痛的考題能給正在找工作的人一點(diǎn)幫住。這些問題都是我這些年實(shí)際碰到的。其中有些題很難,但它們應(yīng)該都能給你一點(diǎn)啟迪。這個測試適于不同水平的應(yīng)試者,大多數(shù)初級水平的應(yīng)試者的成績會很差,經(jīng)歷豐富的程序員應(yīng)該有很好的成績。為了讓你能自己決定*些問題的偏好,每個問題沒有分配分?jǐn)?shù),如果選擇這些考題為你所用,請自行按你的意思分配分?jǐn)?shù)。預(yù)處理器〔Preprocessor〕1.用預(yù)處理指令#define聲明一個常數(shù),用以說明1年中有多少秒〔忽略閏年問題〕#defineSECONDS_PER_YEAR(60*60*24*365)UL

我在這想看到幾件事情:

";#define語法的根本知識〔例如:不能以分號完畢,括號的使用,等等〕

";懂得預(yù)處理器將為你計(jì)算常數(shù)表達(dá)式的值,因此,直接寫出你是如何計(jì)算一年中有多少秒而不是計(jì)算出實(shí)際的值,是更清晰而沒有代價的。

";意識到這個表達(dá)式將使一個16位機(jī)的整型數(shù)溢出-因此要用到長整型符號L,告訴編譯器這個常數(shù)是的長整型數(shù)。

";如果你在你的表達(dá)式中用到UL〔表示無符號長整型〕,則你有了一個好的起點(diǎn)。記住,第一印象很重要。2.寫一個"標(biāo)準(zhǔn)"宏MIN,這個宏輸入兩個參數(shù)并返回較小的一個。#defineMIN(A,B)((A)<=(B)"(A):(B))這個測試是為下面的目的而設(shè)的:

";標(biāo)識#define在宏中應(yīng)用的根本知識。這是很重要的,因?yàn)橹钡角度?inline)操作符變?yōu)闃?biāo)準(zhǔn)C的一局部,宏是方便產(chǎn)生嵌入代碼的唯一方法,對于嵌入式系統(tǒng)來說,為了能到達(dá)要求的性能,嵌入代碼經(jīng)常是必須的方法。

";三重條件操作符的知識。這個操作符存在C語言中的原因是它使得編譯器能產(chǎn)生比if-then-else更優(yōu)化的代碼,了解這個用法是很重要的。

";懂得在宏中小心地把參數(shù)用括號括起來

";我也用這個問題開場討論宏的副作用,例如:當(dāng)你寫下面的代碼時會發(fā)生什么事?least=MIN(*p++,b);3.預(yù)處理器標(biāo)識#error的目的是什么?

#error停頓編譯并顯示錯誤信息如果你不知道答案,請看參考文獻(xiàn)1。這問題對區(qū)分一個正常的伙計(jì)和一個書呆子是很有用的。只有書呆子才會讀C語言課本的附錄去找出象這種問題的答案。當(dāng)然如果你不是在找一個書呆子,則應(yīng)試者最好希望自己不要知道答案。死循環(huán)〔Infiniteloops〕4.嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么樣用C編寫死循環(huán)呢?這個問題用幾個解決方案。我首選的方案是:

while(1)

{

;}一些程序員更喜歡如下方案:for(;;)

{

;}這個實(shí)現(xiàn)方式讓我為難,因?yàn)檫@個語法沒有確切表到達(dá)底怎么回事。如果一個應(yīng)試者給出這個作為方案,我將用這個作為一個時機(jī)去探究他們這樣做的根本原理。如果他們的根本答案是:"我被教著這樣做,但從沒有想到過為什么。"這會給我留下一個壞印象。第三個方案是用goto

Loop:

...

gotoLoop;應(yīng)試者如給出上面的方案,這說明或者他是一個匯編語言程序員〔這也許是好事〕或者他是一個想進(jìn)入新領(lǐng)域的BASIC/FORTRAN程序員。數(shù)據(jù)聲明〔Datadeclarations〕

5.用變量a給出下面的定義

a)一個整型數(shù)〔Aninteger〕inta

b)一個指向整型數(shù)的指針〔Apointertoaninteger〕int*a

c)一個指向指針的的指針,它指向的指針是指向一個整型數(shù)〔Apointertoapointertoanintege〕r*(int*a)int**a

d)一個有10個整型數(shù)的數(shù)組〔Anarrayof10integers〕inta[10]e)一個有10個指針的數(shù)組,該指針是指向一個整型數(shù)的?!睞narrayof10pointerstointegers〕int*a[10]f)一個指向有10個整型數(shù)數(shù)組的指針〔Apointertoanarrayof10integers〕*〔inta[10]〕int(*a)[10]g)一個指向函數(shù)的指針,該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)〔Apointertoafunctionthattakesanintegerasanargumentandreturnsaninteger〕fun(*inta)int(*ma*_function)(inta)

h)一個有10個指針的數(shù)組,該指針指向一個函數(shù),該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)〔Anarrayoftenpointerstofunctionsthattakeanintegerargumentandreturnaninteger〕fun(*inta[10])int(*a[10])(int)答案是:

a)inta;//Aninteger

b)int*a;//Apointertoaninteger

c)int**a;//Apointertoapointertoaninteger

d)inta[10];//Anarrayof10integerse)int*a[10];//Anarrayof10pointerstointegers

等價于int*(a[10]);f)int(*a)[10];//Apointertoanarrayof10integers

g)int(*ma*_function)(inta);//Apointertoafunctionathattakesanintegerargumentandreturnsanintegerh)int(*a[10])(int);//Anarrayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger人們經(jīng)常聲稱這里有幾個問題是那種要翻一下書才能答復(fù)的問題,我同意這種說法。當(dāng)我寫這篇文章時,為了確定語法的正確性,我確實(shí)查了一下書。但是當(dāng)我被面試的時候,我期望被問到這個問題〔或者相近的問題〕。因?yàn)樵诒幻嬖嚨倪@段時間里,我確定我知道這個問題的答案。應(yīng)試者如果不知道所有的答案〔或至少大局部答案〕,則也就沒有為這次面試做準(zhǔn)備,如果該面試者沒有為這次面試做準(zhǔn)備,則他又能為什么出準(zhǔn)備呢?6.關(guān)鍵字static的作用是什么?在C語言中,關(guān)鍵字static有三個明顯的作用:一旦聲明為靜態(tài)變量,在編譯時刻開場永遠(yuǎn)存在,不受作用域范圍約束,但是如果是局部靜態(tài)變量,則此靜態(tài)變量只能在局部作用域內(nèi)使用,超出范圍不能使用,但是它確實(shí)還占用內(nèi)存,還存在.

";在模塊內(nèi)〔但在函數(shù)體外〕,一個被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù),但不能被模塊外其它函數(shù)。它是一個本地的全局變量。

";在模塊內(nèi),一個被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。大多數(shù)應(yīng)試者能正確答復(fù)第一局部,一局部能正確答復(fù)第二局部,很少人能懂得第三局部。這是一個應(yīng)試者的嚴(yán)重的缺點(diǎn),因?yàn)樗@然不懂得本地化數(shù)據(jù)和代碼范圍的好處和重要性。7.關(guān)鍵字const有什么含意?總結(jié):1〕只讀。2〕使用關(guān)鍵字const也許能產(chǎn)生更緊湊的代碼。3〕使編譯器很自然地保護(hù)那些不希望被改變的參數(shù),防止其被無意的代碼修改。我只要一聽到被面試者說:"const意味著常數(shù)",我就知道我正在和一個業(yè)余者打交道。去年DanSaks已經(jīng)在他的文章里完全概括了const的所有用法,因此ESP(譯者:EmbeddedSystemsProgramming)的每一位讀者應(yīng)該非常熟悉const能做什么和不能做什么.如果你從沒有讀到那篇文章,只要能說出const意味著"只讀"就可以了。盡管這個答案不是完全的答案,但我承受它作為一個正確的答案?!踩绻阆胫栏敿?xì)的答案,仔細(xì)讀一下Saks的文章吧。〕如果應(yīng)試者能正確答復(fù)這個問題,我將問他一個附加的問題:下面的聲明都是什么意思?

constinta;

intconsta;

constint*a;

int*consta;

intconst*aconst;/******/

前兩個的作用是一樣,a是一個常整型數(shù)。第三個意味著a是一個指向常整型數(shù)的指針〔也就是,整型數(shù)是不可修改的,但指針可以〕。第四個意思a是一個指向整型數(shù)的常指針〔也就是說,指針指向的整型數(shù)是可以修改的,但指針是不可修改的〕。最后一個意味著a是一個指向常整型數(shù)的常指針〔也就是說,指針指向的整型數(shù)是不可修改的,同時指針也是不可修改的〕。如果應(yīng)試者能正確答復(fù)這些問題,則他就給我留下了一個好印象。順帶提一句,也許你可能會問,即使不用關(guān)鍵字const,也還是能很容易寫出功能正確的程序,則我為什么還要如此看重關(guān)鍵字const呢?我也如下的幾下理由:

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

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

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

8.關(guān)鍵字volatile有什么含意"并給出三個不同的例子。一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設(shè)這個變量的值了。準(zhǔn)確地說就是,優(yōu)化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在存放器里的備份。下面是volatile變量的幾個例子:

";并行設(shè)備的硬件存放器〔如:狀態(tài)存放器〕

";一個中斷效勞子程序中會到的非自動變量(Non-automaticvariables)

";多線程應(yīng)用中被幾個任務(wù)共享的變量答復(fù)不出這個問題的人是不會被雇傭的。我認(rèn)為這是區(qū)分C程序員和嵌入式系統(tǒng)程序員的最根本的問題。搞嵌入式的家伙們經(jīng)常同硬件、中斷、RTOS等等打交道,所有這些都要求用到volatile變量。不懂得volatile的內(nèi)容將會帶來災(zāi)難。假設(shè)被面試者正確地答復(fù)了這是問題〔嗯,疑心是否會是這樣〕,我將稍微深究一下,看一下這家伙是不是直正懂得volatile完全的重要性。";一個參數(shù)既可以是const還可以是volatile嗎?解釋為什么。";一個指針可以是volatile嗎?解釋為什么。";下面的函數(shù)有什么錯誤:intsquare(volatileint*ptr){return*ptr**ptr;}下面是答案:

";是的。一個例子是只讀的狀態(tài)存放器。它是volatile因?yàn)樗赡鼙灰庀氩坏降馗淖?。它是const因?yàn)槌绦虿粦?yīng)該試圖去修改它。

";是的。盡管這并不很常見。一個例子是當(dāng)一個中斷效勞子程序修改一個指向一個buffer的指針時。

";這段代碼有點(diǎn)變態(tài)。這段代碼的目的是用來返回指針*ptr指向值的平方,但是,由于*ptr指向一個volatile型參數(shù),編譯器將產(chǎn)生類似下面的代碼:

intsquare(volatileint*ptr)

{

inta,b;

a=*ptr;

b=*ptr;

returna*b;

}由于*ptr的值可能被意想不到地該變,因此a和b可能是不同的。結(jié)果,這段代碼可能返不是你所期望的平方值!正確的代碼如下:

longsquare(volatileint*ptr)

{

inta;

a=*ptr;

returna*a;

}位操作〔Bitmanipulation〕

9.嵌入式系統(tǒng)總是要用戶對變量或存放器進(jìn)展位操作。給定一個整型變量a,寫兩段代碼,第一個設(shè)置a的bit3,第二個去除a的bit3。在以上兩個操作中,要保持其它位不變。對這個問題有三種根本的反響

";不知道如何下手。該被面者從沒做過任何嵌入式系統(tǒng)的工作。

";用bitfields。Bitfields是被扔到C語言死角的東西,它保證你的代碼在不同編譯器之間是不可移植的,同時也保證了的你的代碼是不可重用的。我最近不幸看到Infineon為其較復(fù)雜的通信芯片寫的驅(qū)動程序,它用到了bitfields因此完全對我無用,因?yàn)槲业木幾g器用其它的方式來實(shí)現(xiàn)bitfields的。從道德講:永遠(yuǎn)不要讓一個非嵌入式的家伙粘實(shí)際硬件的邊。";用#defines和bitmasks操作。這是一個有極高可移植性的方法,是應(yīng)該被用到的方法。最正確的解決方案如下:

#defineBIT3(0*1<<3)

staticinta;

voidset_bit3(void){a|=BIT3;}

voidclear_bit3(void){a&=~BIT3;}一些人喜歡為設(shè)置和去除值而定義一個掩碼同時定義一些說明常數(shù),這也是可以承受的。我希望看到幾個要點(diǎn):說明常數(shù)、|=和&=~操作。固定的內(nèi)存位置〔Accessingfi*edmemorylocations〕

10.嵌入式系統(tǒng)經(jīng)常具有要求程序員去*特定的內(nèi)存位置的特點(diǎn)。在*工程中,要求設(shè)置一絕對地址為0*67a9的整型變量的值為0*aa55。編譯器是一個純粹的ANSI編譯器。寫代碼去完成這一任務(wù)。這一問題測試你是否知道為了一絕對地址把一個整型數(shù)強(qiáng)制轉(zhuǎn)換〔typecast〕為一指針是合法的。這一問題的實(shí)現(xiàn)方式隨著個人風(fēng)格不同而不同。典型的類似代碼如下:int*ptr;

ptr=(int*)0*67a9;

*ptr=0*aa55;Amoreobscureapproachis:

一個較晦澀的方法是:

*(int*const)(0*67a9)=0*aa55;即使你的品味更接近第二種方案,但我建議你在面試時使用第一種方案。中斷〔Interrupts〕

11.中斷是嵌入式系統(tǒng)中重要的組成局部,這導(dǎo)致了很多編譯開發(fā)商提供一種擴(kuò)展——讓標(biāo)準(zhǔn)C支持中斷。具代表事實(shí)是,產(chǎn)生了一個新的關(guān)鍵字__interrupt。下面的代碼就使用了__interrupt關(guān)鍵字去定義了一個中斷效勞子程序(ISR),請?jiān)u論一下這段代碼的。__interruptdoublepute_area(doubleradius)

{

doublearea=PI*radius*radius;

printf("\nArea=%f",area);

returnarea;

}這個函數(shù)有太多的錯誤了,以至讓人不知從何說起了:

";ISR不能返回一個值。如果你不懂這個,則你不會被雇用的。

";ISR不能傳遞參數(shù)。如果你沒有看到這一點(diǎn),你被雇用的時機(jī)等同第一項(xiàng)。

";在許多的處理器/編譯器中,浮點(diǎn)一般都是不可重入的。有些處理器/編譯器需要讓額處的存放器入棧,有些處理器/編譯器就是不允許在ISR中做浮點(diǎn)運(yùn)算。此外,ISR應(yīng)該是短而有效率的,在ISR中做浮點(diǎn)運(yùn)算是不明智的。

";與第三點(diǎn)一脈相承,printf()經(jīng)常有重入和性能上的問題。如果你丟掉了第三和第四點(diǎn),我不會太為難你的。不用說,如果你能得到后兩點(diǎn),則你的被雇用前景越來越光明了。

*****

代碼例子〔Codee*amples〕

12.下面的代碼輸出是什么,為什么?

voidfoo(void)

{

unsignedinta=6;

intb=-20;

(a+b>6)"puts(">6"):puts("<=6");

}

這個問題測試你是否懂得C語言中的整數(shù)自動轉(zhuǎn)換原則,我發(fā)現(xiàn)有些開發(fā)者懂得極少這些東西。不管如何,這無符號整型問題的答案是輸出是">6"。原因是當(dāng)表達(dá)式中存在有符號類型和無符號類型時所有的操作數(shù)都自動轉(zhuǎn)換為無符號類型。因此-20變成了一個非常大的正整數(shù),所以該表達(dá)式計(jì)算出的結(jié)果大于6。這一點(diǎn)對于應(yīng)當(dāng)頻繁用到無符號數(shù)據(jù)類型的嵌入式系統(tǒng)來說是豐常重要的。如果你答錯了這個問題,你也就到了得不到這份工作的邊緣。13.評價下面的代碼片斷:

unsignedintzero=0;

unsignedintpzero=0*FFFF;//1'splementofzero對于一個int型不是16位的處理器為說,上面的代碼是不正確的。應(yīng)編寫如下:

unsignedintpzero=~0;這一問題真正能揭露出應(yīng)試者是否懂得處理器字長的重要性。在我的經(jīng)歷里,好的嵌入式程序員非常準(zhǔn)確地明白硬件的細(xì)節(jié)和它的局限,然而PC機(jī)程序往往把硬件作為一個無法防止的煩惱。到了這個階段,應(yīng)試者或者完全垂頭喪氣了或者信心滿滿志在必得。如果顯然應(yīng)試者不是很好,則這個測試就在這里完畢了。但如果顯然應(yīng)試者做得不錯,則我就扔出下面的追加問題,這些問題是比擬難的,我想僅僅非常優(yōu)秀的應(yīng)試者能做得不錯。提出這些問題,我希望更多看到應(yīng)試者應(yīng)付問題的方法,而不是答案。不管如何,你就當(dāng)是這個娛樂吧...動態(tài)內(nèi)存分配〔Dynamicmemoryallocation〕

14.盡管不像非嵌入式計(jì)算機(jī)則常見,嵌入式系統(tǒng)還是有從堆〔heap〕中動態(tài)分配內(nèi)存的過程的。則嵌入式系統(tǒng)中,動態(tài)分配內(nèi)存可能發(fā)生的問題是什么?這里,我期望應(yīng)試者能提到內(nèi)存碎片,碎片收集的問題,變量的持行時間等等。這個主題已經(jīng)在ESP雜志中被廣泛地討論過了〔主要是P.J.Plauger,他的解釋遠(yuǎn)遠(yuǎn)超過我這里能提到的任何解釋〕,所有回過頭看一下這些雜志吧!讓應(yīng)試者進(jìn)入一種虛假的平安感覺后,我拿出這么一個小節(jié)目:下面的代碼片段的輸出是什么,為什么?char*ptr;

if((ptr=(char*)malloc(0))==NULL)puts("Gotanullpointer");

elseputs("Gotavalidpointer");這是一個有趣的問題。最近在我的一個同事不經(jīng)意把0值傳給了函數(shù)malloc,得到了一個合法的指針之后,我才想到這個問題。這就是上面的代碼,該代碼的輸出是"Gotavalidpointer"。我用這個來開場討論這樣的一問題,看看被面試者是否想到庫例程這樣做是正確。得到正確的答案固然重要,但解決問題的方法和你做決定的根本原理更重要些。

15Typedef在C語言中頻繁用以聲明一個已經(jīng)存在的數(shù)據(jù)類型的同義字。也可以用預(yù)處理器做類似的事。例如,思考一下下面的例子:

#definedPSstructs*

typedefstructs*tPS;以上兩種情況的意圖都是要定義dPS和tPS作為一個指向構(gòu)造s指針。哪種方法更好呢?〔如果有的話〕為什么?這是一個非常微妙的問題,任何人答對這個問題〔正當(dāng)?shù)脑颉呈菓?yīng)當(dāng)被恭喜的。答案是:typedef更好。思考下面的例子:

dPSp1,p2;

tPSp3,p4;第一個擴(kuò)展為structs*p1,p2;

上面的代碼定義p1為一個指向構(gòu)造的指針,p2為一個實(shí)際的構(gòu)造,這也許不是你想要的。第二個例子正確地定義了p3和p4兩個指針?;逎恼Z法

16.C語言同意一些令人震驚的構(gòu)造,下面的構(gòu)造是合法的嗎,如果是它做些什么?inta=5,b=7,c;

c=a+++b;這個問題將做為這個測驗(yàn)的一個愉快的結(jié)尾。不管你相不相信,上面的例子是完全符合語法的。問題是編譯器如何處理它?水平不高的編譯作者實(shí)際上會爭論這個問題,根據(jù)最處理原則,編譯器應(yīng)當(dāng)能處理盡可能所有合法的用法。因此,上面的代碼被處理成:c=a+++b;

因此,這段代碼持行后a=6,b=7,c=12。如果你知道答案,或猜出正確答案,做得好。如果你不知道答案,我也不把這個當(dāng)作問題。我發(fā)現(xiàn)這個問題的最大好處是這是一個關(guān)于代碼編寫風(fēng)格,代碼的可讀性,代碼的可修改性的好的話題。好了,伙計(jì)們,你現(xiàn)在已經(jīng)做完所有的測試了。這就是我出的C語言測試題,我懷著愉快的心情寫完它,希望你以同樣的心情讀完它。如果是認(rèn)為這是一個好的測試,則盡量都用到你的找工作的過程中去吧。memcmp

parecharactersintwobuffers.

比擬兩塊內(nèi)存中的字符

intmemcmp(constvoid*buf1,constvoid*buf2,size_tcount);memset

Setsbufferstoaspecifiedcharacter

將內(nèi)存塊設(shè)置為指定的字符sprintf

Writeformatteddatatoastring

將格式化的數(shù)據(jù)寫到字符串一、單項(xiàng)選擇題1、如下哪一個命令可以幫助你知道shell命令的用法〔A〕A.man

B.pwd

C.help

D.more

2、Linu*分區(qū)類型默認(rèn)的是:〔B〕A.vfat

B.e*t2/e*t3

C.swap

D.dos

3、在大多數(shù)Linu*發(fā)行版本中,以下哪個屬于塊設(shè)備〔B〕A.串行口

B.硬盤

C.虛擬終端

D.打印機(jī)4、下面哪個命令行可用來馬上重新啟動正在運(yùn)行的Linu*系統(tǒng)?〔D〕A.

restart--delay=0

B.

reboot

-w

C.

halt

-p

D.

shutdown

-r

now

5、在Linu*系統(tǒng),默認(rèn)的shell是什么〔A〕A.bash

B.ash

C.csh

D.gnush

6、下面哪條命令可用來確保文件"myfile〞存在〔B〕

A.cp

myfile

/dev/null

B.touch

myfile

C.create

myfile

D.mkfile

myfile

7、LILO的配置文件是:〔B〕A./etc/conf

B./etc/lilo.conf

C./proc/kcore

D./usr/local/

8、用"useraddjerry〞命令添加一個用戶,這個用戶的主目錄是什么〔A〕A./home/jerry

B./bin/jerry

C./var/jerry

D./etc/jerry

9、Linu*文件權(quán)限一共10位長度,分成四段,第三段表示的內(nèi)容是〔D〕A.文件類型

B.文件所有者的權(quán)限C.文件所有者所在組的權(quán)限

D.其他用戶的權(quán)限10、*文件的組外成員的權(quán)限為只讀;所有者有全部權(quán)限;組內(nèi)的權(quán)限為讀與寫,則該文件的權(quán)限為〔D〕A.467

B.674

C.476

D.764

11、不是shell具有的功能和特點(diǎn)的是〔A〕A.管道

B.輸入輸出重定向

C.執(zhí)行后臺進(jìn)程

D.處理程序命令12、如何從當(dāng)前系統(tǒng)中卸載一個已裝載的文件系統(tǒng)〔A〕A.umount

B.dismount

C.mount–u

D.從/etc/fstab中刪除這個文件系統(tǒng)項(xiàng)13、你用vi編輯器編寫了一個腳本文件shell.sh,你想將改文件名稱修改為shell2.sh,以下命令〔B〕可以實(shí)現(xiàn)。

A.cpshell.shshell2.sh

B.mvshell.shshell2.sh

C.lsshell.sh>shell2.sh

D.llshell.sh>shell2.sh

14、在/home/stud1/wang目錄下有一文件file,使用〔D〕可實(shí)現(xiàn)在后臺執(zhí)行命令,此命令將file文件中的內(nèi)容輸出到file.copy文件中。A.

catfile>file.copy

B.

catfilefile.copy

C.

&catfile

file.copy

D.

&catfile>file.copy

15、字符設(shè)備文件類型的標(biāo)志是〔B〕A.p

B.c

C.s

D.l

16、刪除文件命令為〔D〕A.mkdir

B.rmdir

C.mv

D.rm

17、〔B〕命令可更改一個文件的權(quán)限設(shè)置?

A.attrib

B.chmod

C.change

D.file

18、用命令ls-al顯示出文件ff的描述如下所示,由此可知文件ff的類型為〔A〕。-rw*r-*r--1rootroot599Cec1017:12ff

A.普通文件

B.硬

C.目錄

D.符號19、系統(tǒng)中有用戶user1和user2,同屬于users組。在user1用戶目錄下有一文件file1,它擁有644的權(quán)限,如果user2用戶想修改user1用戶目錄下的file1文件,應(yīng)擁有〔B〕權(quán)限。

A.744

B.664

C.646

D.746

20、在指令系統(tǒng)的各種尋址方式中,獲取操作數(shù)最快的方式是〔1-B〕;假設(shè)操作數(shù)的地址包含在指令中,則屬于〔2-A

〕方式?!?〕

A、直接尋址

B、立即尋址

C、存放器尋址

D、間接尋址〔2〕

A、直接尋址

B、立即尋址

C、存放器尋址

D、間接尋址21、在CPU和物理內(nèi)存之間進(jìn)展地址轉(zhuǎn)換時,〔B

〕將地址從虛擬〔邏輯〕地址空間映射到物理地址空間。A、TCB

B、MMU

C、CACHE

D、DMA

22、Linu*將存儲設(shè)備和輸入/輸出設(shè)備均看做文件來操作,〔C〕不是以文件的形式出現(xiàn)。A.目錄

B.軟

C.i節(jié)點(diǎn)表

D.網(wǎng)絡(luò)適配器

23、關(guān)于文件系統(tǒng)的安裝和卸載,下面描述正確的選項(xiàng)是〔A〕。

A.如果光盤未經(jīng)卸載,光驅(qū)是打不開的

B.安裝文件系統(tǒng)的安裝點(diǎn)只能是/mnt下

C.不管光驅(qū)中是否有光盤,系統(tǒng)都可以安裝CD-ROM設(shè)備

D.mount/dev/fd0/floppy此命令中目錄/floppy是自動生成的24、為了查看Linu*啟動信息,可以用〔B〕命令A(yù).cat/etc/lilo.conf

B.dmesg

C.cat/proc/cpuinfo

D.lilo

25、用以下〔A〕命令查看Linu*使用了多少內(nèi)存A.cat/proc/meminfo

B.cat/bin/meminfo

C.vi/proc/meminfo

D.vi/user/local/meminfo

26、以下〔D〕設(shè)備是字符設(shè)備。A.hdc

B.fd0

C.hda1

D.tty1

27、以下說法正確的選項(xiàng)是〔D〕A.ln

-s

a.t*t

b.t*t,作用是制作文件b.t*t的符號,其名稱為a.t*t

B.df命令可以查看當(dāng)前目錄占用磁盤空間的大小dfdiskfreeC.m命令打印兩個文本文件中的一樣的內(nèi)容D.rm命令可以用來刪除目錄28、有如下的命令:$ddif=f1of=f2。其中if=f1表示〔A〕

A.以f1作為源文件,代替標(biāo)準(zhǔn)輸入

B.以f1作為目標(biāo)文件,代替標(biāo)準(zhǔn)輸出

C.當(dāng)條件滿足f1的時候,執(zhí)行真正的拷貝

D.拷貝的過程中,不轉(zhuǎn)化文件29、為了查找出當(dāng)前用戶運(yùn)行的所有進(jìn)程的信息,我們可以使用〔B〕命令:

A.ps-a

B.ps-u

C.ls-a

D.ls–l

31、〔D〕設(shè)備是字符設(shè)備。A、hdc

B、fd0

C、hda1

D、tty1

32、文件e*er1的權(quán)限為rw-r--r--,現(xiàn)要增加所有用戶的執(zhí)行權(quán)限和同組用戶的寫權(quán)限,以下命令正確的選項(xiàng)是〔A

〕。

A、chmoda+*g+we*er1

B、chmod765e*er1

C、chmodo+*e*er1

D、chmodg+we*er1

33、刪除當(dāng)前目錄abc以及下面的所有子目錄和文件,并不要求提示任何確認(rèn)信息的命令是〔B〕A.delabc\*.*

B.rm–rfabc

C.rmdirabc

D.rm–rabc\*.*

34、如果忘記了ls命令的用法,可以采用〔C〕命令獲得幫助

a.?ls

b.helpls

c.manls

d.getls

35、在安裝開場前,用光盤啟動系統(tǒng),想要進(jìn)入字符界面安裝,需要輸入的命令是〔C〕

a.linu*doc

b.linu*

c.linu*te*t

d.linu*note

36、要給文件file1加上其他人可執(zhí)行屬性的命令是〔C〕

a.chmoda+*

b.chowna+*

c.chmodo+*

d.chowno+*

37、怎樣新建一個新文件:〔A〕

a.touchhello.c

b.mkhello.c

c.rmhello.c

d.newhello.c

38、在bash命令中,當(dāng)用〔B〕參數(shù)時,表示bash是交互的。A、-c

B、-i

C、-s

D、-d

39、重定向的符號">"表示:〔C〕A、輸出追加

B、輸入追加

C、輸出重定向,原來的文件會被改寫D、管道40、linu*系統(tǒng)能夠直接讀取的分區(qū)類型是〔D〕

a.ntfs

b.fat16

c.fat32

d.e*t3

41、以下提法中,屬于ifconfig命令作用范圍的是〔

B

〕。A、編譯源程序

B、配置網(wǎng)卡的IP地址

C、配置系統(tǒng)內(nèi)核

D、加載網(wǎng)卡到內(nèi)核中42、以下對shell變量FRUIT操作,正確的選項(xiàng)是〔C

〕A、為變量賦值:$FRUIT=appleB、顯示變量的值:fruit=appleC、顯示變量的值:echo$FRUIT

D、判斷變量是否有值:[-f"$FRUIT〞]

43、一般可以用〔C

〕實(shí)現(xiàn)自動編譯。A、gcc

B、gdb*

C、make

D、vi

44、處理機(jī)主要由處理器、存儲器和總線組成,總線包括〔

D

〕。A、數(shù)據(jù)總線、串行總線、邏輯總線、物理總線

B、并行總線、地址總線、邏輯總線、物理總線

C、并行總線、串行總線、全雙工總線D、數(shù)據(jù)總線、地址總線、控制總線

45、假設(shè)當(dāng)前目錄下有文件Makefile,下面是其內(nèi)容:pr1:prog.osubr.o

gcc–opr1prog.osubr.o

prog.o:prog.cprog.h

gcc–c–lprog.oprog.c

subr.o:subr.c

gcc–c–osubr.osubr.c

clear:

rm–fpr1*.o

現(xiàn)在執(zhí)行命令makeclear,實(shí)際執(zhí)行的命令是〔A〕:

A.rm–fpr1*.o

B.gcc–c–lprog.oprog.c

C.gcc–c–osubr.osubr.c

D.都執(zhí)行

46、Linu*將存儲設(shè)備和輸入/輸出設(shè)備均看做文件來操作,以下選項(xiàng)〔C〕不是以文件的形式出現(xiàn)。A.目錄

B.軟

C.i節(jié)點(diǎn)表

D.網(wǎng)絡(luò)適配器47、有如下的命令:$ddif=f1of=f2。其中if=f1表示〔A〕

A.以f1作為源文件,代替標(biāo)準(zhǔn)輸入

B.以f1作為目標(biāo)文件,代替標(biāo)準(zhǔn)輸出

C.當(dāng)條件滿足f1的時候,執(zhí)行真正的拷貝

D.拷貝的過程中,不轉(zhuǎn)化文件48.文件之間可以建立兩種關(guān)系:軟和硬,硬的特點(diǎn)是〔B〕A.等同于文件復(fù)制操作

B.類似于文件復(fù)制,但新的文件并不占用文件磁盤存儲空間

C.刪除源文件,將使其他文件失效

D.可以對目錄文件名建立硬49.下面哪一個選項(xiàng)不是linu*系統(tǒng)的進(jìn)程類型〔D〕A.交互進(jìn)程B.批處理進(jìn)程C.守護(hù)進(jìn)程D.就緒進(jìn)程50、下面〔

B

〕特性不符合嵌入式操作系統(tǒng)特點(diǎn)。A、實(shí)時性

B、不可定制

C、微型化

D、易移植

51、下面關(guān)于C語言程序的描述,正確的選項(xiàng)是〔C

〕。

A、總是從第一個定義的函數(shù)開場執(zhí)行

B、要調(diào)用的函數(shù)必須在main()函數(shù)中定義

C、總是從main()函數(shù)開場執(zhí)行D、main()函數(shù)必須放在程序的開場

52、在FTP協(xié)議中,控制連接是由〔

B

〕主動建立的。A、效勞器端

B、客戶端

C、操作系統(tǒng)

D、效勞提供商53、以下表達(dá)中,不符合RISC指令系統(tǒng)特點(diǎn)的〔

B〕。A、指令長度固定,指令種類少

B、尋址方式種類豐富,指令功能盡量增強(qiáng)

C、設(shè)置大量通用存放器,存儲器指令簡單

D、選取使用頻率較高的一些簡單指令54、當(dāng)我們與*遠(yuǎn)程網(wǎng)絡(luò)連接不上時,就需要跟蹤路由查看,以便了解在網(wǎng)絡(luò)的什么位置出現(xiàn)了問題,滿足該目的的命令是〔C

〕。A、ping

B、ifconfig

C、traceroute

D、netstat

55.以下哪種文件系統(tǒng)的寫入是LINU*所不能完全支持的:D

A.FAT

B.UFS

C.JFS

D.NTFS

56.LINU*支持網(wǎng)絡(luò)文件系統(tǒng)NFS,以下哪個命令實(shí)現(xiàn)了將位于機(jī)器上的/opt/sirnfs目錄掛載到本機(jī)/mnt/sirnfs下:A

A.mount-tnfs:/opt/sirnfs/mnt/sirnfs

B.mount-tnfs/mnt/sirnfs:/opt/sirnfs

C.mountnfs–t:/opt/sirnfs/mnt/sirnfs

D.mountnfs–t/mnt/sirnfs:/opt/sirnfs

57、同CISC相比,下面哪一項(xiàng)不屬于RISC處理器的特征_D

A、采用固定長度的指令格式,指令規(guī)整、簡單、根本尋址方式有2~3種。B、減少指令數(shù)和尋址方式,使控制部件簡化,加快執(zhí)行速度。C、數(shù)據(jù)處理指令只對存放器進(jìn)展操作,只有加載/存儲指令可以存儲器,以提高指令的執(zhí)行效率,同時簡化處理器的設(shè)計(jì)。D、RISC處理器都采用哈佛構(gòu)造58、在以下ARM處理器的各種模式中,__D___模式有自己獨(dú)立的R8-R14存放器。A、系統(tǒng)模式(System)、B、終止模式(Abort)

C、中斷模式(IRQ)

D、快中斷模式(FIQ)

59、按照ARM過程調(diào)用標(biāo)準(zhǔn)〔APCS〕,棧指針使用_B___存放器,A、R0

B、R13

C、R14

D、R15

60、在ARM體系構(gòu)造中,_C___存放器作為連接存放器,當(dāng)進(jìn)入子程序時或者處理器響應(yīng)異常的時候,用來保存PC的返回值;_C___存放器作為處理器的程序計(jì)數(shù)器指針。A、R0,R14

B、R13,R15

C、R14,R15

D、R14,R0

61、在ARM體系構(gòu)造中,要從主動用戶模式〔User〕切換到超級用戶模式〔Supervisor〕,應(yīng)采用何種方法?C

A、直接修改CPU狀態(tài)存放器〔CPSR〕對應(yīng)的模式B、先修改程序狀態(tài)備份存放器〔SPSR〕到對應(yīng)的模式,再更新CPU狀態(tài)C、使用軟件中斷指令〔SWI〕D、讓處理器執(zhí)行未定義指令62、下面關(guān)于MMU和Linu*描述錯誤的選項(xiàng)是:C

A、MMU是內(nèi)存管理單元MemoryManagementUnit的縮寫B(tài)、uClinu*可以運(yùn)行在有MMU的處理器上C、Linu*內(nèi)核功能強(qiáng)大,內(nèi)存管理功能豐富,即使在沒有MMU的處理器上,也可以通過軟件實(shí)現(xiàn)地址映射。D、Linu*系統(tǒng)正是利用MMU,才能使得各個進(jìn)程有獨(dú)立的尋址空間63、DNS域名系統(tǒng)主要負(fù)責(zé)主機(jī)名和〔A

〕之間的解析。A、IP地址

B、MAC地址C、網(wǎng)絡(luò)地址

D、主機(jī)別名64、在vi編輯器中的命令模式下,重復(fù)上一次對編輯的文本進(jìn)展的操作,可使用〔

C

〕命令。A、上箭頭

B、下箭頭

C、<.>

D、<*>

65、進(jìn)程有三種狀態(tài):〔

C〕。

A、準(zhǔn)備態(tài)、執(zhí)行態(tài)和退出態(tài)

B、準(zhǔn)確態(tài)、模糊態(tài)和隨機(jī)態(tài)C、運(yùn)行態(tài)、就緒態(tài)和等待態(tài)

D、手工態(tài)、自動態(tài)和自由態(tài)66、以下變量名中有效的shell變量名是〔C〕。A、-1-time

B、_2$3

C、bo_chuang_1

D、2009file

67、文件系統(tǒng)的主要功能是〔A

〕。A、實(shí)現(xiàn)對文件的按名存取

B、實(shí)現(xiàn)虛擬存儲

C、提高外存的讀寫速度

D、用于保存系統(tǒng)文檔68、在ARMLinu*體系中,用來處理外設(shè)中斷的異常模式是__C____

A、軟件中斷〔SWI〕

B、未定義的指令異常C、中斷請求〔IRQ〕

D、快速中斷請求〔FIQ〕69、在Linu*系統(tǒng)中,驅(qū)動程序注冊中斷處理程序的函數(shù)是_B____

A、trap_init

B、request_irq

C、enable_irq

D、register_irq

70、在ARMLinu*系統(tǒng)中,中斷處理程序進(jìn)入C代碼以后,ARM的處于__A__工作模式A、超級用戶〔SVC〕

B、中斷(IRQ)

C、快速中斷〔IRQ〕

D、和進(jìn)入中斷之前的狀態(tài)有關(guān)系71、在ARM體系構(gòu)建的嵌入式系統(tǒng)中,由電平模式觸發(fā)的中斷,其對應(yīng)的中斷標(biāo)準(zhǔn)應(yīng)該在何時被去除?A

A、當(dāng)中斷處理程序完畢以后,才可以去除B、進(jìn)入相應(yīng)的中斷處理程序,即可以去除C、產(chǎn)生IRQ中斷的時候,處理器自動去除D、任何時候都可以去除72、在操作系統(tǒng)中,Spooling技術(shù)是用一類物理設(shè)備模擬另一類物理設(shè)備的技術(shù),實(shí)現(xiàn)這種技術(shù)的功能模塊稱做〔

B

〕。A、可林斯系統(tǒng)

B、斯普林系統(tǒng)C、圖靈機(jī)系統(tǒng)

D、虛擬存儲系統(tǒng)73、通過修改下面文件哪個文件,可以設(shè)定開機(jī)時候自動安裝的文件系統(tǒng)〔C〕A./etc/mta

B./etc/fastboot

C./etc/fstab

D./etc/inetd.conf

74、下面關(guān)于Shell的說法,不正確的選項(xiàng)是:〔D〕A.操作系統(tǒng)的外殼

B.用戶與Linu*內(nèi)核之間的接口程序

C.一個命令語言解釋器

D.一種和C類似的程序語言75、init可執(zhí)行文件通常存放在〔C〕目錄中。A./etc

B./boot

C./sbin

D./root

76、假設(shè)root用戶執(zhí)行"init0〞命令,系統(tǒng)將會〔B〕。A.暫停

B.關(guān)機(jī)

C.重新啟動

D.初始化77、嵌入式系統(tǒng)應(yīng)用軟件一般在宿主機(jī)上開發(fā),在目標(biāo)機(jī)上運(yùn)行,因此需要一個〔

B

〕環(huán)境。A、交互操作系統(tǒng)

B、穿插編譯

C、交互平臺

D、分布式計(jì)算

78、有變量data1定義如下:C

uniondata

{

inti;

charch;

floatf;

}data1;

則變量data1所占的內(nèi)存存儲空間可表示為。A、sizeof(int)

B、sizeof(char)

C、sizeof(float)

D、sizeof(int)+sizeof(char)+sizeof(float)

79、軟件開發(fā)模型給出了軟件開發(fā)活動各階段之間的關(guān)系,〔D

〕不是軟件開發(fā)模型。

A、瀑布模型

B、螺旋模型

C、原型模型

D、程序模型80、實(shí)時操作系統(tǒng)〔RTOS〕內(nèi)核與應(yīng)用程序之間的接口稱為〔

C

〕。A、輸入/輸出接口

B、文件系統(tǒng)

C、API

D、圖形用戶接口81、在操作系統(tǒng)中,除賦初值外,對信號量僅能操作的兩種原語是〔

C

〕。A、存操作、取操作

B、讀操作、寫操作

C、P操作、V操作

D、輸入操作、輸出操作82、在以下ARM處理器的各種模式中,只有__A___模式不可以自由地改變處理器的工作模式。A、用戶模式〔User〕

B、系統(tǒng)模式(System)

C、終止模式(Abort)

D、中斷模式(IRQ)

83、32位體系構(gòu)造的ARM處理器有_B___種不同的處理器工作模式,和__B__個主要用來標(biāo)識CPU的工作狀態(tài)和程序的運(yùn)行狀態(tài)的狀態(tài)存放器。A、7、7

B、7、6

C、6、6

D、6、7

84、Linu*系統(tǒng)中的唯一一塊硬盤是第一個IDE接口的master設(shè)備,該硬盤按順序有3個主分區(qū)和一個擴(kuò)展分區(qū),這個擴(kuò)展分區(qū)又劃分了3個邏輯分區(qū),則該硬盤上的第二個邏輯分區(qū)在Linu*中的設(shè)備名稱是〔D〕A./dev/hda2

B./dev/hda3

C./dev/hda5

D./dev/hda6

85、為了查看Linu*啟動信息,可以用:〔B〕A、cat/etc/lilo.conf

B、dmesg

C、cat/proc/cpuinfo

D、lilo

86、*文件的組外成員的權(quán)限為只寫;所有者有讀寫權(quán)限;組內(nèi)的權(quán)限為只讀,則該文件的權(quán)限為〔B〕A467

B642

C476

D764

87、下面哪個命令行可用來馬上重新啟動正在運(yùn)行的Linu*系統(tǒng)?〔D〕A.

restart--delay=0

B.

reboot

-w

C.

halt

-p

D.

shutdown

-r

now

88、在bash命令中,當(dāng)用〔B〕參數(shù)時,表示bash是交互的。A、-c

B、-i

C、-s

D、-d

89、重定向的符號">>"表示:〔A〕A、輸出追加

B、輸入追加

C、輸出重定向,原來的文件被改寫D、管道90、Linu*文件權(quán)限一共10位長度,分成四段,第一段表示的內(nèi)容是〔A〕A文件類型B文件所有者的權(quán)限C文件所有者所在組的權(quán)限D(zhuǎn)其他用戶的權(quán)限91、〔B〕命令可更改一個文件的權(quán)限設(shè)置?

A.attrib

B.chmod

C.change

D.file

92、你用vi編輯器編寫了一個腳本文件shell.sh,你想將該文件名稱修改為shell2.sh,以下命令〔B〕可以實(shí)現(xiàn)。

A.cpshell.shshell2.sh

B.mvshell.shshell2.sh

C.lsshell.sh>shell2.sh

D.llshell.sh>shell2.sh

93、在使用GCC編譯器的過程中,以下〔B〕選項(xiàng)可用來指定生成的目標(biāo)文件名A.-c

B.-o

C.-S

D.-E

94、假設(shè)當(dāng)前目錄下有文件Makefile,下面是其內(nèi)容:pr1:prog.osubr.o

gcc–opr1prog.osubr.o

prog.o:prog.cprog.h

gcc–c–lprog.oprog.c

subr.o:subr.c

gcc–c–osubr.osubr.c

clear:

rm–fpr1*.o

現(xiàn)在執(zhí)行命令makesubr.o,實(shí)際執(zhí)行的命令是〔C〕:

A.gcc–opr1prog.osubr.o

B.gcc–c–lprog.oprog.c

C.gcc–c–osubr.osubr.c

D.都執(zhí)行95、為了使用生成的目標(biāo)文件能夠用于gdb調(diào)試,在編譯時GCC應(yīng)使用〔C〕選項(xiàng)。A.-c

B.-w

C.-g

D.-o

96、存盤并退出vi的指令是〔D〕。A、q

B、q!

C、w

D、wq

97.以下關(guān)于/etc/fstab文件描述,正確的選項(xiàng)是〔D〕。

A.fstab文件只能描述屬于linu*的文件系統(tǒng)

B.CD_ROM和軟盤必須是自動加載的

C.fstab文件中描述的文件系統(tǒng)不能被卸載

D啟動時按fstab文件描述內(nèi)容加載文件系統(tǒng)98.

ARM嵌入式系統(tǒng)中,PC指向的是正在〔C

〕的指令地址。

A

執(zhí)行

B譯碼

C

取指

D都不是99.

ARM系統(tǒng)處理16-bit數(shù)據(jù)時,對應(yīng)的數(shù)據(jù)類型是〔B〕。

A

Byte

B

Halfword

C

Word

D三者都不是

100.

實(shí)時系統(tǒng)是指(B)

A響應(yīng)快的系統(tǒng)

B時間約束的系統(tǒng)

C單任務(wù)系統(tǒng)

D內(nèi)核小的系統(tǒng)101.下面屬于blob運(yùn)行過程第一階段的是〔C〕

A外圍的硬件初始化〔串口,USB等〕;B根據(jù)用戶選擇,進(jìn)入命令行模塊或啟動kernel。C存放器的初始化D堆棧的初始化答案:C第一階段的代碼在start.s中定義,大小為1KB,它包括從系統(tǒng)上電后在0*00000000地址開場執(zhí)行的局部。這局部代碼運(yùn)行在Flash中,它包括對S3C44B0的一些存放器的初始化和將Blob第二階段代碼從Flash拷貝到SDRAM中。102.以下幾種流行的嵌入式GUI中,沒有采用分層設(shè)計(jì)的一種是:B

A.MiniGUI

B.Qt/Embedded

C.Nano-*Window

D.OpenGUI

103.Qt/Embedded的底層圖形引擎基于一下哪種接口技術(shù):A

A.framebuffer

B.GAL

C.IAL

D.GF*

104.在Linu*使用GCC編譯器時有如下命令:Gcc–gtest.c–otest,其中參數(shù)-g的作用是(D)

A

.生成目標(biāo)文件test.o

B.生成匯編文件test.s

C.進(jìn)展預(yù)編譯

D.包含調(diào)試信息105.LINU*支持網(wǎng)絡(luò)文件系統(tǒng)NFS,以下哪個命令實(shí)現(xiàn)了將位于機(jī)器上的/opt/sirnfs目錄掛載到本機(jī)/mnt/sirnfs下:

A

A.mount-tnfs:/opt/sirnfs/mnt/sirnfs

B.mount-tnfs/mnt/sirnfs:/opt/sirnfs

C.mountnfs–t:/opt/sirnfs/mnt/sirnfs

D.mountnfs–t/mnt/sirnfs:/opt/sirnfs

106、同CISC相比,下面哪一項(xiàng)不屬于RISC處理器的特征___D_____

A、采用固定長度的指令格式,指令規(guī)整、簡單、根本尋址方式有2~3種。B、減少指令數(shù)和尋址方式,使控制部件簡化,加快執(zhí)行速度。C、數(shù)據(jù)處理指令只對存放器進(jìn)展操作,只有加載/存儲指令可以存儲器,以提高指令的執(zhí)行效率,同時簡化處理器的設(shè)計(jì)。D、RISC處理器都采用哈佛構(gòu)造107、32位數(shù)0*12345678用小端格式表示,則在A*D調(diào)試器下觀察數(shù)據(jù)在內(nèi)存中分布的情況是〔B〕

A

12345678

B

78563412

C

21436587

D

87654321

108、RISC是指〔C〕A復(fù)雜指令計(jì)算機(jī)

B并行機(jī)

C精簡指令計(jì)算機(jī)

D多處理器計(jì)算機(jī)109、在ARM體系構(gòu)造中,__C__存放器作為連接存放器,當(dāng)進(jìn)入子程序時或者處理器響應(yīng)異常的時候,用來保存PC的返回值;_C___存放器作為處理器的程序計(jì)數(shù)器指針。A、R0,R14

B、R13,R15

C、R14,R15

D、R14,R0

110、在ARM體系構(gòu)造中,要從主動用戶模式〔User〕切換到超級用戶模式〔Supervisor〕,應(yīng)采用何種方法?C

A、直接修改CPU狀態(tài)存放器〔CPSR〕對應(yīng)的模式B、先修改程序狀態(tài)備份存放器〔SPSR〕到對應(yīng)的模式,再更新CPU狀態(tài)C、使用軟件中斷指令〔SWI〕D、讓處理器執(zhí)行未定義指令111、表達(dá)式A⊕B實(shí)現(xiàn)的功能是〔C〕A邏輯與

B邏輯非

C邏輯異或

D邏輯或112、嵌入式系統(tǒng)的開發(fā)通常是在穿插開發(fā)環(huán)境實(shí)現(xiàn)的,穿插開發(fā)環(huán)境是指(A)

A

在宿主機(jī)上開發(fā),在目標(biāo)機(jī)上運(yùn)行

B在目標(biāo)機(jī)上開發(fā),在宿主機(jī)上運(yùn)行C

在宿主機(jī)上開發(fā),在宿主機(jī)上運(yùn)行

D在目標(biāo)機(jī)上開發(fā),在目標(biāo)機(jī)上運(yùn)行113、在ARM系統(tǒng)構(gòu)造中,MMU映射最小的單元空間是__D__

A、64KB

B、16KB

C、4KB

D、1KB

114、在ARMLinu*啟動的過程中,開啟MMU的時候,如何實(shí)現(xiàn)從實(shí)地址空間到虛擬地址空間的過度?D

A、開啟MMU,在內(nèi)存中創(chuàng)立頁表〔映射內(nèi)核到3G以上的虛擬地址空間〕并繼續(xù)運(yùn)行。B、開啟MMU,在內(nèi)存中創(chuàng)立頁表〔映射內(nèi)核到3G以上的虛擬地址空間〕,跳轉(zhuǎn)到虛擬地址空間繼續(xù)運(yùn)行。C、在內(nèi)存中創(chuàng)立頁表〔映射內(nèi)核到3G以上的虛擬地址空間〕,開啟MMU,跳轉(zhuǎn)到虛擬地址空間繼續(xù)運(yùn)行。D、在內(nèi)存中創(chuàng)立頁表〔映射內(nèi)核到3G以上的虛擬地址空間,同時把內(nèi)核所在的前1MB空間到和其實(shí)地址一樣的虛擬地址空間〕,開啟MMU,跳轉(zhuǎn)到虛擬地址空間繼續(xù)運(yùn)行。115、在ARM體系中,MMU的第一級描述符有___項(xiàng),每個描述符占用____字節(jié)A、1024,32

B、4096,4

C、4096,4

D、1024,32

答案:C〔B和C一樣的,A和D是一樣的〕116、在ARM體系中,下面MMU的一級描述符中,是節(jié)描述符的是_A___

A、0*A0000C0E

B、0*A0000C0F

C、0*00000000

D、0*C0000C01

117、在ARMLinu*體系中,用來處理外設(shè)中斷的異常模式是_C_____

A、軟件中斷〔SWI〕

B、未定義的指令異常C、中斷請求〔IRQ〕

D、快速中斷請求〔FIQ〕118

、指令A(yù)DDR2,R1,R1,LSR#2中,LSR的含義是〔B〕。

A邏輯左移

B

邏輯右移

C算術(shù)右移

D循環(huán)右移119、以下ARM異常中,優(yōu)先級最高的是〔D

〕。

A

Dataabort

B

FIQ

C

IRQ

D

Reset

120、指令LDRR0,[R4]對源操作數(shù)的尋址方式是〔A〕

A

存放器間接尋址

B存放器尋址

C立即數(shù)尋址

D相對尋址121、在Linu*2.4或者2.6內(nèi)核中,和ARM體系構(gòu)造相關(guān)的中斷處理程序的C代碼在源碼樹的__B_文件中A、kernerl/irq.c

B、arch/arm/kernel/irq.c

C、arch/arm/mach/irq.c

D、arch/arm/kernel/entry-armv.S

122、以下關(guān)于init進(jìn)程,描述不正確的選項(xiàng)是:〔A〕A.一個通用進(jìn)程

B.可以產(chǎn)生新的進(jìn)程

C.在*些程序退出的時候能重起它們

D.負(fù)責(zé)在系統(tǒng)啟動的時候運(yùn)行一系列程序和腳本文件123、哈佛構(gòu)造和馮諾依曼構(gòu)造的區(qū)別是(A)

A指令和數(shù)據(jù)分開存儲

B不需要程序計(jì)數(shù)器

C統(tǒng)一編址

D單一數(shù)據(jù)總線124、fstab文件存放在〔A〕目錄中。A./etc

B./boot

C./sbin

D./root

125、Linu*系統(tǒng)運(yùn)行級別5工作在〔D〕狀態(tài)。A.單用戶字符模式

B.多用戶字符模式C.單用戶圖形模式

D.多用戶圖形模式126、下面關(guān)于Shell的說法,不正確的選項(xiàng)是:〔D〕A.操作系統(tǒng)的外殼

B.用戶與Linu*內(nèi)核之間的接口程序

C.一個命令語言解釋器

D.一種和C類似的程序語言127、init啟動進(jìn)程需要讀取〔A〕配置文件:

A./etc/inittab

B./sbin/init

C./etc/sysvinit

D./bin/sh

128、啟動init進(jìn)程前,不需要經(jīng)過〔D〕步驟。A.加載內(nèi)核

B.檢測內(nèi)存C.加載文件系統(tǒng)

D.啟動網(wǎng)絡(luò)支持129、RISC是指〔C〕A復(fù)雜指令計(jì)算機(jī)

B并行機(jī)

C精簡指令計(jì)算機(jī)

D多處理器計(jì)算機(jī)130、波特率9600bps是指數(shù)據(jù)每秒傳輸(B)

A

9600個字節(jié)

B9600個比特

C9600個字

D9600個字符131、ARM9和ARM7的重要區(qū)別是(A)

A

ARM9帶有MMU功能

B

ARM9支持Thumb指令集C

ARM9帶有Cache功能

D

ARM9是哈佛構(gòu)造132、32位體系構(gòu)造的ARM處理器有_B___種不同的處理器工作模式,和___B_個主要用來標(biāo)識CPU的工作狀態(tài)和程序的運(yùn)行狀態(tài)的狀態(tài)存放器。A、7、7

B、7、6

C、6、6

D、6、7

133、在安裝Linu*的過程中的第五步是讓用戶選擇安裝方式,如果用戶希望安裝局部組件〔軟件程序〕,并在選擇好后讓系統(tǒng)自動安裝,應(yīng)該選擇的選項(xiàng)是D。A)full

B)e*pert

C)newbie

D)menu

134、當(dāng)系統(tǒng)工作負(fù)載增加時,CPU的A將占很大比重

A)用戶時間

B)系統(tǒng)時間

C)空閑時間、

D)進(jìn)程時間135、fsck對文件系統(tǒng)的檢查最先是從文件系統(tǒng)的C開場的A)MBR

B)磁盤塊

C)超級塊

D)塊鏈表如果數(shù)據(jù)的存儲格式是大端模式,32bit寬的數(shù)0*12345678在大端模式下的CPU內(nèi)存中的存放〔假設(shè)從地址0*4000開場〕。內(nèi)存地址為0*4001的內(nèi)容是〔A

〕。A、0*34

B、0*56

C、0*23

D、0*78

136、關(guān)于RISC指令系統(tǒng)描述不正確的選項(xiàng)是〔A〕。A、指令條數(shù)多

B、指令長度固定C、指令格式種類少

D、尋址方式種類少137、對ARM7微處理器說法不正確的選項(xiàng)是〔D〕。A、兼容16位的Thumb指令集

B、集成式RISC內(nèi)核C、集成了ICE-RT邏輯

D、哈佛體系構(gòu)造138、在存放器間接尋址方式中,指定存放器中存放的是(

B)。A、操作數(shù)

B、操作數(shù)地址C、轉(zhuǎn)移地址

D、地址偏移量139、Samba效勞器的進(jìn)程由B兩局部組成。

A)named和sendmailB)smbd和nmbd

C)bootp和dhcpd

D)d和squid

140、為保證在啟動效勞器時自動啟動DHCP進(jìn)程,應(yīng)對B文件進(jìn)展編輯。

A)/etc/rc.d/rc.inet2

B)/etc/rc.d/rc.inet1

C)/etc/dhcpd.conf

D)/etc/rc.d/rc.S

141、在配置代理效勞器時,假設(shè)設(shè)置代理效勞器的工作緩存為64MB,配置行應(yīng)為D。

A)cache64MB

B)cache_dirufs/usr/local/squid/cache1000016256

C)

cache_mgr64MB

D)

cache_mem64MB

142、平安管理涉及的問題包括保證網(wǎng)絡(luò)管理工作可靠進(jìn)展的平安問題和保護(hù)網(wǎng)絡(luò)用戶及網(wǎng)絡(luò)管理對象問題。C屬于平安管理的內(nèi)容。

A)配置設(shè)備的工作參數(shù)

B)收集與網(wǎng)絡(luò)性能有關(guān)的數(shù)據(jù)C)控制和維護(hù)權(quán)限

D)監(jiān)測故障143、B命令是在vi編輯器中執(zhí)行存盤退出。

A)q

B)wq

C)q!

D)WQ

144、以下關(guān)于/etc/fstab文件描述,正確的選項(xiàng)是D。

A)

fstab文件只能描述屬于linu*的文件系統(tǒng)

B)

CD_ROM和軟盤必須是自動加載的

C)

fstab文件中描述的文件系統(tǒng)不能被卸載

D)

啟動時按fstab文件描述內(nèi)容加載文件系統(tǒng)145、D設(shè)備是字符設(shè)備。

A)

hdc

B)fd0

C)hda1

D)tty1

146、有如下程序:

#include<stdio.h>

voidmain(){

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

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

printf("%d〞,p[-1]);

}

則,輸出結(jié)果為〔B〕A、該程序不可執(zhí)行,無輸出結(jié)果

B、5

C、1

D、不確定的隨機(jī)值147、終止一個前臺進(jìn)程可能用到的命令和操作是〔B〕。A、kill

B、<ctrl>+c

C、shutdown

D、halt

148、B目錄存放著Linu*的源代碼。

A)

/etc

B)/usr/src

C)/usr

D)

/home

149、關(guān)于文件系統(tǒng)的安裝和卸載,下面描述正確的選項(xiàng)是A。

A)如果光盤未經(jīng)卸載,光驅(qū)是打不開的

B)安裝文件系統(tǒng)的安裝點(diǎn)只能是/mnt下

C)不管光驅(qū)中是否有光盤,系統(tǒng)都可以安裝CD-ROM設(shè)備

D)mount/dev/fd0/floppy此命令中目錄/floppy是自動生成的150、文件e*er1的權(quán)限為rw-r--r--,現(xiàn)要增加所有用戶的執(zhí)行權(quán)限和同組用戶的寫權(quán)限,以下命令正確的選項(xiàng)是A。

A)

chmoda+*g+we*er1

B)

chmod765e*er1

C)

chmodo+*e*er1

D)

chmodg+we*er1

151、有關(guān)歸檔和壓縮命令,下面描述正確的選項(xiàng)是C。

A)

用unpress命令解壓縮由pr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論